diff options
Diffstat (limited to 'ANDROID_3.4.5/arch/arm/mach-pxa')
196 files changed, 0 insertions, 49775 deletions
diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/Kconfig b/ANDROID_3.4.5/arch/arm/mach-pxa/Kconfig deleted file mode 100644 index fe2d1f80..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/Kconfig +++ /dev/null @@ -1,721 +0,0 @@ -if ARCH_PXA - -menu "Intel PXA2xx/PXA3xx Implementations" - -config ARCH_PXA_V7 - bool "ARMv7 (PXA95x) based systems" - -if ARCH_PXA_V7 -comment "Marvell Dev Platforms (sorted by hardware release time)" -config MACH_TAVOREVB3 - bool "PXA95x Development Platform (aka TavorEVB III)" - select CPU_PXA955 - -config MACH_SAARB - bool "PXA955 Handheld Platform (aka SAARB)" - select CPU_PXA955 -endif - -config PXA_V7_MACH_AUTO - def_bool y - depends on ARCH_PXA_V7 - depends on !MACH_SAARB - select MACH_TAVOREVB3 - -if !ARCH_PXA_V7 -comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" - -config ARCH_LUBBOCK - bool "Intel DBPXA250 Development Platform (aka Lubbock)" - select PXA25x - select SA1111 - -config MACH_MAINSTONE - bool "Intel HCDDBBVA0 Development Platform (aka Mainstone)" - select PXA27x - select HAVE_PWM - -config MACH_ZYLONITE - bool - select PXA3xx - select HAVE_PWM - -config MACH_ZYLONITE300 - bool "PXA3xx Development Platform (aka Zylonite) PXA300/310" - select CPU_PXA300 - select CPU_PXA310 - select MACH_ZYLONITE - -config MACH_ZYLONITE320 - bool "PXA3xx Development Platform (aka Zylonite) PXA320" - select CPU_PXA320 - select MACH_ZYLONITE - -config MACH_LITTLETON - bool "PXA3xx Form Factor Platform (aka Littleton)" - select PXA3xx - select CPU_PXA300 - select CPU_PXA310 - -config MACH_TAVOREVB - bool "PXA930 Evaluation Board (aka TavorEVB)" - select PXA3xx - select CPU_PXA930 - -config MACH_SAAR - bool "PXA930 Handheld Platform (aka SAAR)" - select PXA3xx - select CPU_PXA930 - -comment "Third Party Dev Platforms (sorted by vendor name)" - -config ARCH_PXA_IDP - bool "Accelent Xscale IDP" - select PXA25x - -config ARCH_VIPER - bool "Arcom/Eurotech VIPER SBC" - select PXA25x - select ISA - select I2C_GPIO - select HAVE_PWM - select PXA_HAVE_ISA_IRQS - select ARCOM_PCMCIA - -config MACH_ARCOM_ZEUS - bool "Arcom/Eurotech ZEUS SBC" - select PXA27x - select ISA - select PXA_HAVE_ISA_IRQS - select ARCOM_PCMCIA - -config MACH_BALLOON3 - bool "Balloon 3 board" - select PXA27x - select IWMMXT - -config MACH_CSB726 - bool "Enable Cogent CSB726 System On a Module" - select PXA27x - select IWMMXT - help - Say Y here if you intend to run this kernel on a Cogent - CSB726 System On Module. - -config CSB726_CSB701 - bool "Enable support for CSB701 baseboard" - depends on MACH_CSB726 - -config MACH_ARMCORE - bool "CompuLab CM-X255/CM-X270 modules" - select ARCH_HAS_DMA_SET_COHERENT_MASK if PCI - select PXA27x - select IWMMXT - select PXA25x - select MIGHT_HAVE_PCI - select NEED_MACH_IO_H if PCI - -config MACH_EM_X270 - bool "CompuLab EM-x270 platform" - select PXA27x - -config MACH_EXEDA - bool "CompuLab eXeda platform" - select PXA27x - -config MACH_CM_X300 - bool "CompuLab CM-X300 modules" - select PXA3xx - select CPU_PXA300 - select CPU_PXA310 - select HAVE_PWM - -config MACH_CAPC7117 - bool "Embedian CAPC-7117 evaluation kit based on the MXM-8x10 CoM" - select CPU_PXA320 - select PXA3xx - -config ARCH_GUMSTIX - bool "Gumstix XScale 255 boards" - select PXA25x - help - Say Y here if you intend to run this kernel on - Basix, Connex, ws-200ax, ws-400ax systems - -choice - prompt "Gumstix Carrier/Expansion Board" - depends on ARCH_GUMSTIX - -config GUMSTIX_AM200EPD - bool "Enable AM200EPD board support" - -config GUMSTIX_AM300EPD - bool "Enable AM300EPD board support" - -endchoice - -config MACH_INTELMOTE2 - bool "Intel Mote 2 Platform" - select PXA27x - select IWMMXT - -config MACH_STARGATE2 - bool "Intel Stargate 2 Platform" - select PXA27x - select IWMMXT - -config MACH_XCEP - bool "Iskratel Electronics XCEP" - select PXA25x - select MTD - select MTD_PHYSMAP - select MTD_CFI_INTELEXT - select MTD_CFI - select MTD_CHAR - select SMC91X - help - PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash. - Tuned for usage in Libera instruments for particle accelerators. - -config TRIZEPS_PXA - bool "PXA based Keith und Koep Trizeps DIMM-Modules" - -config MACH_TRIZEPS4 - bool "Keith und Koep Trizeps4 DIMM-Module" - depends on TRIZEPS_PXA - select TRIZEPS_PCMCIA - select PXA27x - -config MACH_TRIZEPS4WL - bool "Keith und Koep Trizeps4-WL DIMM-Module" - depends on TRIZEPS_PXA - select TRIZEPS_PCMCIA - select PXA27x - -choice - prompt "Select base board for Trizeps module" - depends on TRIZEPS_PXA - -config MACH_TRIZEPS_CONXS - bool "ConXS Eval Board" - -config MACH_TRIZEPS_UCONXS - bool "uConXS Eval Board" - -config MACH_TRIZEPS_ANY - bool "another Board" - -endchoice - -config ARCOM_PCMCIA - bool - help - Generic option for Arcom Viper/Zeus PCMCIA - -config TRIZEPS_PCMCIA - bool - help - Enable PCMCIA support for Trizeps modules - -config MACH_LOGICPD_PXA270 - bool "LogicPD PXA270 Card Engine Development Platform" - select PXA27x - select HAVE_PWM - -config MACH_PCM027 - bool "Phytec phyCORE-PXA270 CPU module (PCM-027)" - select PXA27x - select IWMMXT - -config MACH_PCM990_BASEBOARD - bool "PHYTEC PCM-990 development board" - select HAVE_PWM - depends on MACH_PCM027 - -choice - prompt "display on pcm990" - depends on MACH_PCM990_BASEBOARD - -config PCM990_DISPLAY_SHARP - bool "sharp lq084v1dg21 stn display" - -config PCM990_DISPLAY_NEC - bool "nec nl6448bc20_18d tft display" - -config PCM990_DISPLAY_NONE - bool "no display" - -endchoice - -config MACH_COLIBRI - bool "Toradex Colibri PXA270" - select PXA27x - -config MACH_COLIBRI_PXA270_INCOME - bool "Income s.r.o. PXA270 SBC" - depends on MACH_COLIBRI - select PXA27x - select HAVE_PWM - -config MACH_COLIBRI300 - bool "Toradex Colibri PXA300/310" - select PXA3xx - select CPU_PXA300 - select CPU_PXA310 - -config MACH_COLIBRI320 - bool "Toradex Colibri PXA320" - select PXA3xx - select CPU_PXA320 - -config MACH_COLIBRI_EVALBOARD - bool "Toradex Colibri Evaluation Carrier Board support" - depends on MACH_COLIBRI || MACH_COLIBRI300 || MACH_COLIBRI320 - -config MACH_VPAC270 - bool "Voipac PXA270" - select PXA27x - select HAVE_PATA_PLATFORM - help - PXA270 based Single Board Computer. - -comment "End-user Products (sorted by vendor name)" - -config MACH_H4700 - bool "HP iPAQ hx4700" - select PXA27x - select IWMMXT - select HAVE_PWM - -config MACH_H5000 - bool "HP iPAQ h5000" - select PXA25x - -config MACH_HIMALAYA - bool "HTC Himalaya Support" - select CPU_PXA26x - -config MACH_MAGICIAN - bool "Enable HTC Magician Support" - select PXA27x - select IWMMXT - select HAVE_PWM - -config MACH_MIOA701 - bool "Mitac Mio A701 Support" - select PXA27x - select IWMMXT - select HAVE_PWM - select GPIO_SYSFS - help - Say Y here if you intend to run this kernel on a - MIO A701. Currently there is only basic support - for this PDA. - -config PXA_EZX - bool "Motorola EZX Platform" - select PXA27x - select IWMMXT - select HAVE_PWM - -config MACH_EZX_A780 - bool "Motorola EZX A780" - default y - depends on PXA_EZX - -config MACH_EZX_E680 - bool "Motorola EZX E680" - default y - depends on PXA_EZX - -config MACH_EZX_A1200 - bool "Motorola EZX A1200" - default y - depends on PXA_EZX - -config MACH_EZX_A910 - bool "Motorola EZX A910" - default y - depends on PXA_EZX - -config MACH_EZX_E6 - bool "Motorola EZX E6" - default y - depends on PXA_EZX - -config MACH_EZX_E2 - bool "Motorola EZX E2" - default y - depends on PXA_EZX - -config MACH_MP900C - bool "Nec Mobilepro 900/c" - select PXA25x - -config ARCH_PXA_PALM - bool "PXA based Palm PDAs" - select HAVE_PWM - -config MACH_PALM27X - bool - -config MACH_PALMTE2 - bool "Palm Tungsten|E2" - default y - depends on ARCH_PXA_PALM - select PXA25x - help - Say Y here if you intend to run this kernel on a Palm Tungsten|E2 - handheld computer. - -config MACH_PALMTC - bool "Palm Tungsten|C" - default y - depends on ARCH_PXA_PALM - select PXA25x - help - Say Y here if you intend to run this kernel on a Palm Tungsten|C - handheld computer. - -config MACH_PALMT5 - bool "Palm Tungsten|T5" - default y - depends on ARCH_PXA_PALM - select PXA27x - select IWMMXT - select MACH_PALM27X - help - Say Y here if you intend to run this kernel on a Palm Tungsten|T5 - handheld computer. - -config MACH_PALMTX - bool "Palm T|X" - default y - depends on ARCH_PXA_PALM - select PXA27x - select IWMMXT - select MACH_PALM27X - help - Say Y here if you intend to run this kernel on a Palm T|X - handheld computer. - -config MACH_PALMZ72 - bool "Palm Zire 72" - default y - depends on ARCH_PXA_PALM - select PXA27x - select IWMMXT - select MACH_PALM27X - help - Say Y here if you intend to run this kernel on Palm Zire 72 - handheld computer. - -config MACH_PALMLD - bool "Palm LifeDrive" - default y - depends on ARCH_PXA_PALM - select PXA27x - select IWMMXT - select MACH_PALM27X - help - Say Y here if you intend to run this kernel on a Palm LifeDrive - handheld computer. - -config PALM_TREO - bool - depends on ARCH_PXA_PALM - -config MACH_CENTRO - bool "Palm Centro 685 (GSM)" - default y - depends on ARCH_PXA_PALM - select MACH_PALM27X - select PXA27x - select IWMMXT - select PALM_TREO - help - Say Y here if you intend to run this kernel on Palm Centro 685 (GSM) - smartphone. - -config MACH_TREO680 - bool "Palm Treo 680" - default y - depends on ARCH_PXA_PALM - select MACH_PALM27X - select PXA27x - select IWMMXT - select PALM_TREO - help - Say Y here if you intend to run this kernel on Palm Treo 680 - smartphone. - -config MACH_RAUMFELD_RC - bool "Raumfeld Controller" - select PXA3xx - select CPU_PXA300 - select POWER_SUPPLY - select HAVE_PWM - -config MACH_RAUMFELD_CONNECTOR - bool "Raumfeld Connector" - select POWER_SUPPLY - select PXA3xx - select CPU_PXA300 - -config MACH_RAUMFELD_SPEAKER - bool "Raumfeld Speaker" - select POWER_SUPPLY - select PXA3xx - select CPU_PXA300 - -config PXA_SHARPSL - bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models" - select SHARP_SCOOP - select SHARP_PARAM - help - Say Y here if you intend to run this kernel on a - Sharp Zaurus SL-5600 (Poodle), SL-C700 (Corgi), - SL-C750 (Shepherd), SL-C760 (Husky), SL-C1000 (Akita), - SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa) - handheld computer. - -config PXA_SHARPSL_DETECT_MACH_ID - bool "Detect machine ID at run-time in the decompressor" - depends on PXA_SHARPSL - help - Say Y here if you want the zImage decompressor to detect - the Zaurus machine ID at run-time. For latest kexec-based - boot loader, this is not necessary. - -config MACH_POODLE - bool "Enable Sharp SL-5600 (Poodle) Support" - depends on PXA_SHARPSL - select PXA25x - select SHARP_LOCOMO - -config MACH_CORGI - bool "Enable Sharp SL-C700 (Corgi) Support" - depends on PXA_SHARPSL - select PXA25x - select PXA_SHARP_C7xx - -config MACH_SHEPHERD - bool "Enable Sharp SL-C750 (Shepherd) Support" - depends on PXA_SHARPSL - select PXA25x - select PXA_SHARP_C7xx - -config MACH_HUSKY - bool "Enable Sharp SL-C760 (Husky) Support" - depends on PXA_SHARPSL - select PXA25x - select PXA_SHARP_C7xx - -config MACH_AKITA - bool "Enable Sharp SL-1000 (Akita) Support" - depends on PXA_SHARPSL - select PXA27x - select PXA_SHARP_Cxx00 - select MACH_SPITZ - select I2C - select I2C_PXA - -config MACH_SPITZ - bool "Enable Sharp Zaurus SL-3000 (Spitz) Support" - depends on PXA_SHARPSL - select PXA27x - select PXA_SHARP_Cxx00 - -config MACH_BORZOI - bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support" - depends on PXA_SHARPSL - select PXA27x - select PXA_SHARP_Cxx00 - -config MACH_TOSA - bool "Enable Sharp SL-6000x (Tosa) Support" - depends on PXA_SHARPSL - select PXA25x - -config TOSA_BT - tristate "Control the state of built-in bluetooth chip on Sharp SL-6000" - depends on MACH_TOSA - select RFKILL - help - This is a simple driver that is able to control - the state of built in bluetooth chip on tosa. - -config TOSA_USE_EXT_KEYCODES - bool "Tosa keyboard: use extended keycodes" - depends on MACH_TOSA - default n - help - Say Y here to enable the tosa keyboard driver to generate extended - (>= 127) keycodes. Be aware, that they can't be correctly interpreted - by either console keyboard driver or by Kdrive keybd driver. - - Say Y only if you know, what you are doing! - -config MACH_ICONTROL - bool "TMT iControl/SafeTCam based on the MXM-8x10 CoM" - select CPU_PXA320 - select PXA3xx - -config ARCH_PXA_ESERIES - bool "PXA based Toshiba e-series PDAs" - select PXA25x - select FB_W100 - -config MACH_E330 - bool "Toshiba e330" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e330 family PDA. - -config MACH_E350 - bool "Toshiba e350" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e350 family PDA. - -config MACH_E740 - bool "Toshiba e740" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e740 family PDA. - -config MACH_E750 - bool "Toshiba e750" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e750 family PDA. - -config MACH_E400 - bool "Toshiba e400" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e400 family PDA. - -config MACH_E800 - bool "Toshiba e800" - default y - depends on ARCH_PXA_ESERIES - help - Say Y here if you intend to run this kernel on a Toshiba - e800 family PDA. - -config MACH_ZIPIT2 - bool "Zipit Z2 Handheld" - select PXA27x - select HAVE_PWM -endif -endmenu - -config PXA25x - bool - select CPU_XSCALE - help - Select code specific to PXA21x/25x/26x variants - -config PXA27x - bool - select CPU_XSCALE - help - Select code specific to PXA27x variants - -config CPU_PXA26x - bool - select PXA25x - help - Select code specific to PXA26x (codename Dalhart) - -config PXA3xx - bool - select CPU_XSC3 - help - Select code specific to PXA3xx variants - -config CPU_PXA300 - bool - select PXA3xx - help - PXA300 (codename Monahans-L) - -config CPU_PXA310 - bool - select CPU_PXA300 - select PXA310_ULPI if USB_ULPI - help - PXA310 (codename Monahans-LV) - -config CPU_PXA320 - bool - select PXA3xx - help - PXA320 (codename Monahans-P) - -config CPU_PXA930 - bool - select PXA3xx - help - PXA930 (codename Tavor-P) - -config CPU_PXA935 - bool - select CPU_PXA930 - help - PXA935 (codename Tavor-P65) - -config PXA95x - bool - select CPU_PJ4 - help - Select code specific to PXA95x variants - -config CPU_PXA955 - bool - select PXA95x - help - PXA950 (codename MG1) - -config PXA_SHARP_C7xx - bool - select SHARPSL_PM - help - Enable support for all Sharp C7xx models - -config PXA_SHARP_Cxx00 - bool - select SHARPSL_PM - help - Enable common support for Sharp Cxx00 models - -config SHARPSL_PM - bool - select APM_EMULATION - select SHARPSL_PM_MAX1111 - -config SHARPSL_PM_MAX1111 - bool - select HWMON - select SPI - select SPI_MASTER - select SENSORS_MAX1111 - -config PXA_HAVE_ISA_IRQS - bool - -config PXA310_ULPI - bool - -endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile b/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile deleted file mode 100644 index be0f7df8..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# -# Makefile for the linux kernel. -# - -# Common support (must be linked before board specific support) -obj-y += clock.o devices.o generic.o irq.o \ - time.o reset.o -obj-$(CONFIG_PM) += pm.o sleep.o standby.o - -ifeq ($(CONFIG_CPU_FREQ),y) -obj-$(CONFIG_PXA25x) += cpufreq-pxa2xx.o -obj-$(CONFIG_PXA27x) += cpufreq-pxa2xx.o -obj-$(CONFIG_PXA3xx) += cpufreq-pxa3xx.o -endif - -# Generic drivers that other drivers may depend upon - -# SoC-specific code -obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa25x.o -obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa27x.o -obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o smemc.o pxa3xx-ulpi.o -obj-$(CONFIG_PXA95x) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o pxa95x.o smemc.o -obj-$(CONFIG_CPU_PXA300) += pxa300.o -obj-$(CONFIG_CPU_PXA320) += pxa320.o -obj-$(CONFIG_CPU_PXA930) += pxa930.o - -# NOTE: keep the order of boards in accordance to their order in Kconfig - -# Intel/Marvell Dev Platforms -obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o -obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o -obj-$(CONFIG_MACH_ZYLONITE300) += zylonite.o zylonite_pxa300.o -obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o -obj-$(CONFIG_MACH_LITTLETON) += littleton.o -obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o -obj-$(CONFIG_MACH_TAVOREVB3) += tavorevb3.o -obj-$(CONFIG_MACH_SAAR) += saar.o -obj-$(CONFIG_MACH_SAARB) += saarb.o - -# 3rd Party Dev Platforms -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_MACH_CSB726) += csb726.o -obj-$(CONFIG_CSB726_CSB701) += csb701.o -obj-$(CONFIG_MACH_ARMCORE) += cm-x2xx.o cm-x255.o cm-x270.o -ifeq ($(CONFIG_PCI),y) -obj-$(CONFIG_MACH_ARMCORE) += cm-x2xx-pci.o -endif -obj-$(CONFIG_MACH_EM_X270) += em-x270.o -obj-$(CONFIG_MACH_CM_X300) += cm-x300.o -obj-$(CONFIG_MACH_CAPC7117) += capc7117.o mxm8x10.o -obj-$(CONFIG_ARCH_GUMSTIX) += gumstix.o -obj-$(CONFIG_GUMSTIX_AM200EPD) += am200epd.o -obj-$(CONFIG_GUMSTIX_AM300EPD) += am300epd.o -obj-$(CONFIG_MACH_INTELMOTE2) += stargate2.o -obj-$(CONFIG_MACH_STARGATE2) += stargate2.o -obj-$(CONFIG_MACH_XCEP) += xcep.o -obj-$(CONFIG_MACH_TRIZEPS4) += trizeps4.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_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 - -# End-user Products -obj-$(CONFIG_MACH_H4700) += hx4700.o -obj-$(CONFIG_MACH_H5000) += h5000.o -obj-$(CONFIG_MACH_HIMALAYA) += himalaya.o -obj-$(CONFIG_MACH_MAGICIAN) += magician.o -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_PALM27X) += palm27x.o -obj-$(CONFIG_MACH_PALMT5) += palmt5.o -obj-$(CONFIG_MACH_PALMTX) += palmtx.o -obj-$(CONFIG_MACH_PALMZ72) += palmz72.o -obj-$(CONFIG_MACH_PALMLD) += palmld.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 -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_RAUMFELD_RC) += raumfeld.o -obj-$(CONFIG_MACH_RAUMFELD_CONNECTOR) += raumfeld.o -obj-$(CONFIG_MACH_RAUMFELD_SPEAKER) += raumfeld.o -obj-$(CONFIG_MACH_ZIPIT2) += z2.o - -# Support for blinky lights -led-y := leds.o -led-$(CONFIG_ARCH_LUBBOCK) += leds-lubbock.o -led-$(CONFIG_MACH_MAINSTONE) += leds-mainstone.o -led-$(CONFIG_ARCH_PXA_IDP) += leds-idp.o - -obj-$(CONFIG_LEDS) += $(led-y) - -obj-$(CONFIG_TOSA_BT) += tosa-bt.o diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile.boot b/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile.boot deleted file mode 100644 index 2c1ae92f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/Makefile.boot +++ /dev/null @@ -1,2 +0,0 @@ - zreladdr-y += 0xa0008000 - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/am200epd.c b/ANDROID_3.4.5/arch/arm/mach-pxa/am200epd.c deleted file mode 100644 index ccdac4b6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/am200epd.c +++ /dev/null @@ -1,387 +0,0 @@ -/* - * am200epd.c -- Platform device for AM200 EPD kit - * - * Copyright (C) 2008, Jaya Kumar - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file COPYING in the main directory of this archive for - * more details. - * - * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven. - * - * This work was made possible by help and equipment support from E-Ink - * Corporation. http://support.eink.com/community - * - * This driver is written to be used with the Metronome display controller. - * on the AM200 EPD prototype kit/development kit with an E-Ink 800x600 - * Vizplex EPD on a Gumstix board using the Lyre interface board. - * - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/errno.h> -#include <linux/string.h> -#include <linux/delay.h> -#include <linux/interrupt.h> -#include <linux/fb.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/gpio.h> - -#include <mach/pxa25x.h> -#include <mach/gumstix.h> -#include <mach/pxafb.h> - -#include "generic.h" - -#include <video/metronomefb.h> - -static unsigned int panel_type = 6; -static struct platform_device *am200_device; -static struct metronome_board am200_board; - -static struct pxafb_mode_info am200_fb_mode_9inch7 = { - .pixclock = 40000, - .xres = 1200, - .yres = 842, - .bpp = 16, - .hsync_len = 2, - .left_margin = 2, - .right_margin = 2, - .vsync_len = 1, - .upper_margin = 2, - .lower_margin = 25, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mode_info am200_fb_mode_8inch = { - .pixclock = 40000, - .xres = 1088, - .yres = 791, - .bpp = 16, - .hsync_len = 28, - .left_margin = 8, - .right_margin = 30, - .vsync_len = 8, - .upper_margin = 10, - .lower_margin = 8, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mode_info am200_fb_mode_6inch = { - .pixclock = 40189, - .xres = 832, - .yres = 622, - .bpp = 16, - .hsync_len = 28, - .left_margin = 34, - .right_margin = 34, - .vsync_len = 25, - .upper_margin = 0, - .lower_margin = 2, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info am200_fb_info = { - .modes = &am200_fb_mode_6inch, - .num_modes = 1, - .lcd_conn = LCD_TYPE_COLOR_TFT | LCD_PCLK_EDGE_FALL | - LCD_AC_BIAS_FREQ(24), -}; - -/* register offsets for gpio control */ -#define LED_GPIO_PIN 51 -#define STDBY_GPIO_PIN 48 -#define RST_GPIO_PIN 49 -#define RDY_GPIO_PIN 32 -#define ERR_GPIO_PIN 17 -#define PCBPWR_GPIO_PIN 16 -static int gpios[] = { LED_GPIO_PIN , STDBY_GPIO_PIN , RST_GPIO_PIN, - RDY_GPIO_PIN, ERR_GPIO_PIN, PCBPWR_GPIO_PIN }; -static char *gpio_names[] = { "LED" , "STDBY" , "RST", "RDY", "ERR", "PCBPWR" }; - -static int am200_init_gpio_regs(struct metronomefb_par *par) -{ - int i; - int err; - - for (i = 0; i < ARRAY_SIZE(gpios); i++) { - err = gpio_request(gpios[i], gpio_names[i]); - if (err) { - dev_err(&am200_device->dev, "failed requesting " - "gpio %s, err=%d\n", gpio_names[i], err); - goto err_req_gpio; - } - } - - gpio_direction_output(LED_GPIO_PIN, 0); - gpio_direction_output(STDBY_GPIO_PIN, 0); - gpio_direction_output(RST_GPIO_PIN, 0); - - gpio_direction_input(RDY_GPIO_PIN); - gpio_direction_input(ERR_GPIO_PIN); - - gpio_direction_output(PCBPWR_GPIO_PIN, 0); - - return 0; - -err_req_gpio: - while (--i >= 0) - gpio_free(gpios[i]); - - return err; -} - -static void am200_cleanup(struct metronomefb_par *par) -{ - int i; - - free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par); - - for (i = 0; i < ARRAY_SIZE(gpios); i++) - gpio_free(gpios[i]); -} - -static int am200_share_video_mem(struct fb_info *info) -{ - /* rough check if this is our desired fb and not something else */ - if ((info->var.xres != am200_fb_info.modes->xres) - || (info->var.yres != am200_fb_info.modes->yres)) - return 0; - - /* we've now been notified that we have our new fb */ - am200_board.metromem = info->screen_base; - am200_board.host_fbinfo = info; - - /* try to refcount host drv since we are the consumer after this */ - if (!try_module_get(info->fbops->owner)) - return -ENODEV; - - return 0; -} - -static int am200_unshare_video_mem(struct fb_info *info) -{ - dev_dbg(&am200_device->dev, "ENTER %s\n", __func__); - - if (info != am200_board.host_fbinfo) - return 0; - - module_put(am200_board.host_fbinfo->fbops->owner); - return 0; -} - -static int am200_fb_notifier_callback(struct notifier_block *self, - unsigned long event, void *data) -{ - struct fb_event *evdata = data; - struct fb_info *info = evdata->info; - - dev_dbg(&am200_device->dev, "ENTER %s\n", __func__); - - if (event == FB_EVENT_FB_REGISTERED) - return am200_share_video_mem(info); - else if (event == FB_EVENT_FB_UNREGISTERED) - return am200_unshare_video_mem(info); - - return 0; -} - -static struct notifier_block am200_fb_notif = { - .notifier_call = am200_fb_notifier_callback, -}; - -/* this gets called as part of our init. these steps must be done now so - * that we can use pxa_set_fb_info */ -static void __init am200_presetup_fb(void) -{ - int fw; - int fh; - int padding_size; - int totalsize; - - switch (panel_type) { - case 6: - am200_fb_info.modes = &am200_fb_mode_6inch; - break; - case 8: - am200_fb_info.modes = &am200_fb_mode_8inch; - break; - case 97: - am200_fb_info.modes = &am200_fb_mode_9inch7; - break; - default: - dev_err(&am200_device->dev, "invalid panel_type selection," - " setting to 6\n"); - am200_fb_info.modes = &am200_fb_mode_6inch; - break; - } - - /* the frame buffer is divided as follows: - command | CRC | padding - 16kb waveform data | CRC | padding - image data | CRC - */ - - fw = am200_fb_info.modes->xres; - fh = am200_fb_info.modes->yres; - - /* waveform must be 16k + 2 for checksum */ - am200_board.wfm_size = roundup(16*1024 + 2, fw); - - padding_size = PAGE_SIZE + (4 * fw); - - /* total is 1 cmd , 1 wfm, padding and image */ - totalsize = fw + am200_board.wfm_size + padding_size + (fw*fh); - - /* save this off because we're manipulating fw after this and - * we'll need it when we're ready to setup the framebuffer */ - am200_board.fw = fw; - am200_board.fh = fh; - - /* the reason we do this adjustment is because we want to acquire - * more framebuffer memory without imposing custom awareness on the - * underlying pxafb driver */ - am200_fb_info.modes->yres = DIV_ROUND_UP(totalsize, fw); - - /* we divide since we told the LCD controller we're 16bpp */ - am200_fb_info.modes->xres /= 2; - - pxa_set_fb_info(NULL, &am200_fb_info); - -} - -/* this gets called by metronomefb as part of its init, in our case, we - * have already completed initial framebuffer init in presetup_fb so we - * can just setup the fb access pointers */ -static int am200_setup_fb(struct metronomefb_par *par) -{ - int fw; - int fh; - - fw = am200_board.fw; - fh = am200_board.fh; - - /* metromem was set up by the notifier in share_video_mem so now - * we can use its value to calculate the other entries */ - par->metromem_cmd = (struct metromem_cmd *) am200_board.metromem; - par->metromem_wfm = am200_board.metromem + fw; - par->metromem_img = par->metromem_wfm + am200_board.wfm_size; - par->metromem_img_csum = (u16 *) (par->metromem_img + (fw * fh)); - par->metromem_dma = am200_board.host_fbinfo->fix.smem_start; - - return 0; -} - -static int am200_get_panel_type(void) -{ - return panel_type; -} - -static irqreturn_t am200_handle_irq(int irq, void *dev_id) -{ - struct metronomefb_par *par = dev_id; - - wake_up_interruptible(&par->waitq); - return IRQ_HANDLED; -} - -static int am200_setup_irq(struct fb_info *info) -{ - int ret; - - ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am200_handle_irq, - IRQF_DISABLED|IRQF_TRIGGER_FALLING, - "AM200", info->par); - if (ret) - dev_err(&am200_device->dev, "request_irq failed: %d\n", ret); - - return ret; -} - -static void am200_set_rst(struct metronomefb_par *par, int state) -{ - gpio_set_value(RST_GPIO_PIN, state); -} - -static void am200_set_stdby(struct metronomefb_par *par, int state) -{ - gpio_set_value(STDBY_GPIO_PIN, state); -} - -static int am200_wait_event(struct metronomefb_par *par) -{ - return wait_event_timeout(par->waitq, gpio_get_value(RDY_GPIO_PIN), HZ); -} - -static int am200_wait_event_intr(struct metronomefb_par *par) -{ - return wait_event_interruptible_timeout(par->waitq, - gpio_get_value(RDY_GPIO_PIN), HZ); -} - -static struct metronome_board am200_board = { - .owner = THIS_MODULE, - .setup_irq = am200_setup_irq, - .setup_io = am200_init_gpio_regs, - .setup_fb = am200_setup_fb, - .set_rst = am200_set_rst, - .set_stdby = am200_set_stdby, - .met_wait_event = am200_wait_event, - .met_wait_event_intr = am200_wait_event_intr, - .get_panel_type = am200_get_panel_type, - .cleanup = am200_cleanup, -}; - -static unsigned long am200_pin_config[] __initdata = { - GPIO51_GPIO, - GPIO49_GPIO, - GPIO48_GPIO, - GPIO32_GPIO, - GPIO17_GPIO, - GPIO16_GPIO, -}; - -int __init am200_init(void) -{ - int ret; - - /* before anything else, we request notification for any fb - * creation events */ - fb_register_client(&am200_fb_notif); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config)); - - /* request our platform independent driver */ - request_module("metronomefb"); - - am200_device = platform_device_alloc("metronomefb", -1); - if (!am200_device) - return -ENOMEM; - - /* the am200_board that will be seen by metronomefb is a copy */ - platform_device_add_data(am200_device, &am200_board, - sizeof(am200_board)); - - /* this _add binds metronomefb to am200. metronomefb refcounts am200 */ - ret = platform_device_add(am200_device); - - if (ret) { - platform_device_put(am200_device); - fb_unregister_client(&am200_fb_notif); - return ret; - } - - am200_presetup_fb(); - - return 0; -} - -module_param(panel_type, uint, 0); -MODULE_PARM_DESC(panel_type, "Select the panel type: 6, 8, 97"); - -MODULE_DESCRIPTION("board driver for am200 metronome epd kit"); -MODULE_AUTHOR("Jaya Kumar"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/am300epd.c b/ANDROID_3.4.5/arch/arm/mach-pxa/am300epd.c deleted file mode 100644 index 76c4b949..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/am300epd.c +++ /dev/null @@ -1,296 +0,0 @@ -/* - * am300epd.c -- Platform device for AM300 EPD kit - * - * Copyright (C) 2008, Jaya Kumar - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file COPYING in the main directory of this archive for - * more details. - * - * This work was made possible by help and equipment support from E-Ink - * Corporation. http://support.eink.com/community - * - * This driver is written to be used with the Broadsheet display controller. - * on the AM300 EPD prototype kit/development kit with an E-Ink 800x600 - * Vizplex EPD on a Gumstix board using the Broadsheet interface board. - * - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/errno.h> -#include <linux/string.h> -#include <linux/delay.h> -#include <linux/interrupt.h> -#include <linux/fb.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/gpio.h> - -#include <mach/gumstix.h> -#include <mach/mfp-pxa25x.h> -#include <mach/pxafb.h> - -#include "generic.h" - -#include <video/broadsheetfb.h> - -static unsigned int panel_type = 6; -static struct platform_device *am300_device; -static struct broadsheet_board am300_board; - -static unsigned long am300_pin_config[] __initdata = { - GPIO16_GPIO, - GPIO17_GPIO, - GPIO32_GPIO, - GPIO48_GPIO, - GPIO49_GPIO, - GPIO51_GPIO, - GPIO74_GPIO, - GPIO75_GPIO, - GPIO76_GPIO, - GPIO77_GPIO, - - /* this is the 16-bit hdb bus 58-73 */ - GPIO58_GPIO, - GPIO59_GPIO, - GPIO60_GPIO, - GPIO61_GPIO, - - GPIO62_GPIO, - GPIO63_GPIO, - GPIO64_GPIO, - GPIO65_GPIO, - - GPIO66_GPIO, - GPIO67_GPIO, - GPIO68_GPIO, - GPIO69_GPIO, - - GPIO70_GPIO, - GPIO71_GPIO, - GPIO72_GPIO, - GPIO73_GPIO, -}; - -/* register offsets for gpio control */ -#define PWR_GPIO_PIN 16 -#define CFG_GPIO_PIN 17 -#define RDY_GPIO_PIN 32 -#define DC_GPIO_PIN 48 -#define RST_GPIO_PIN 49 -#define LED_GPIO_PIN 51 -#define RD_GPIO_PIN 74 -#define WR_GPIO_PIN 75 -#define CS_GPIO_PIN 76 -#define IRQ_GPIO_PIN 77 - -/* hdb bus */ -#define DB0_GPIO_PIN 58 -#define DB15_GPIO_PIN 73 - -static int gpios[] = { PWR_GPIO_PIN, CFG_GPIO_PIN, RDY_GPIO_PIN, DC_GPIO_PIN, - RST_GPIO_PIN, RD_GPIO_PIN, WR_GPIO_PIN, CS_GPIO_PIN, - IRQ_GPIO_PIN, LED_GPIO_PIN }; -static char *gpio_names[] = { "PWR", "CFG", "RDY", "DC", "RST", "RD", "WR", - "CS", "IRQ", "LED" }; - -static int am300_wait_event(struct broadsheetfb_par *par) -{ - /* todo: improve err recovery */ - wait_event(par->waitq, gpio_get_value(RDY_GPIO_PIN)); - return 0; -} - -static int am300_init_gpio_regs(struct broadsheetfb_par *par) -{ - int i; - int err; - char dbname[8]; - - for (i = 0; i < ARRAY_SIZE(gpios); i++) { - err = gpio_request(gpios[i], gpio_names[i]); - if (err) { - dev_err(&am300_device->dev, "failed requesting " - "gpio %s, err=%d\n", gpio_names[i], err); - goto err_req_gpio; - } - } - - /* we also need to take care of the hdb bus */ - for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) { - sprintf(dbname, "DB%d", i); - err = gpio_request(i, dbname); - if (err) { - dev_err(&am300_device->dev, "failed requesting " - "gpio %d, err=%d\n", i, err); - goto err_req_gpio2; - } - } - - /* setup the outputs and init values */ - gpio_direction_output(PWR_GPIO_PIN, 0); - gpio_direction_output(CFG_GPIO_PIN, 1); - gpio_direction_output(DC_GPIO_PIN, 0); - gpio_direction_output(RD_GPIO_PIN, 1); - gpio_direction_output(WR_GPIO_PIN, 1); - gpio_direction_output(CS_GPIO_PIN, 1); - gpio_direction_output(RST_GPIO_PIN, 0); - - /* setup the inputs */ - gpio_direction_input(RDY_GPIO_PIN); - gpio_direction_input(IRQ_GPIO_PIN); - - /* start the hdb bus as an input */ - for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) - gpio_direction_output(i, 0); - - /* go into command mode */ - gpio_set_value(CFG_GPIO_PIN, 1); - gpio_set_value(RST_GPIO_PIN, 0); - msleep(10); - gpio_set_value(RST_GPIO_PIN, 1); - msleep(10); - am300_wait_event(par); - - return 0; - -err_req_gpio2: - while (--i >= DB0_GPIO_PIN) - gpio_free(i); - i = ARRAY_SIZE(gpios); -err_req_gpio: - while (--i >= 0) - gpio_free(gpios[i]); - - return err; -} - -static int am300_init_board(struct broadsheetfb_par *par) -{ - return am300_init_gpio_regs(par); -} - -static void am300_cleanup(struct broadsheetfb_par *par) -{ - int i; - - free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par); - - for (i = 0; i < ARRAY_SIZE(gpios); i++) - gpio_free(gpios[i]); - - for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) - gpio_free(i); - -} - -static u16 am300_get_hdb(struct broadsheetfb_par *par) -{ - u16 res = 0; - int i; - - for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++) - res |= (gpio_get_value(DB0_GPIO_PIN + i)) ? (1 << i) : 0; - - return res; -} - -static void am300_set_hdb(struct broadsheetfb_par *par, u16 data) -{ - int i; - - for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++) - gpio_set_value(DB0_GPIO_PIN + i, (data >> i) & 0x01); -} - - -static void am300_set_ctl(struct broadsheetfb_par *par, unsigned char bit, - u8 state) -{ - switch (bit) { - case BS_CS: - gpio_set_value(CS_GPIO_PIN, state); - break; - case BS_DC: - gpio_set_value(DC_GPIO_PIN, state); - break; - case BS_WR: - gpio_set_value(WR_GPIO_PIN, state); - break; - } -} - -static int am300_get_panel_type(void) -{ - return panel_type; -} - -static irqreturn_t am300_handle_irq(int irq, void *dev_id) -{ - struct broadsheetfb_par *par = dev_id; - - wake_up(&par->waitq); - return IRQ_HANDLED; -} - -static int am300_setup_irq(struct fb_info *info) -{ - int ret; - struct broadsheetfb_par *par = info->par; - - ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am300_handle_irq, - IRQF_DISABLED|IRQF_TRIGGER_RISING, - "AM300", par); - if (ret) - dev_err(&am300_device->dev, "request_irq failed: %d\n", ret); - - return ret; -} - -static struct broadsheet_board am300_board = { - .owner = THIS_MODULE, - .init = am300_init_board, - .cleanup = am300_cleanup, - .set_hdb = am300_set_hdb, - .get_hdb = am300_get_hdb, - .set_ctl = am300_set_ctl, - .wait_for_rdy = am300_wait_event, - .get_panel_type = am300_get_panel_type, - .setup_irq = am300_setup_irq, -}; - -int __init am300_init(void) -{ - int ret; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(am300_pin_config)); - - /* request our platform independent driver */ - request_module("broadsheetfb"); - - am300_device = platform_device_alloc("broadsheetfb", -1); - if (!am300_device) - return -ENOMEM; - - /* the am300_board that will be seen by broadsheetfb is a copy */ - platform_device_add_data(am300_device, &am300_board, - sizeof(am300_board)); - - ret = platform_device_add(am300_device); - - if (ret) { - platform_device_put(am300_device); - return ret; - } - - return 0; -} - -module_param(panel_type, uint, 0); -MODULE_PARM_DESC(panel_type, "Select the panel type: 37, 6, 97"); - -MODULE_DESCRIPTION("board driver for am300 epd kit"); -MODULE_AUTHOR("Jaya Kumar"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/balloon3.c b/ANDROID_3.4.5/arch/arm/mach-pxa/balloon3.c deleted file mode 100644 index c35456f0..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/balloon3.c +++ /dev/null @@ -1,834 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/balloon3.c - * - * Support for Balloonboard.org Balloon3 board. - * - * Author: Nick Bane, Wookey, Jonathan McDowell - * Created: June, 2006 - * Copyright: Toby Churchill Ltd - * Derived from mainstone.c, by Nico Pitre - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/export.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/sched.h> -#include <linux/bitops.h> -#include <linux/fb.h> -#include <linux/gpio.h> -#include <linux/ioport.h> -#include <linux/ucb1400.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/types.h> -#include <linux/i2c/pcf857x.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/physmap.h> -#include <linux/regulator/max1586.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa27x.h> -#include <mach/balloon3.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/pxa27x-udc.h> -#include <mach/irda.h> -#include <mach/ohci.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long balloon3_pin_config[] __initdata = { - /* Select BTUART 'COM1/ttyS0' as IO option for pins 42/43/44/45 */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* Reset, configured as GPIO wakeup source */ - GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, -}; - -/****************************************************************************** - * Compatibility: Parameter parsing - ******************************************************************************/ -static unsigned long balloon3_irq_enabled; - -static unsigned long balloon3_features_present = - (1 << BALLOON3_FEATURE_OHCI) | (1 << BALLOON3_FEATURE_CF) | - (1 << BALLOON3_FEATURE_AUDIO) | - (1 << BALLOON3_FEATURE_TOPPOLY); - -int balloon3_has(enum balloon3_features feature) -{ - return (balloon3_features_present & (1 << feature)) ? 1 : 0; -} -EXPORT_SYMBOL_GPL(balloon3_has); - -int __init parse_balloon3_features(char *arg) -{ - if (!arg) - return 0; - - return strict_strtoul(arg, 0, &balloon3_features_present); -} -early_param("balloon3_features", parse_balloon3_features); - -/****************************************************************************** - * Compact Flash slot - ******************************************************************************/ -#if defined(CONFIG_PCMCIA_PXA2XX) || defined(CONFIG_PCMCIA_PXA2XX_MODULE) -static unsigned long balloon3_cf_pin_config[] __initdata = { - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO79_PSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, -}; - -static void __init balloon3_cf_init(void) -{ - if (!balloon3_has(BALLOON3_FEATURE_CF)) - return; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_cf_pin_config)); -} -#else -static inline void balloon3_cf_init(void) {} -#endif - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition balloon3_nor_partitions[] = { - { - .name = "Flash", - .offset = 0x00000000, - .size = MTDPART_SIZ_FULL, - } -}; - -static struct physmap_flash_data balloon3_flash_data[] = { - { - .width = 2, /* bankwidth in bytes */ - .parts = balloon3_nor_partitions, - .nr_parts = ARRAY_SIZE(balloon3_nor_partitions) - } -}; - -static struct resource balloon3_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device balloon3_flash = { - .name = "physmap-flash", - .id = 0, - .resource = &balloon3_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = balloon3_flash_data, - }, -}; -static void __init balloon3_nor_init(void) -{ - platform_device_register(&balloon3_flash); -} -#else -static inline void balloon3_nor_init(void) {} -#endif - -/****************************************************************************** - * Audio and Touchscreen - ******************************************************************************/ -#if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ - defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) -static unsigned long balloon3_ac97_pin_config[] __initdata = { - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO113_AC97_nRESET, - GPIO95_GPIO, -}; - -static struct ucb1400_pdata vpac270_ucb1400_pdata = { - .irq = PXA_GPIO_TO_IRQ(BALLOON3_GPIO_CODEC_IRQ), -}; - - -static struct platform_device balloon3_ucb1400_device = { - .name = "ucb1400_core", - .id = -1, - .dev = { - .platform_data = &vpac270_ucb1400_pdata, - }, -}; - -static void __init balloon3_ts_init(void) -{ - if (!balloon3_has(BALLOON3_FEATURE_AUDIO)) - return; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_ac97_pin_config)); - pxa_set_ac97_info(NULL); - platform_device_register(&balloon3_ucb1400_device); -} -#else -static inline void balloon3_ts_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static unsigned long balloon3_lcd_pin_config[] __initdata = { - GPIOxx_LCD_TFT_16BPP, - GPIO99_GPIO, -}; - -static struct pxafb_mode_info balloon3_lcd_modes[] = { - { - .pixclock = 38000, - .xres = 480, - .yres = 640, - .bpp = 16, - .hsync_len = 8, - .left_margin = 8, - .right_margin = 8, - .vsync_len = 2, - .upper_margin = 4, - .lower_margin = 5, - .sync = 0, - }, -}; - -static struct pxafb_mach_info balloon3_lcd_screen = { - .modes = balloon3_lcd_modes, - .num_modes = ARRAY_SIZE(balloon3_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static void balloon3_backlight_power(int on) -{ - gpio_set_value(BALLOON3_GPIO_RUN_BACKLIGHT, on); -} - -static void __init balloon3_lcd_init(void) -{ - int ret; - - if (!balloon3_has(BALLOON3_FEATURE_TOPPOLY)) - return; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_lcd_pin_config)); - - ret = gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT, "BKL-ON"); - if (ret) { - pr_err("Requesting BKL-ON GPIO failed!\n"); - goto err; - } - - ret = gpio_direction_output(BALLOON3_GPIO_RUN_BACKLIGHT, 1); - if (ret) { - pr_err("Setting BKL-ON GPIO direction failed!\n"); - goto err2; - } - - balloon3_lcd_screen.pxafb_backlight_power = balloon3_backlight_power; - pxa_set_fb_info(NULL, &balloon3_lcd_screen); - return; - -err2: - gpio_free(BALLOON3_GPIO_RUN_BACKLIGHT); -err: - return; -} -#else -static inline void balloon3_lcd_init(void) {} -#endif - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static unsigned long balloon3_mmc_pin_config[] __initdata = { - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, -}; - -static struct pxamci_platform_data balloon3_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, - .detect_delay_ms = 200, -}; - -static void __init balloon3_mmc_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_mmc_pin_config)); - pxa_set_mci_info(&balloon3_mci_platform_data); -} -#else -static inline void balloon3_mmc_init(void) {} -#endif - -/****************************************************************************** - * USB Gadget - ******************************************************************************/ -#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) -static void balloon3_udc_command(int cmd) -{ - if (cmd == PXA2XX_UDC_CMD_CONNECT) - UP2OCR |= UP2OCR_DPPUE | UP2OCR_DPPUBE; - else if (cmd == PXA2XX_UDC_CMD_DISCONNECT) - UP2OCR &= ~UP2OCR_DPPUE; -} - -static int balloon3_udc_is_connected(void) -{ - return 1; -} - -static struct pxa2xx_udc_mach_info balloon3_udc_info __initdata = { - .udc_command = balloon3_udc_command, - .udc_is_connected = balloon3_udc_is_connected, - .gpio_pullup = -1, -}; - -static void __init balloon3_udc_init(void) -{ - pxa_set_udc_info(&balloon3_udc_info); - platform_device_register(&balloon3_gpio_vbus); -} -#else -static inline void balloon3_udc_init(void) {} -#endif - -/****************************************************************************** - * IrDA - ******************************************************************************/ -#if defined(CONFIG_IRDA) || defined(CONFIG_IRDA_MODULE) -static struct pxaficp_platform_data balloon3_ficp_platform_data = { - .transceiver_cap = IR_FIRMODE | IR_SIRMODE | IR_OFF, -}; - -static void __init balloon3_irda_init(void) -{ - pxa_set_ficp_info(&balloon3_ficp_platform_data); -} -#else -static inline void balloon3_irda_init(void) {} -#endif - -/****************************************************************************** - * USB Host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static unsigned long balloon3_uhc_pin_config[] __initdata = { - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, -}; - -static struct pxaohci_platform_data balloon3_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -static void __init balloon3_uhc_init(void) -{ - if (!balloon3_has(BALLOON3_FEATURE_OHCI)) - return; - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_uhc_pin_config)); - pxa_set_ohci_info(&balloon3_ohci_info); -} -#else -static inline void balloon3_uhc_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static unsigned long balloon3_led_pin_config[] __initdata = { - GPIO9_GPIO, /* NAND activity LED */ - GPIO10_GPIO, /* Heartbeat LED */ -}; - -struct gpio_led balloon3_gpio_leds[] = { - { - .name = "balloon3:green:idle", - .default_trigger = "heartbeat", - .gpio = BALLOON3_GPIO_LED_IDLE, - .active_low = 1, - }, { - .name = "balloon3:green:nand", - .default_trigger = "nand-disk", - .gpio = BALLOON3_GPIO_LED_NAND, - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data balloon3_gpio_led_info = { - .leds = balloon3_gpio_leds, - .num_leds = ARRAY_SIZE(balloon3_gpio_leds), -}; - -static struct platform_device balloon3_leds = { - .name = "leds-gpio", - .id = 0, - .dev = { - .platform_data = &balloon3_gpio_led_info, - } -}; - -struct gpio_led balloon3_pcf_gpio_leds[] = { - { - .name = "balloon3:green:led0", - .gpio = BALLOON3_PCF_GPIO_LED0, - .active_low = 1, - }, { - .name = "balloon3:green:led1", - .gpio = BALLOON3_PCF_GPIO_LED1, - .active_low = 1, - }, { - .name = "balloon3:orange:led2", - .gpio = BALLOON3_PCF_GPIO_LED2, - .active_low = 1, - }, { - .name = "balloon3:orange:led3", - .gpio = BALLOON3_PCF_GPIO_LED3, - .active_low = 1, - }, { - .name = "balloon3:orange:led4", - .gpio = BALLOON3_PCF_GPIO_LED4, - .active_low = 1, - }, { - .name = "balloon3:orange:led5", - .gpio = BALLOON3_PCF_GPIO_LED5, - .active_low = 1, - }, { - .name = "balloon3:red:led6", - .gpio = BALLOON3_PCF_GPIO_LED6, - .active_low = 1, - }, { - .name = "balloon3:red:led7", - .gpio = BALLOON3_PCF_GPIO_LED7, - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data balloon3_pcf_gpio_led_info = { - .leds = balloon3_pcf_gpio_leds, - .num_leds = ARRAY_SIZE(balloon3_pcf_gpio_leds), -}; - -static struct platform_device balloon3_pcf_leds = { - .name = "leds-gpio", - .id = 1, - .dev = { - .platform_data = &balloon3_pcf_gpio_led_info, - } -}; - -static void __init balloon3_leds_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_led_pin_config)); - platform_device_register(&balloon3_leds); - platform_device_register(&balloon3_pcf_leds); -} -#else -static inline void balloon3_leds_init(void) {} -#endif - -/****************************************************************************** - * FPGA IRQ - ******************************************************************************/ -static void balloon3_mask_irq(struct irq_data *d) -{ - int balloon3_irq = (d->irq - BALLOON3_IRQ(0)); - balloon3_irq_enabled &= ~(1 << balloon3_irq); - __raw_writel(~balloon3_irq_enabled, BALLOON3_INT_CONTROL_REG); -} - -static void balloon3_unmask_irq(struct irq_data *d) -{ - int balloon3_irq = (d->irq - BALLOON3_IRQ(0)); - balloon3_irq_enabled |= (1 << balloon3_irq); - __raw_writel(~balloon3_irq_enabled, BALLOON3_INT_CONTROL_REG); -} - -static struct irq_chip balloon3_irq_chip = { - .name = "FPGA", - .irq_ack = balloon3_mask_irq, - .irq_mask = balloon3_mask_irq, - .irq_unmask = balloon3_unmask_irq, -}; - -static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) & - balloon3_irq_enabled; - do { - /* clear useless edge notification */ - if (desc->irq_data.chip->irq_ack) { - struct irq_data *d; - - d = irq_get_irq_data(BALLOON3_AUX_NIRQ); - desc->irq_data.chip->irq_ack(d); - } - - while (pending) { - irq = BALLOON3_IRQ(0) + __ffs(pending); - generic_handle_irq(irq); - pending &= pending - 1; - } - pending = __raw_readl(BALLOON3_INT_CONTROL_REG) & - balloon3_irq_enabled; - } while (pending); -} - -static void __init balloon3_init_irq(void) -{ - int irq; - - pxa27x_init_irq(); - /* setup extra Balloon3 irqs */ - for (irq = BALLOON3_IRQ(0); irq <= BALLOON3_IRQ(7); irq++) { - irq_set_chip_and_handler(irq, &balloon3_irq_chip, - handle_level_irq); - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); - } - - irq_set_chained_handler(BALLOON3_AUX_NIRQ, balloon3_irq_handler); - irq_set_irq_type(BALLOON3_AUX_NIRQ, IRQ_TYPE_EDGE_FALLING); - - pr_debug("%s: chained handler installed - irq %d automatically " - "enabled\n", __func__, BALLOON3_AUX_NIRQ); -} - -/****************************************************************************** - * GPIO expander - ******************************************************************************/ -#if defined(CONFIG_GPIO_PCF857X) || defined(CONFIG_GPIO_PCF857X_MODULE) -static struct pcf857x_platform_data balloon3_pcf857x_pdata = { - .gpio_base = BALLOON3_PCF_GPIO_BASE, - .n_latch = 0, - .setup = NULL, - .teardown = NULL, - .context = NULL, -}; - -static struct i2c_board_info __initdata balloon3_i2c_devs[] = { - { - I2C_BOARD_INFO("pcf8574a", 0x38), - .platform_data = &balloon3_pcf857x_pdata, - }, -}; - -static void __init balloon3_i2c_init(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(balloon3_i2c_devs)); -} -#else -static inline void balloon3_i2c_init(void) {} -#endif - -/****************************************************************************** - * NAND - ******************************************************************************/ -#if defined(CONFIG_MTD_NAND_PLATFORM)||defined(CONFIG_MTD_NAND_PLATFORM_MODULE) -static void balloon3_nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - uint8_t balloon3_ctl_set = 0, balloon3_ctl_clr = 0; - - if (ctrl & NAND_CTRL_CHANGE) { - if (ctrl & NAND_CLE) - balloon3_ctl_set |= BALLOON3_NAND_CONTROL_FLCLE; - else - balloon3_ctl_clr |= BALLOON3_NAND_CONTROL_FLCLE; - - if (ctrl & NAND_ALE) - balloon3_ctl_set |= BALLOON3_NAND_CONTROL_FLALE; - else - balloon3_ctl_clr |= BALLOON3_NAND_CONTROL_FLALE; - - if (balloon3_ctl_clr) - __raw_writel(balloon3_ctl_clr, - BALLOON3_NAND_CONTROL_REG); - if (balloon3_ctl_set) - __raw_writel(balloon3_ctl_set, - BALLOON3_NAND_CONTROL_REG + - BALLOON3_FPGA_SETnCLR); - } - - if (cmd != NAND_CMD_NONE) - writeb(cmd, this->IO_ADDR_W); -} - -static void balloon3_nand_select_chip(struct mtd_info *mtd, int chip) -{ - if (chip < 0 || chip > 3) - return; - - /* Assert all nCE lines */ - __raw_writew( - BALLOON3_NAND_CONTROL_FLCE0 | BALLOON3_NAND_CONTROL_FLCE1 | - BALLOON3_NAND_CONTROL_FLCE2 | BALLOON3_NAND_CONTROL_FLCE3, - BALLOON3_NAND_CONTROL_REG + BALLOON3_FPGA_SETnCLR); - - /* Deassert correct nCE line */ - __raw_writew(BALLOON3_NAND_CONTROL_FLCE0 << chip, - BALLOON3_NAND_CONTROL_REG); -} - -static int balloon3_nand_dev_ready(struct mtd_info *mtd) -{ - return __raw_readl(BALLOON3_NAND_STAT_REG) & BALLOON3_NAND_STAT_RNB; -} - -static int balloon3_nand_probe(struct platform_device *pdev) -{ - uint16_t ver; - int ret; - - __raw_writew(BALLOON3_NAND_CONTROL2_16BIT, - BALLOON3_NAND_CONTROL2_REG + BALLOON3_FPGA_SETnCLR); - - ver = __raw_readw(BALLOON3_FPGA_VER); - if (ver < 0x4f08) - pr_warn("The FPGA code, version 0x%04x, is too old. " - "NAND support might be broken in this version!", ver); - - /* Power up the NAND chips */ - ret = gpio_request(BALLOON3_GPIO_RUN_NAND, "NAND"); - if (ret) - goto err1; - - ret = gpio_direction_output(BALLOON3_GPIO_RUN_NAND, 1); - if (ret) - goto err2; - - gpio_set_value(BALLOON3_GPIO_RUN_NAND, 1); - - /* Deassert all nCE lines and write protect line */ - __raw_writel( - BALLOON3_NAND_CONTROL_FLCE0 | BALLOON3_NAND_CONTROL_FLCE1 | - BALLOON3_NAND_CONTROL_FLCE2 | BALLOON3_NAND_CONTROL_FLCE3 | - BALLOON3_NAND_CONTROL_FLWP, - BALLOON3_NAND_CONTROL_REG + BALLOON3_FPGA_SETnCLR); - return 0; - -err2: - gpio_free(BALLOON3_GPIO_RUN_NAND); -err1: - return ret; -} - -static void balloon3_nand_remove(struct platform_device *pdev) -{ - /* Power down the NAND chips */ - gpio_set_value(BALLOON3_GPIO_RUN_NAND, 0); - gpio_free(BALLOON3_GPIO_RUN_NAND); -} - -static struct mtd_partition balloon3_partition_info[] = { - [0] = { - .name = "Boot", - .offset = 0, - .size = SZ_4M, - }, - [1] = { - .name = "RootFS", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL - }, -}; - -static const char *balloon3_part_probes[] = { "cmdlinepart", NULL }; - -struct platform_nand_data balloon3_nand_pdata = { - .chip = { - .nr_chips = 4, - .chip_offset = 0, - .nr_partitions = ARRAY_SIZE(balloon3_partition_info), - .partitions = balloon3_partition_info, - .chip_delay = 50, - .part_probe_types = balloon3_part_probes, - }, - .ctrl = { - .hwcontrol = 0, - .dev_ready = balloon3_nand_dev_ready, - .select_chip = balloon3_nand_select_chip, - .cmd_ctrl = balloon3_nand_cmd_ctl, - .probe = balloon3_nand_probe, - .remove = balloon3_nand_remove, - }, -}; - -static struct resource balloon3_nand_resource[] = { - [0] = { - .start = BALLOON3_NAND_BASE, - .end = BALLOON3_NAND_BASE + 0x4, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device balloon3_nand = { - .name = "gen_nand", - .num_resources = ARRAY_SIZE(balloon3_nand_resource), - .resource = balloon3_nand_resource, - .id = -1, - .dev = { - .platform_data = &balloon3_nand_pdata, - } -}; - -static void __init balloon3_nand_init(void) -{ - platform_device_register(&balloon3_nand); -} -#else -static inline void balloon3_nand_init(void) {} -#endif - -/****************************************************************************** - * Core power regulator - ******************************************************************************/ -#if defined(CONFIG_REGULATOR_MAX1586) || \ - defined(CONFIG_REGULATOR_MAX1586_MODULE) -static struct regulator_consumer_supply balloon3_max1587a_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data balloon3_max1587a_v3_info = { - .constraints = { - .name = "vcc_core range", - .min_uV = 900000, - .max_uV = 1705000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .consumer_supplies = balloon3_max1587a_consumers, - .num_consumer_supplies = ARRAY_SIZE(balloon3_max1587a_consumers), -}; - -static struct max1586_subdev_data balloon3_max1587a_subdevs[] = { - { - .name = "vcc_core", - .id = MAX1586_V3, - .platform_data = &balloon3_max1587a_v3_info, - } -}; - -static struct max1586_platform_data balloon3_max1587a_info = { - .subdevs = balloon3_max1587a_subdevs, - .num_subdevs = ARRAY_SIZE(balloon3_max1587a_subdevs), - .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ -}; - -static struct i2c_board_info __initdata balloon3_pi2c_board_info[] = { - { - I2C_BOARD_INFO("max1586", 0x14), - .platform_data = &balloon3_max1587a_info, - }, -}; - -static void __init balloon3_pmic_init(void) -{ - pxa27x_set_i2c_power_info(NULL); - i2c_register_board_info(1, ARRAY_AND_SIZE(balloon3_pi2c_board_info)); -} -#else -static inline void balloon3_pmic_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init balloon3_init(void) -{ - ARB_CNTRL = ARB_CORE_PARK | 0x234; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - balloon3_i2c_init(); - balloon3_irda_init(); - balloon3_lcd_init(); - balloon3_leds_init(); - balloon3_mmc_init(); - balloon3_nand_init(); - balloon3_nor_init(); - balloon3_pmic_init(); - balloon3_ts_init(); - balloon3_udc_init(); - balloon3_uhc_init(); - balloon3_cf_init(); -} - -static struct map_desc balloon3_io_desc[] __initdata = { - { /* CPLD/FPGA */ - .virtual = (unsigned long)BALLOON3_FPGA_VIRT, - .pfn = __phys_to_pfn(BALLOON3_FPGA_PHYS), - .length = BALLOON3_FPGA_LENGTH, - .type = MT_DEVICE, - }, -}; - -static void __init balloon3_map_io(void) -{ - pxa27x_map_io(); - iotable_init(balloon3_io_desc, ARRAY_SIZE(balloon3_io_desc)); -} - -MACHINE_START(BALLOON3, "Balloon3") - /* Maintainer: Nick Bane. */ - .map_io = balloon3_map_io, - .nr_irqs = BALLOON3_NR_IRQS, - .init_irq = balloon3_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = balloon3_init, - .atag_offset = 0x100, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/capc7117.c b/ANDROID_3.4.5/arch/arm/mach-pxa/capc7117.c deleted file mode 100644 index 9a8760b7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/capc7117.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/capc7117.c - * - * Support for the Embedian CAPC-7117 Evaluation Kit - * based on the Embedian MXM-8x10 Computer on Module - * - * Copyright (C) 2009 Embedian Inc. - * Copyright (C) 2009 TMT Services & Supplies (Pty) Ltd. - * - * 2007-09-04: eric miao <eric.y.miao@gmail.com> - * rewrite to align with latest kernel - * - * 2010-01-09: Edwin Peer <epeer@tmtservices.co.za> - * Hennie van der Merwe <hvdmerwe@tmtservices.co.za> - * rework for upstream merge - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/ata_platform.h> -#include <linux/serial_8250.h> -#include <linux/gpio.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa320.h> -#include <mach/mxm8x10.h> - -#include "generic.h" - -/* IDE (PATA) Support */ -static struct pata_platform_info pata_platform_data = { - .ioport_shift = 1 -}; - -static struct resource capc7117_ide_resources[] = { - [0] = { - .start = 0x11000020, - .end = 0x1100003f, - .flags = IORESOURCE_MEM - }, - [1] = { - .start = 0x1100001c, - .end = 0x1100001c, - .flags = IORESOURCE_MEM - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO76)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO76)), - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING - } -}; - -static struct platform_device capc7117_ide_device = { - .name = "pata_platform", - .num_resources = ARRAY_SIZE(capc7117_ide_resources), - .resource = capc7117_ide_resources, - .dev = { - .platform_data = &pata_platform_data, - .coherent_dma_mask = ~0 /* grumble */ - } -}; - -static void __init capc7117_ide_init(void) -{ - platform_device_register(&capc7117_ide_device); -} - -/* TI16C752 UART support */ -#define TI16C752_FLAGS (UPF_BOOT_AUTOCONF | \ - UPF_IOREMAP | \ - UPF_BUGGY_UART | \ - UPF_SKIP_TEST) -#define TI16C752_UARTCLK (22118400) -static struct plat_serial8250_port ti16c752_platform_data[] = { - [0] = { - .mapbase = 0x14000000, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO78)), - .irqflags = IRQF_TRIGGER_RISING, - .flags = TI16C752_FLAGS, - .iotype = UPIO_MEM, - .regshift = 1, - .uartclk = TI16C752_UARTCLK - }, - [1] = { - .mapbase = 0x14000040, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO79)), - .irqflags = IRQF_TRIGGER_RISING, - .flags = TI16C752_FLAGS, - .iotype = UPIO_MEM, - .regshift = 1, - .uartclk = TI16C752_UARTCLK - }, - [2] = { - .mapbase = 0x14000080, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO80)), - .irqflags = IRQF_TRIGGER_RISING, - .flags = TI16C752_FLAGS, - .iotype = UPIO_MEM, - .regshift = 1, - .uartclk = TI16C752_UARTCLK - }, - [3] = { - .mapbase = 0x140000c0, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO81)), - .irqflags = IRQF_TRIGGER_RISING, - .flags = TI16C752_FLAGS, - .iotype = UPIO_MEM, - .regshift = 1, - .uartclk = TI16C752_UARTCLK - }, - [4] = { - /* end of array */ - } -}; - -static struct platform_device ti16c752_device = { - .name = "serial8250", - .id = PLAT8250_DEV_PLATFORM, - .dev = { - .platform_data = ti16c752_platform_data - } -}; - -static void __init capc7117_uarts_init(void) -{ - platform_device_register(&ti16c752_device); -} - -static void __init capc7117_init(void) -{ - /* Init CoM */ - mxm_8x10_barebones_init(); - - /* Init evaluation board peripherals */ - mxm_8x10_ac97_init(); - mxm_8x10_usb_host_init(); - mxm_8x10_mmc_init(); - - capc7117_uarts_init(); - capc7117_ide_init(); -} - -MACHINE_START(CAPC7117, - "Embedian CAPC-7117 evaluation kit based on the MXM-8x10 CoM") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = capc7117_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa2xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa2xx.c deleted file mode 100644 index 9ee2ad6a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa2xx.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/clock-pxa2xx.c - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/pxa2xx-regs.h> - -#include "clock.h" - -void clk_pxa2xx_cken_enable(struct clk *clk) -{ - CKEN |= 1 << clk->cken; -} - -void clk_pxa2xx_cken_disable(struct clk *clk) -{ - CKEN &= ~(1 << clk->cken); -} - -const struct clkops clk_pxa2xx_cken_ops = { - .enable = clk_pxa2xx_cken_enable, - .disable = clk_pxa2xx_cken_disable, -}; - -#ifdef CONFIG_PM -static uint32_t saved_cken; - -static int pxa2xx_clock_suspend(void) -{ - saved_cken = CKEN; - return 0; -} - -static void pxa2xx_clock_resume(void) -{ - CKEN = saved_cken; -} -#else -#define pxa2xx_clock_suspend NULL -#define pxa2xx_clock_resume NULL -#endif - -struct syscore_ops pxa2xx_clock_syscore_ops = { - .suspend = pxa2xx_clock_suspend, - .resume = pxa2xx_clock_resume, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa3xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa3xx.c deleted file mode 100644 index 2a37a9a8..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/clock-pxa3xx.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/clock-pxa3xx.c - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/smemc.h> -#include <mach/pxa3xx-regs.h> - -#include "clock.h" - -/* Crystal clock: 13MHz */ -#define BASE_CLK 13000000 - -/* Ring Oscillator Clock: 60MHz */ -#define RO_CLK 60000000 - -#define ACCR_D0CS (1 << 26) -#define ACCR_PCCE (1 << 11) - -/* crystal frequency to HSIO bus frequency multiplier (HSS) */ -static unsigned char hss_mult[4] = { 8, 12, 16, 24 }; - -/* - * Get the clock frequency as reflected by CCSR 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 pxa3xx_get_clk_frequency_khz(int info) -{ - unsigned long acsr, xclkcfg; - unsigned int t, xl, xn, hss, ro, XL, XN, CLK, HSS; - - /* Read XCLKCFG register turbo bit */ - __asm__ __volatile__("mrc\tp14, 0, %0, c6, c0, 0" : "=r"(xclkcfg)); - t = xclkcfg & 0x1; - - acsr = ACSR; - - xl = acsr & 0x1f; - xn = (acsr >> 8) & 0x7; - hss = (acsr >> 14) & 0x3; - - XL = xl * BASE_CLK; - XN = xn * XL; - - ro = acsr & ACCR_D0CS; - - CLK = (ro) ? RO_CLK : ((t) ? XN : XL); - HSS = (ro) ? RO_CLK : hss_mult[hss] * BASE_CLK; - - if (info) { - pr_info("RO Mode clock: %d.%02dMHz (%sactive)\n", - RO_CLK / 1000000, (RO_CLK % 1000000) / 10000, - (ro) ? "" : "in"); - pr_info("Run Mode clock: %d.%02dMHz (*%d)\n", - XL / 1000000, (XL % 1000000) / 10000, xl); - pr_info("Turbo Mode clock: %d.%02dMHz (*%d, %sactive)\n", - XN / 1000000, (XN % 1000000) / 10000, xn, - (t) ? "" : "in"); - pr_info("HSIO bus clock: %d.%02dMHz\n", - HSS / 1000000, (HSS % 1000000) / 10000); - } - - return CLK / 1000; -} - -/* - * Return the current AC97 clock frequency. - */ -static unsigned long clk_pxa3xx_ac97_getrate(struct clk *clk) -{ - unsigned long rate = 312000000; - unsigned long ac97_div; - - ac97_div = AC97_DIV; - - /* This may loose precision for some rates but won't for the - * standard 24.576MHz. - */ - rate /= (ac97_div >> 12) & 0x7fff; - rate *= (ac97_div & 0xfff); - - return rate; -} - -/* - * Return the current HSIO bus clock frequency - */ -static unsigned long clk_pxa3xx_hsio_getrate(struct clk *clk) -{ - unsigned long acsr; - unsigned int hss, hsio_clk; - - acsr = ACSR; - - hss = (acsr >> 14) & 0x3; - hsio_clk = (acsr & ACCR_D0CS) ? RO_CLK : hss_mult[hss] * BASE_CLK; - - return hsio_clk; -} - -/* 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 unsigned long clk_pxa3xx_smemc_getrate(struct clk *clk) -{ - unsigned long acsr = ACSR; - unsigned long memclkcfg = __raw_readl(MEMCLKCFG); - - return BASE_CLK * smcfs_mult[(acsr >> 23) & 0x7] / - df_clkdiv[(memclkcfg >> 16) & 0x3]; -} - -void clk_pxa3xx_cken_enable(struct clk *clk) -{ - unsigned long mask = 1ul << (clk->cken & 0x1f); - - if (clk->cken < 32) - CKENA |= mask; - else - CKENB |= mask; -} - -void clk_pxa3xx_cken_disable(struct clk *clk) -{ - unsigned long mask = 1ul << (clk->cken & 0x1f); - - if (clk->cken < 32) - CKENA &= ~mask; - else - CKENB &= ~mask; -} - -const struct clkops clk_pxa3xx_cken_ops = { - .enable = clk_pxa3xx_cken_enable, - .disable = clk_pxa3xx_cken_disable, -}; - -const struct clkops clk_pxa3xx_hsio_ops = { - .enable = clk_pxa3xx_cken_enable, - .disable = clk_pxa3xx_cken_disable, - .getrate = clk_pxa3xx_hsio_getrate, -}; - -const struct clkops clk_pxa3xx_ac97_ops = { - .enable = clk_pxa3xx_cken_enable, - .disable = clk_pxa3xx_cken_disable, - .getrate = clk_pxa3xx_ac97_getrate, -}; - -const struct clkops clk_pxa3xx_smemc_ops = { - .enable = clk_pxa3xx_cken_enable, - .disable = clk_pxa3xx_cken_disable, - .getrate = clk_pxa3xx_smemc_getrate, -}; - -static void clk_pout_enable(struct clk *clk) -{ - OSCC |= OSCC_PEN; -} - -static void clk_pout_disable(struct clk *clk) -{ - OSCC &= ~OSCC_PEN; -} - -const struct clkops clk_pxa3xx_pout_ops = { - .enable = clk_pout_enable, - .disable = clk_pout_disable, -}; - -#ifdef CONFIG_PM -static uint32_t cken[2]; -static uint32_t accr; - -static int pxa3xx_clock_suspend(void) -{ - cken[0] = CKENA; - cken[1] = CKENB; - accr = ACCR; - return 0; -} - -static void pxa3xx_clock_resume(void) -{ - ACCR = accr; - CKENA = cken[0]; - CKENB = cken[1]; -} -#else -#define pxa3xx_clock_suspend NULL -#define pxa3xx_clock_resume NULL -#endif - -struct syscore_ops pxa3xx_clock_syscore_ops = { - .suspend = pxa3xx_clock_suspend, - .resume = pxa3xx_clock_resume, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/clock.c b/ANDROID_3.4.5/arch/arm/mach-pxa/clock.c deleted file mode 100644 index 4d466102..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/clock.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * linux/arch/arm/mach-sa1100/clock.c - */ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/clk.h> -#include <linux/spinlock.h> -#include <linux/delay.h> -#include <linux/clkdev.h> - -#include "clock.h" - -static DEFINE_SPINLOCK(clocks_lock); - -int clk_enable(struct clk *clk) -{ - unsigned long flags; - - spin_lock_irqsave(&clocks_lock, flags); - if (clk->enabled++ == 0) - clk->ops->enable(clk); - spin_unlock_irqrestore(&clocks_lock, flags); - - if (clk->delay) - udelay(clk->delay); - - return 0; -} -EXPORT_SYMBOL(clk_enable); - -void clk_disable(struct clk *clk) -{ - unsigned long flags; - - WARN_ON(clk->enabled == 0); - - spin_lock_irqsave(&clocks_lock, flags); - if (--clk->enabled == 0) - clk->ops->disable(clk); - spin_unlock_irqrestore(&clocks_lock, flags); -} -EXPORT_SYMBOL(clk_disable); - -unsigned long clk_get_rate(struct clk *clk) -{ - unsigned long rate; - - rate = clk->rate; - if (clk->ops->getrate) - rate = clk->ops->getrate(clk); - - return rate; -} -EXPORT_SYMBOL(clk_get_rate); - -int clk_set_rate(struct clk *clk, unsigned long rate) -{ - unsigned long flags; - int ret = -EINVAL; - - if (clk->ops->setrate) { - spin_lock_irqsave(&clocks_lock, flags); - ret = clk->ops->setrate(clk, rate); - spin_unlock_irqrestore(&clocks_lock, flags); - } - - return ret; -} -EXPORT_SYMBOL(clk_set_rate); - -void clk_dummy_enable(struct clk *clk) -{ -} - -void clk_dummy_disable(struct clk *clk) -{ -} - -const struct clkops clk_dummy_ops = { - .enable = clk_dummy_enable, - .disable = clk_dummy_disable, -}; - -struct clk clk_dummy = { - .ops = &clk_dummy_ops, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/clock.h b/ANDROID_3.4.5/arch/arm/mach-pxa/clock.h deleted file mode 100644 index 3a258b1b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/clock.h +++ /dev/null @@ -1,80 +0,0 @@ -#include <linux/clkdev.h> -#include <linux/syscore_ops.h> - -struct clkops { - void (*enable)(struct clk *); - void (*disable)(struct clk *); - unsigned long (*getrate)(struct clk *); - int (*setrate)(struct clk *, unsigned long); -}; - -struct clk { - const struct clkops *ops; - unsigned long rate; - unsigned int cken; - unsigned int delay; - unsigned int enabled; -}; - -void clk_dummy_enable(struct clk *); -void clk_dummy_disable(struct clk *); - -extern const struct clkops clk_dummy_ops; -extern struct clk clk_dummy; - -#define INIT_CLKREG(_clk,_devname,_conname) \ - { \ - .clk = _clk, \ - .dev_id = _devname, \ - .con_id = _conname, \ - } - -#define DEFINE_CK(_name, _cken, _ops) \ -struct clk clk_##_name = { \ - .ops = _ops, \ - .cken = CKEN_##_cken, \ - } - -#define DEFINE_CLK(_name, _ops, _rate, _delay) \ -struct clk clk_##_name = { \ - .ops = _ops, \ - .rate = _rate, \ - .delay = _delay, \ - } - -#define DEFINE_PXA2_CKEN(_name, _cken, _rate, _delay) \ -struct clk clk_##_name = { \ - .ops = &clk_pxa2xx_cken_ops, \ - .rate = _rate, \ - .cken = CKEN_##_cken, \ - .delay = _delay, \ - } - -extern const struct clkops clk_pxa2xx_cken_ops; - -void clk_pxa2xx_cken_enable(struct clk *clk); -void clk_pxa2xx_cken_disable(struct clk *clk); - -extern struct syscore_ops pxa2xx_clock_syscore_ops; - -#if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) -#define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \ -struct clk clk_##_name = { \ - .ops = &clk_pxa3xx_cken_ops, \ - .rate = _rate, \ - .cken = CKEN_##_cken, \ - .delay = _delay, \ - } - -extern const struct clkops clk_pxa3xx_cken_ops; -extern const struct clkops clk_pxa3xx_hsio_ops; -extern const struct clkops clk_pxa3xx_ac97_ops; -extern const struct clkops clk_pxa3xx_pout_ops; -extern const struct clkops clk_pxa3xx_smemc_ops; - -extern void clk_pxa3xx_cken_enable(struct clk *); -extern void clk_pxa3xx_cken_disable(struct clk *); - -extern struct syscore_ops pxa3xx_clock_syscore_ops; - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x255.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x255.c deleted file mode 100644 index be751470..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x255.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cm-x255.c - * - * Copyright (C) 2007, 2008 CompuLab, Ltd. - * Mike Rapoport <mike@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/mtd/nand-gpio.h> - -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> - -#include <asm/mach/arch.h> -#include <asm/mach-types.h> -#include <asm/mach/map.h> - -#include <mach/pxa25x.h> - -#include "generic.h" - -#define GPIO_NAND_CS (5) -#define GPIO_NAND_ALE (4) -#define GPIO_NAND_CLE (3) -#define GPIO_NAND_RB (10) - -static unsigned long cmx255_pin_config[] = { - /* AC'97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* SSP1 */ - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* SSP2 */ - GPIO81_SSP2_CLK_OUT, - GPIO82_SSP2_FRM_OUT, - GPIO83_SSP2_TXD, - GPIO84_SSP2_RXD, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* SDRAM and local bus */ - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO79_nCS_3, - GPIO80_nCS_4, - GPIO33_nCS_5, - GPIO18_RDY, - - /* GPIO */ - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, - GPIO9_GPIO, /* PC card reset */ - - /* NAND controls */ - GPIO5_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ - GPIO4_GPIO | MFP_LPM_DRIVE_LOW, /* NAND ALE */ - GPIO3_GPIO | MFP_LPM_DRIVE_LOW, /* NAND CLE */ - GPIO10_GPIO, /* NAND Ready/Busy */ - - /* interrupts */ - GPIO22_GPIO, /* DM9000 interrupt */ -}; - -#if defined(CONFIG_SPI_PXA2XX) -static struct pxa2xx_spi_master pxa_ssp_master_info = { - .num_chipselect = 1, -}; - -static struct spi_board_info spi_board_info[] __initdata = { - [0] = { - .modalias = "rtc-max6902", - .max_speed_hz = 1000000, - .bus_num = 1, - .chip_select = 0, - }, -}; - -static void __init cmx255_init_rtc(void) -{ - pxa2xx_set_spi_info(1, &pxa_ssp_master_info); - spi_register_board_info(ARRAY_AND_SIZE(spi_board_info)); -} -#else -static inline void cmx255_init_rtc(void) {} -#endif - -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition cmx255_nor_partitions[] = { - { - .name = "ARMmon", - .size = 0x00030000, - .offset = 0, - .mask_flags = MTD_WRITEABLE /* force read-only */ - } , { - .name = "ARMmon setup block", - .size = 0x00010000, - .offset = MTDPART_OFS_APPEND, - .mask_flags = MTD_WRITEABLE /* force read-only */ - } , { - .name = "kernel", - .size = 0x00160000, - .offset = MTDPART_OFS_APPEND, - } , { - .name = "ramdisk", - .size = MTDPART_SIZ_FULL, - .offset = MTDPART_OFS_APPEND - } -}; - -static struct physmap_flash_data cmx255_nor_flash_data[] = { - { - .width = 2, /* bankwidth in bytes */ - .parts = cmx255_nor_partitions, - .nr_parts = ARRAY_SIZE(cmx255_nor_partitions) - } -}; - -static struct resource cmx255_nor_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_8M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device cmx255_nor = { - .name = "physmap-flash", - .id = -1, - .dev = { - .platform_data = cmx255_nor_flash_data, - }, - .resource = &cmx255_nor_resource, - .num_resources = 1, -}; - -static void __init cmx255_init_nor(void) -{ - platform_device_register(&cmx255_nor); -} -#else -static inline void cmx255_init_nor(void) {} -#endif - -#if defined(CONFIG_MTD_NAND_GPIO) || defined(CONFIG_MTD_NAND_GPIO_MODULE) -static struct resource cmx255_nand_resource[] = { - [0] = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + 11, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_CS5_PHYS, - .end = PXA_CS5_PHYS + 3, - .flags = IORESOURCE_MEM, - }, -}; - -static struct mtd_partition cmx255_nand_parts[] = { - [0] = { - .name = "cmx255-nand", - .size = MTDPART_SIZ_FULL, - .offset = 0, - }, -}; - -static struct gpio_nand_platdata cmx255_nand_platdata = { - .gpio_nce = GPIO_NAND_CS, - .gpio_cle = GPIO_NAND_CLE, - .gpio_ale = GPIO_NAND_ALE, - .gpio_rdy = GPIO_NAND_RB, - .gpio_nwp = -1, - .parts = cmx255_nand_parts, - .num_parts = ARRAY_SIZE(cmx255_nand_parts), - .chip_delay = 25, -}; - -static struct platform_device cmx255_nand = { - .name = "gpio-nand", - .num_resources = ARRAY_SIZE(cmx255_nand_resource), - .resource = cmx255_nand_resource, - .id = -1, - .dev = { - .platform_data = &cmx255_nand_platdata, - } -}; - -static void __init cmx255_init_nand(void) -{ - platform_device_register(&cmx255_nand); -} -#else -static inline void cmx255_init_nand(void) {} -#endif - -void __init cmx255_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx255_pin_config)); - - cmx255_init_rtc(); - cmx255_init_nor(); - cmx255_init_nand(); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x270.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x270.c deleted file mode 100644 index 431ef567..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x270.c +++ /dev/null @@ -1,412 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cm-x270.c - * - * Copyright (C) 2007, 2008 CompuLab, Ltd. - * Mike Rapoport <mike@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/gpio.h> -#include <linux/delay.h> - -#include <linux/rtc-v3020.h> -#include <video/mbxfb.h> - -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/spi/libertas_spi.h> - -#include <mach/pxa27x.h> -#include <mach/ohci.h> -#include <mach/mmc.h> - -#include "generic.h" - -/* physical address if local-bus attached devices */ -#define RTC_PHYS_BASE (PXA_CS1_PHYS + (5 << 22)) - -/* GPIO IRQ usage */ -#define GPIO83_MMC_IRQ (83) - -#define CMX270_MMC_IRQ PXA_GPIO_TO_IRQ(GPIO83_MMC_IRQ) - -/* MMC power enable */ -#define GPIO105_MMC_POWER (105) - -/* WLAN GPIOS */ -#define GPIO19_WLAN_STRAP (19) -#define GPIO102_WLAN_RST (102) - -static unsigned long cmx270_pin_config[] = { - /* AC'97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO98_AC97_SYSCLK, - GPIO113_AC97_nRESET, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* MCI controller */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* SSP1 */ - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* SSP2 */ - GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */ - GPIO14_GPIO, - GPIO87_SSP2_TXD, - GPIO88_SSP2_RXD, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* SDRAM and local bus */ - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO79_nCS_3, - GPIO80_nCS_4, - GPIO33_nCS_5, - GPIO49_nPWE, - GPIO18_RDY, - - /* GPIO */ - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, - GPIO105_GPIO | MFP_LPM_DRIVE_HIGH, /* MMC/SD power */ - GPIO53_GPIO, /* PC card reset */ - GPIO102_GPIO, /* WLAN reset */ - - /* NAND controls */ - GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ - GPIO89_GPIO, /* NAND Ready/Busy */ - - /* interrupts */ - GPIO10_GPIO, /* DM9000 interrupt */ - GPIO83_GPIO, /* MMC card detect */ - GPIO95_GPIO, /* WLAN interrupt */ -}; - -/* V3020 RTC */ -#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) -static struct resource cmx270_v3020_resource[] = { - [0] = { - .start = RTC_PHYS_BASE, - .end = RTC_PHYS_BASE + 4, - .flags = IORESOURCE_MEM, - }, -}; - -struct v3020_platform_data cmx270_v3020_pdata = { - .leftshift = 16, -}; - -static struct platform_device cmx270_rtc_device = { - .name = "v3020", - .num_resources = ARRAY_SIZE(cmx270_v3020_resource), - .resource = cmx270_v3020_resource, - .id = -1, - .dev = { - .platform_data = &cmx270_v3020_pdata, - } -}; - -static void __init cmx270_init_rtc(void) -{ - platform_device_register(&cmx270_rtc_device); -} -#else -static inline void cmx270_init_rtc(void) {} -#endif - -/* 2700G graphics */ -#if defined(CONFIG_FB_MBX) || defined(CONFIG_FB_MBX_MODULE) -static u64 fb_dma_mask = ~(u64)0; - -static struct resource cmx270_2700G_resource[] = { - /* frame buffer memory including ODFB and External SDRAM */ - [0] = { - .start = PXA_CS2_PHYS, - .end = PXA_CS2_PHYS + 0x01ffffff, - .flags = IORESOURCE_MEM, - }, - /* Marathon registers */ - [1] = { - .start = PXA_CS2_PHYS + 0x03fe0000, - .end = PXA_CS2_PHYS + 0x03ffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static unsigned long cmx270_marathon_on[] = { - GPIO58_GPIO, - GPIO59_GPIO, - GPIO60_GPIO, - GPIO61_GPIO, - GPIO62_GPIO, - GPIO63_GPIO, - GPIO64_GPIO, - GPIO65_GPIO, - GPIO66_GPIO, - GPIO67_GPIO, - GPIO68_GPIO, - GPIO69_GPIO, - GPIO70_GPIO, - GPIO71_GPIO, - GPIO72_GPIO, - GPIO73_GPIO, - GPIO74_GPIO, - GPIO75_GPIO, - GPIO76_GPIO, - GPIO77_GPIO, -}; - -static unsigned long cmx270_marathon_off[] = { - GPIOxx_LCD_TFT_16BPP, -}; - -static int cmx270_marathon_probe(struct fb_info *fb) -{ - int gpio, err; - - for (gpio = 58; gpio <= 77; gpio++) { - err = gpio_request(gpio, "LCD"); - if (err) - return err; - gpio_direction_input(gpio); - } - - pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx270_marathon_on)); - return 0; -} - -static int cmx270_marathon_remove(struct fb_info *fb) -{ - int gpio; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx270_marathon_off)); - - for (gpio = 58; gpio <= 77; gpio++) - gpio_free(gpio); - - return 0; -} - -static struct mbxfb_platform_data cmx270_2700G_data = { - .xres = { - .min = 240, - .max = 1200, - .defval = 640, - }, - .yres = { - .min = 240, - .max = 1200, - .defval = 480, - }, - .bpp = { - .min = 16, - .max = 32, - .defval = 16, - }, - .memsize = 8*1024*1024, - .probe = cmx270_marathon_probe, - .remove = cmx270_marathon_remove, -}; - -static struct platform_device cmx270_2700G = { - .name = "mbx-fb", - .dev = { - .platform_data = &cmx270_2700G_data, - .dma_mask = &fb_dma_mask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(cmx270_2700G_resource), - .resource = cmx270_2700G_resource, - .id = -1, -}; - -static void __init cmx270_init_2700G(void) -{ - platform_device_register(&cmx270_2700G); -} -#else -static inline void cmx270_init_2700G(void) {} -#endif - -/* PXA27x OHCI controller setup */ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static struct pxaohci_platform_data cmx270_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT2 | POWER_CONTROL_LOW, -}; - -static void __init cmx270_init_ohci(void) -{ - pxa_set_ohci_info(&cmx270_ohci_platform_data); -} -#else -static inline void cmx270_init_ohci(void) {} -#endif - -#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) -static struct pxamci_platform_data cmx270_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = GPIO83_MMC_IRQ, - .gpio_card_ro = -1, - .gpio_power = GPIO105_MMC_POWER, - .gpio_power_invert = 1, -}; - -static void __init cmx270_init_mmc(void) -{ - pxa_set_mci_info(&cmx270_mci_platform_data); -} -#else -static inline void cmx270_init_mmc(void) {} -#endif - -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static struct pxa2xx_spi_master cm_x270_spi_info = { - .num_chipselect = 1, - .enable_dma = 1, -}; - -static struct pxa2xx_spi_chip cm_x270_libertas_chip = { - .rx_threshold = 1, - .tx_threshold = 1, - .timeout = 1000, - .gpio_cs = 14, -}; - -static unsigned long cm_x270_libertas_pin_config[] = { - /* SSP2 */ - GPIO19_SSP2_SCLK, - GPIO14_GPIO, - GPIO87_SSP2_TXD, - GPIO88_SSP2_RXD, - -}; - -static int cm_x270_libertas_setup(struct spi_device *spi) -{ - int err = gpio_request(GPIO19_WLAN_STRAP, "WLAN STRAP"); - if (err) - return err; - - err = gpio_request(GPIO102_WLAN_RST, "WLAN RST"); - if (err) - goto err_free_strap; - - err = gpio_direction_output(GPIO102_WLAN_RST, 0); - if (err) - goto err_free_strap; - msleep(100); - - err = gpio_direction_output(GPIO19_WLAN_STRAP, 1); - if (err) - goto err_free_strap; - msleep(100); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(cm_x270_libertas_pin_config)); - - gpio_set_value(GPIO102_WLAN_RST, 1); - msleep(100); - - spi->bits_per_word = 16; - spi_setup(spi); - - return 0; - -err_free_strap: - gpio_free(GPIO19_WLAN_STRAP); - - return err; -} - -static int cm_x270_libertas_teardown(struct spi_device *spi) -{ - gpio_set_value(GPIO102_WLAN_RST, 0); - gpio_free(GPIO102_WLAN_RST); - gpio_free(GPIO19_WLAN_STRAP); - - return 0; -} - -struct libertas_spi_platform_data cm_x270_libertas_pdata = { - .use_dummy_writes = 1, - .setup = cm_x270_libertas_setup, - .teardown = cm_x270_libertas_teardown, -}; - -static struct spi_board_info cm_x270_spi_devices[] __initdata = { - { - .modalias = "libertas_spi", - .max_speed_hz = 13000000, - .bus_num = 2, - .irq = PXA_GPIO_TO_IRQ(95), - .chip_select = 0, - .controller_data = &cm_x270_libertas_chip, - .platform_data = &cm_x270_libertas_pdata, - }, -}; - -static void __init cmx270_init_spi(void) -{ - pxa2xx_set_spi_info(2, &cm_x270_spi_info); - spi_register_board_info(ARRAY_AND_SIZE(cm_x270_spi_devices)); -} -#else -static inline void cmx270_init_spi(void) {} -#endif - -void __init cmx270_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(cmx270_pin_config)); - -#ifdef CONFIG_PM - pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP); -#endif - - cmx270_init_rtc(); - cmx270_init_mmc(); - cmx270_init_ohci(); - cmx270_init_2700G(); - cmx270_init_spi(); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.c deleted file mode 100644 index ebd9259f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cm-x2xx-pci.c - * - * PCI bios-type initialisation for PCI machines - * - * Bits taken from various places. - * - * Copyright (C) 2007, 2008 Compulab, Ltd. - * Mike Rapoport <mike@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/kernel.h> -#include <linux/pci.h> -#include <linux/init.h> -#include <linux/device.h> -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/gpio.h> - -#include <asm/mach/pci.h> -#include <asm/mach-types.h> - -#include <asm/hardware/it8152.h> - -void __iomem *it8152_base_address; -static int cmx2xx_it8152_irq_gpio; - -static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc) -{ - /* clear our parent irq */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - - it8152_irq_demux(irq, desc); -} - -void __cmx2xx_pci_init_irq(int irq_gpio) -{ - it8152_init_irq(); - - cmx2xx_it8152_irq_gpio = irq_gpio; - - irq_set_irq_type(gpio_to_irq(irq_gpio), IRQ_TYPE_EDGE_RISING); - - irq_set_chained_handler(gpio_to_irq(irq_gpio), - cmx2xx_it8152_irq_demux); -} - -#ifdef CONFIG_PM -static unsigned long sleep_save_ite[10]; - -void __cmx2xx_pci_suspend(void) -{ - /* save ITE state */ - sleep_save_ite[0] = __raw_readl(IT8152_INTC_PDCNIMR); - sleep_save_ite[1] = __raw_readl(IT8152_INTC_LPCNIMR); - sleep_save_ite[2] = __raw_readl(IT8152_INTC_LPNIAR); - - /* Clear ITE IRQ's */ - __raw_writel((0), IT8152_INTC_PDCNIRR); - __raw_writel((0), IT8152_INTC_LPCNIRR); -} - -void __cmx2xx_pci_resume(void) -{ - /* restore IT8152 state */ - __raw_writel((sleep_save_ite[0]), IT8152_INTC_PDCNIMR); - __raw_writel((sleep_save_ite[1]), IT8152_INTC_LPCNIMR); - __raw_writel((sleep_save_ite[2]), IT8152_INTC_LPNIAR); -} -#else -void cmx2xx_pci_suspend(void) {} -void cmx2xx_pci_resume(void) {} -#endif - -/* PCI IRQ mapping*/ -static int __init cmx2xx_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) -{ - int irq; - - dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin); - - irq = it8152_pci_map_irq(dev, slot, pin); - if (irq) - return irq; - - /* - Here comes the ugly part. The routing is baseboard specific, - but defining a platform for each possible base of CM-X2XX is - unrealistic. Here we keep mapping for ATXBase and SB-X2XX. - */ - /* ATXBASE PCI slot */ - if (slot == 7) - return IT8152_PCI_INTA; - - /* ATXBase/SB-X2XX CardBus */ - if (slot == 8 || slot == 0) - return IT8152_PCI_INTB; - - /* ATXBase Ethernet */ - if (slot == 9) - return IT8152_PCI_INTA; - - /* CM-x255 Onboard Ethernet */ - if (slot == 15) - return IT8152_PCI_INTC; - - /* SB-x2xx Ethernet */ - if (slot == 16) - return IT8152_PCI_INTA; - - /* PC104+ interrupt routing */ - if ((slot == 17) || (slot == 19)) - return IT8152_PCI_INTA; - if ((slot == 18) || (slot == 20)) - return IT8152_PCI_INTB; - - return(0); -} - -static void cmx2xx_pci_preinit(void) -{ - pr_info("Initializing CM-X2XX PCI subsystem\n"); - - pcibios_min_io = 0; - pcibios_min_mem = 0; - - __raw_writel(0x800, IT8152_PCI_CFG_ADDR); - if (__raw_readl(IT8152_PCI_CFG_DATA) == 0x81521283) { - pr_info("PCI Bridge found.\n"); - - /* set PCI I/O base at 0 */ - writel(0x848, IT8152_PCI_CFG_ADDR); - writel(0, IT8152_PCI_CFG_DATA); - - /* set PCI memory base at 0 */ - writel(0x840, IT8152_PCI_CFG_ADDR); - writel(0, IT8152_PCI_CFG_DATA); - - writel(0x20, IT8152_GPIO_GPDR); - - /* CardBus Controller on ATXbase baseboard */ - writel(0x4000, IT8152_PCI_CFG_ADDR); - if (readl(IT8152_PCI_CFG_DATA) == 0xAC51104C) { - pr_info("CardBus Bridge found.\n"); - - /* Configure socket 0 */ - writel(0x408C, IT8152_PCI_CFG_ADDR); - writel(0x1022, IT8152_PCI_CFG_DATA); - - writel(0x4080, IT8152_PCI_CFG_ADDR); - writel(0x3844d060, IT8152_PCI_CFG_DATA); - - writel(0x4090, IT8152_PCI_CFG_ADDR); - writel(((readl(IT8152_PCI_CFG_DATA) & 0xffff) | - 0x60440000), - IT8152_PCI_CFG_DATA); - - writel(0x4018, IT8152_PCI_CFG_ADDR); - writel(0xb0000000, IT8152_PCI_CFG_DATA); - - /* Configure socket 1 */ - writel(0x418C, IT8152_PCI_CFG_ADDR); - writel(0x1022, IT8152_PCI_CFG_DATA); - - writel(0x4180, IT8152_PCI_CFG_ADDR); - writel(0x3844d060, IT8152_PCI_CFG_DATA); - - writel(0x4190, IT8152_PCI_CFG_ADDR); - writel(((readl(IT8152_PCI_CFG_DATA) & 0xffff) | - 0x60440000), - IT8152_PCI_CFG_DATA); - - writel(0x4118, IT8152_PCI_CFG_ADDR); - writel(0xb0000000, IT8152_PCI_CFG_DATA); - } - } -} - -static struct hw_pci cmx2xx_pci __initdata = { - .swizzle = pci_std_swizzle, - .map_irq = cmx2xx_pci_map_irq, - .nr_controllers = 1, - .setup = it8152_pci_setup, - .scan = it8152_pci_scan_bus, - .preinit = cmx2xx_pci_preinit, -}; - -static int __init cmx2xx_init_pci(void) -{ - if (machine_is_armcore()) - pci_common_init(&cmx2xx_pci); - - return 0; -} - -subsys_initcall(cmx2xx_init_pci); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.h b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.h deleted file mode 100644 index e24aad2e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx-pci.h +++ /dev/null @@ -1,13 +0,0 @@ -extern void __cmx2xx_pci_init_irq(int irq_gpio); -extern void __cmx2xx_pci_suspend(void); -extern void __cmx2xx_pci_resume(void); - -#ifdef CONFIG_PCI -#define cmx2xx_pci_init_irq(x) __cmx2xx_pci_init_irq(x) -#define cmx2xx_pci_suspend(x) __cmx2xx_pci_suspend(x) -#define cmx2xx_pci_resume(x) __cmx2xx_pci_resume(x) -#else -#define cmx2xx_pci_init_irq(x) do {} while (0) -#define cmx2xx_pci_suspend(x) do {} while (0) -#define cmx2xx_pci_resume(x) do {} while (0) -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx.c deleted file mode 100644 index 8fa4ad27..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x2xx.c +++ /dev/null @@ -1,528 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cm-x2xx.c - * - * Copyright (C) 2008 CompuLab, Ltd. - * Mike Rapoport <mike@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/irq.h> -#include <linux/gpio.h> - -#include <linux/dm9000.h> -#include <linux/leds.h> - -#include <asm/mach/arch.h> -#include <asm/mach-types.h> -#include <asm/mach/map.h> - -#include <mach/pxa25x.h> -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/smemc.h> - -#include <asm/hardware/it8152.h> - -#include "generic.h" -#include "cm-x2xx-pci.h" - -extern void cmx255_init(void); -extern void cmx270_init(void); - -/* reserve IRQs for IT8152 */ -#define CMX2XX_NR_IRQS (IRQ_BOARD_START + 40) - -/* virtual addresses for statically mapped regions */ -#define CMX2XX_VIRT_BASE (void __iomem *)(0xe8000000) -#define CMX2XX_IT8152_VIRT (CMX2XX_VIRT_BASE) - -/* physical address if local-bus attached devices */ -#define CMX255_DM9000_PHYS_BASE (PXA_CS1_PHYS + (8 << 22)) -#define CMX270_DM9000_PHYS_BASE (PXA_CS1_PHYS + (6 << 22)) - -/* leds */ -#define CMX255_GPIO_RED (27) -#define CMX255_GPIO_GREEN (32) -#define CMX270_GPIO_RED (93) -#define CMX270_GPIO_GREEN (94) - -/* GPIO IRQ usage */ -#define GPIO22_ETHIRQ (22) -#define GPIO10_ETHIRQ (10) -#define CMX255_GPIO_IT8152_IRQ (0) -#define CMX270_GPIO_IT8152_IRQ (22) - -#define CMX255_ETHIRQ PXA_GPIO_TO_IRQ(GPIO22_ETHIRQ) -#define CMX270_ETHIRQ PXA_GPIO_TO_IRQ(GPIO10_ETHIRQ) - -#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) -static struct resource cmx255_dm9000_resource[] = { - [0] = { - .start = CMX255_DM9000_PHYS_BASE, - .end = CMX255_DM9000_PHYS_BASE + 3, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = CMX255_DM9000_PHYS_BASE + 4, - .end = CMX255_DM9000_PHYS_BASE + 4 + 500, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = CMX255_ETHIRQ, - .end = CMX255_ETHIRQ, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct resource cmx270_dm9000_resource[] = { - [0] = { - .start = CMX270_DM9000_PHYS_BASE, - .end = CMX270_DM9000_PHYS_BASE + 3, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = CMX270_DM9000_PHYS_BASE + 8, - .end = CMX270_DM9000_PHYS_BASE + 8 + 500, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = CMX270_ETHIRQ, - .end = CMX270_ETHIRQ, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct dm9000_plat_data cmx270_dm9000_platdata = { - .flags = DM9000_PLATF_32BITONLY | DM9000_PLATF_NO_EEPROM, -}; - -static struct platform_device cmx2xx_dm9000_device = { - .name = "dm9000", - .id = 0, - .num_resources = ARRAY_SIZE(cmx270_dm9000_resource), - .dev = { - .platform_data = &cmx270_dm9000_platdata, - } -}; - -static void __init cmx2xx_init_dm9000(void) -{ - if (cpu_is_pxa25x()) - cmx2xx_dm9000_device.resource = cmx255_dm9000_resource; - else - cmx2xx_dm9000_device.resource = cmx270_dm9000_resource; - platform_device_register(&cmx2xx_dm9000_device); -} -#else -static inline void cmx2xx_init_dm9000(void) {} -#endif - -/* UCB1400 touchscreen controller */ -#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) -static struct platform_device cmx2xx_ts_device = { - .name = "ucb1400_core", - .id = -1, -}; - -static void __init cmx2xx_init_touchscreen(void) -{ - platform_device_register(&cmx2xx_ts_device); -} -#else -static inline void cmx2xx_init_touchscreen(void) {} -#endif - -/* CM-X270 LEDs */ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static struct gpio_led cmx2xx_leds[] = { - [0] = { - .name = "cm-x2xx:red", - .default_trigger = "nand-disk", - .active_low = 1, - }, - [1] = { - .name = "cm-x2xx:green", - .default_trigger = "heartbeat", - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data cmx2xx_gpio_led_pdata = { - .num_leds = ARRAY_SIZE(cmx2xx_leds), - .leds = cmx2xx_leds, -}; - -static struct platform_device cmx2xx_led_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &cmx2xx_gpio_led_pdata, - }, -}; - -static void __init cmx2xx_init_leds(void) -{ - if (cpu_is_pxa25x()) { - cmx2xx_leds[0].gpio = CMX255_GPIO_RED; - cmx2xx_leds[1].gpio = CMX255_GPIO_GREEN; - } else { - cmx2xx_leds[0].gpio = CMX270_GPIO_RED; - cmx2xx_leds[1].gpio = CMX270_GPIO_GREEN; - } - platform_device_register(&cmx2xx_led_device); -} -#else -static inline void cmx2xx_init_leds(void) {} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -/* - Display definitions - keep these for backwards compatibility, although symbolic names (as - e.g. in lpd270.c) looks better -*/ -#define MTYPE_STN320x240 0 -#define MTYPE_TFT640x480 1 -#define MTYPE_CRT640x480 2 -#define MTYPE_CRT800x600 3 -#define MTYPE_TFT320x240 6 -#define MTYPE_STN640x480 7 - -static struct pxafb_mode_info generic_stn_320x240_mode = { - .pixclock = 76923, - .bpp = 8, - .xres = 320, - .yres = 240, - .hsync_len = 3, - .vsync_len = 2, - .left_margin = 3, - .upper_margin = 0, - .right_margin = 3, - .lower_margin = 0, - .sync = (FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT), - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_stn_320x240 = { - .modes = &generic_stn_320x240_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_STN_8BPP | LCD_PCLK_EDGE_FALL |\ - LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mode_info generic_tft_640x480_mode = { - .pixclock = 38461, - .bpp = 8, - .xres = 640, - .yres = 480, - .hsync_len = 60, - .vsync_len = 2, - .left_margin = 70, - .upper_margin = 10, - .right_margin = 70, - .lower_margin = 5, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_tft_640x480 = { - .modes = &generic_tft_640x480_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_8BPP | LCD_PCLK_EDGE_FALL |\ - LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mode_info generic_crt_640x480_mode = { - .pixclock = 38461, - .bpp = 8, - .xres = 640, - .yres = 480, - .hsync_len = 63, - .vsync_len = 2, - .left_margin = 81, - .upper_margin = 33, - .right_margin = 16, - .lower_margin = 10, - .sync = (FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT), - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_crt_640x480 = { - .modes = &generic_crt_640x480_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_8BPP | LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mode_info generic_crt_800x600_mode = { - .pixclock = 28846, - .bpp = 8, - .xres = 800, - .yres = 600, - .hsync_len = 63, - .vsync_len = 2, - .left_margin = 26, - .upper_margin = 21, - .right_margin = 26, - .lower_margin = 11, - .sync = (FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT), - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_crt_800x600 = { - .modes = &generic_crt_800x600_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_8BPP | LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mode_info generic_tft_320x240_mode = { - .pixclock = 134615, - .bpp = 16, - .xres = 320, - .yres = 240, - .hsync_len = 63, - .vsync_len = 7, - .left_margin = 75, - .upper_margin = 0, - .right_margin = 15, - .lower_margin = 15, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_tft_320x240 = { - .modes = &generic_tft_320x240_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mode_info generic_stn_640x480_mode = { - .pixclock = 57692, - .bpp = 8, - .xres = 640, - .yres = 480, - .hsync_len = 4, - .vsync_len = 2, - .left_margin = 10, - .upper_margin = 5, - .right_margin = 10, - .lower_margin = 5, - .sync = (FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT), - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info generic_stn_640x480 = { - .modes = &generic_stn_640x480_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_STN_8BPP | LCD_AC_BIAS_FREQ(0xff), - .cmap_inverse = 0, - .cmap_static = 0, -}; - -static struct pxafb_mach_info *cmx2xx_display = &generic_crt_640x480; - -static int __init cmx2xx_set_display(char *str) -{ - int disp_type = simple_strtol(str, NULL, 0); - switch (disp_type) { - case MTYPE_STN320x240: - cmx2xx_display = &generic_stn_320x240; - break; - case MTYPE_TFT640x480: - cmx2xx_display = &generic_tft_640x480; - break; - case MTYPE_CRT640x480: - cmx2xx_display = &generic_crt_640x480; - break; - case MTYPE_CRT800x600: - cmx2xx_display = &generic_crt_800x600; - break; - case MTYPE_TFT320x240: - cmx2xx_display = &generic_tft_320x240; - break; - case MTYPE_STN640x480: - cmx2xx_display = &generic_stn_640x480; - break; - default: /* fallback to CRT 640x480 */ - cmx2xx_display = &generic_crt_640x480; - break; - } - return 1; -} - -/* - This should be done really early to get proper configuration for - frame buffer. - Indeed, pxafb parameters can be used istead, but CM-X2XX bootloader - has limitied line length for kernel command line, and also it will - break compatibitlty with proprietary releases already in field. -*/ -__setup("monitor=", cmx2xx_set_display); - -static void __init cmx2xx_init_display(void) -{ - pxa_set_fb_info(NULL, cmx2xx_display); -} -#else -static inline void cmx2xx_init_display(void) {} -#endif - -#ifdef CONFIG_PM -static unsigned long sleep_save_msc[10]; - -static int cmx2xx_suspend(void) -{ - cmx2xx_pci_suspend(); - - /* save MSC registers */ - sleep_save_msc[0] = __raw_readl(MSC0); - sleep_save_msc[1] = __raw_readl(MSC1); - sleep_save_msc[2] = __raw_readl(MSC2); - - /* setup power saving mode registers */ - PCFR = 0x0; - PSLR = 0xff400000; - PMCR = 0x00000005; - PWER = 0x80000000; - PFER = 0x00000000; - PRER = 0x00000000; - PGSR0 = 0xC0018800; - PGSR1 = 0x004F0002; - PGSR2 = 0x6021C000; - PGSR3 = 0x00020000; - - return 0; -} - -static void cmx2xx_resume(void) -{ - cmx2xx_pci_resume(); - - /* restore MSC registers */ - __raw_writel(sleep_save_msc[0], MSC0); - __raw_writel(sleep_save_msc[1], MSC1); - __raw_writel(sleep_save_msc[2], MSC2); -} - -static struct syscore_ops cmx2xx_pm_syscore_ops = { - .resume = cmx2xx_resume, - .suspend = cmx2xx_suspend, -}; - -static int __init cmx2xx_pm_init(void) -{ - register_syscore_ops(&cmx2xx_pm_syscore_ops); - - return 0; -} -#else -static int __init cmx2xx_pm_init(void) { return 0; } -#endif - -#if defined(CONFIG_SND_PXA2XX_AC97) || defined(CONFIG_SND_PXA2XX_AC97_MODULE) -static void __init cmx2xx_init_ac97(void) -{ - pxa_set_ac97_info(NULL); -} -#else -static inline void cmx2xx_init_ac97(void) {} -#endif - -static void __init cmx2xx_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - cmx2xx_pm_init(); - - if (cpu_is_pxa25x()) - cmx255_init(); - else - cmx270_init(); - - cmx2xx_init_dm9000(); - cmx2xx_init_display(); - cmx2xx_init_ac97(); - cmx2xx_init_touchscreen(); - cmx2xx_init_leds(); -} - -static void __init cmx2xx_init_irq(void) -{ - if (cpu_is_pxa25x()) { - pxa25x_init_irq(); - cmx2xx_pci_init_irq(CMX255_GPIO_IT8152_IRQ); - } else { - pxa27x_init_irq(); - cmx2xx_pci_init_irq(CMX270_GPIO_IT8152_IRQ); - } -} - -#ifdef CONFIG_PCI -/* Map PCI companion statically */ -static struct map_desc cmx2xx_io_desc[] __initdata = { - [0] = { /* PCI bridge */ - .virtual = (unsigned long)CMX2XX_IT8152_VIRT, - .pfn = __phys_to_pfn(PXA_CS4_PHYS), - .length = SZ_64M, - .type = MT_DEVICE - }, -}; - -static void __init cmx2xx_map_io(void) -{ - if (cpu_is_pxa25x()) - pxa25x_map_io(); - - if (cpu_is_pxa27x()) - pxa27x_map_io(); - - iotable_init(cmx2xx_io_desc, ARRAY_SIZE(cmx2xx_io_desc)); - - it8152_base_address = CMX2XX_IT8152_VIRT; -} -#else -static void __init cmx2xx_map_io(void) -{ - if (cpu_is_pxa25x()) - pxa25x_map_io(); - - if (cpu_is_pxa27x()) - pxa27x_map_io(); -} -#endif - -MACHINE_START(ARMCORE, "Compulab CM-X2XX") - .atag_offset = 0x100, - .map_io = cmx2xx_map_io, - .nr_irqs = CMX2XX_NR_IRQS, - .init_irq = cmx2xx_init_irq, - /* NOTE: pxa25x_handle_irq() works on PXA27x w/o camera support */ - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = cmx2xx_init, -#ifdef CONFIG_PCI - .dma_zone_size = SZ_64M, -#endif - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x300.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x300.c deleted file mode 100644 index 31327401..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cm-x300.c +++ /dev/null @@ -1,863 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cm-x300.c - * - * Support for the CompuLab CM-X300 modules - * - * Copyright (C) 2008,2009 CompuLab Ltd. - * - * Mike Rapoport <mike@compulab.co.il> - * Igor Grinberg <grinberg@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#define pr_fmt(fmt) "%s: " fmt, __func__ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/interrupt.h> -#include <linux/init.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/clk.h> - -#include <linux/gpio.h> -#include <linux/dm9000.h> -#include <linux/leds.h> -#include <linux/rtc-v3020.h> -#include <linux/pwm_backlight.h> - -#include <linux/i2c.h> -#include <linux/i2c/pca953x.h> -#include <linux/i2c/pxa-i2c.h> - -#include <linux/mfd/da903x.h> -#include <linux/regulator/machine.h> -#include <linux/power_supply.h> -#include <linux/apm-emulation.h> - -#include <linux/spi/spi.h> -#include <linux/spi/spi_gpio.h> -#include <linux/spi/tdo24m.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/setup.h> -#include <asm/system_info.h> - -#include <mach/pxa300.h> -#include <mach/pxa27x-udc.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <plat/pxa3xx_nand.h> -#include <mach/audio.h> -#include <mach/pxa3xx-u2d.h> - -#include <asm/mach/map.h> - -#include "generic.h" -#include "devices.h" - -#define CM_X300_ETH_PHYS 0x08000010 - -#define GPIO82_MMC_IRQ (82) -#define GPIO85_MMC_WP (85) - -#define CM_X300_MMC_IRQ PXA_GPIO_TO_IRQ(GPIO82_MMC_IRQ) - -#define GPIO95_RTC_CS (95) -#define GPIO96_RTC_WR (96) -#define GPIO97_RTC_RD (97) -#define GPIO98_RTC_IO (98) - -#define GPIO_ULPI_PHY_RST (127) - -static mfp_cfg_t cm_x3xx_mfp_cfg[] __initdata = { - /* LCD */ - GPIO54_LCD_LDD_0, - GPIO55_LCD_LDD_1, - GPIO56_LCD_LDD_2, - GPIO57_LCD_LDD_3, - GPIO58_LCD_LDD_4, - GPIO59_LCD_LDD_5, - GPIO60_LCD_LDD_6, - GPIO61_LCD_LDD_7, - GPIO62_LCD_LDD_8, - GPIO63_LCD_LDD_9, - GPIO64_LCD_LDD_10, - GPIO65_LCD_LDD_11, - GPIO66_LCD_LDD_12, - GPIO67_LCD_LDD_13, - GPIO68_LCD_LDD_14, - GPIO69_LCD_LDD_15, - GPIO72_LCD_FCLK, - GPIO73_LCD_LCLK, - GPIO74_LCD_PCLK, - GPIO75_LCD_BIAS, - - /* BTUART */ - GPIO111_UART2_RTS, - GPIO112_UART2_RXD | MFP_LPM_EDGE_FALL, - GPIO113_UART2_TXD, - GPIO114_UART2_CTS | MFP_LPM_EDGE_BOTH, - - /* STUART */ - GPIO109_UART3_TXD, - GPIO110_UART3_RXD | MFP_LPM_EDGE_FALL, - - /* AC97 */ - GPIO23_AC97_nACRESET, - GPIO24_AC97_SYSCLK, - GPIO29_AC97_BITCLK, - GPIO25_AC97_SDATA_IN_0, - GPIO27_AC97_SDATA_OUT, - GPIO28_AC97_SYNC, - - /* Keypad */ - GPIO115_KP_MKIN_0 | MFP_LPM_EDGE_BOTH, - GPIO116_KP_MKIN_1 | MFP_LPM_EDGE_BOTH, - GPIO117_KP_MKIN_2 | MFP_LPM_EDGE_BOTH, - GPIO118_KP_MKIN_3 | MFP_LPM_EDGE_BOTH, - GPIO119_KP_MKIN_4 | MFP_LPM_EDGE_BOTH, - GPIO120_KP_MKIN_5 | MFP_LPM_EDGE_BOTH, - GPIO2_2_KP_MKIN_6 | MFP_LPM_EDGE_BOTH, - GPIO3_2_KP_MKIN_7 | MFP_LPM_EDGE_BOTH, - GPIO121_KP_MKOUT_0, - GPIO122_KP_MKOUT_1, - GPIO123_KP_MKOUT_2, - GPIO124_KP_MKOUT_3, - GPIO125_KP_MKOUT_4, - GPIO4_2_KP_MKOUT_5, - - /* MMC1 */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, /* CMD0 for slot 0 */ - - /* MMC2 */ - GPIO9_MMC2_DAT0, - GPIO10_MMC2_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO11_MMC2_DAT2, - GPIO12_MMC2_DAT3, - GPIO13_MMC2_CLK, - GPIO14_MMC2_CMD, - - /* FFUART */ - GPIO30_UART1_RXD | MFP_LPM_EDGE_FALL, - GPIO31_UART1_TXD, - GPIO32_UART1_CTS, - GPIO37_UART1_RTS, - GPIO33_UART1_DCD, - GPIO34_UART1_DSR | MFP_LPM_EDGE_FALL, - GPIO35_UART1_RI, - GPIO36_UART1_DTR, - - /* GPIOs */ - GPIO82_GPIO | MFP_PULL_HIGH, /* MMC CD */ - GPIO85_GPIO, /* MMC WP */ - GPIO99_GPIO, /* Ethernet IRQ */ - - /* RTC GPIOs */ - GPIO95_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC CS */ - GPIO96_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC WR */ - GPIO97_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC RD */ - GPIO98_GPIO, /* RTC IO */ - - /* Standard I2C */ - GPIO21_I2C_SCL, - GPIO22_I2C_SDA, - - /* PWM Backlight */ - GPIO19_PWM2_OUT, -}; - -static mfp_cfg_t cm_x3xx_rev_lt130_mfp_cfg[] __initdata = { - /* GPIOs */ - GPIO79_GPIO, /* LED */ - GPIO77_GPIO, /* WiFi reset */ - GPIO78_GPIO, /* BT reset */ -}; - -static mfp_cfg_t cm_x3xx_rev_ge130_mfp_cfg[] __initdata = { - /* GPIOs */ - GPIO76_GPIO, /* LED */ - GPIO71_GPIO, /* WiFi reset */ - GPIO70_GPIO, /* BT reset */ -}; - -static mfp_cfg_t cm_x310_mfp_cfg[] __initdata = { - /* USB PORT 2 */ - ULPI_STP, - ULPI_NXT, - ULPI_DIR, - GPIO30_ULPI_DATA_OUT_0, - GPIO31_ULPI_DATA_OUT_1, - GPIO32_ULPI_DATA_OUT_2, - GPIO33_ULPI_DATA_OUT_3, - GPIO34_ULPI_DATA_OUT_4, - GPIO35_ULPI_DATA_OUT_5, - GPIO36_ULPI_DATA_OUT_6, - GPIO37_ULPI_DATA_OUT_7, - GPIO38_ULPI_CLK, - /* external PHY reset pin */ - GPIO127_GPIO, - - /* USB PORT 3 */ - GPIO77_USB_P3_1, - GPIO78_USB_P3_2, - GPIO79_USB_P3_3, - GPIO80_USB_P3_4, - GPIO81_USB_P3_5, - GPIO82_USB_P3_6, - GPIO0_2_USBH_PEN, -}; - -#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) -static struct resource dm9000_resources[] = { - [0] = { - .start = CM_X300_ETH_PHYS, - .end = CM_X300_ETH_PHYS + 0x3, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = CM_X300_ETH_PHYS + 0x4, - .end = CM_X300_ETH_PHYS + 0x4 + 500, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO99)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO99)), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct dm9000_plat_data cm_x300_dm9000_platdata = { - .flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM, -}; - -static struct platform_device dm9000_device = { - .name = "dm9000", - .id = 0, - .num_resources = ARRAY_SIZE(dm9000_resources), - .resource = dm9000_resources, - .dev = { - .platform_data = &cm_x300_dm9000_platdata, - } - -}; - -static void __init cm_x300_init_dm9000(void) -{ - platform_device_register(&dm9000_device); -} -#else -static inline void cm_x300_init_dm9000(void) {} -#endif - -/* LCD */ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info cm_x300_lcd_modes[] = { - [0] = { - .pixclock = 38250, - .bpp = 16, - .xres = 480, - .yres = 640, - .hsync_len = 8, - .vsync_len = 2, - .left_margin = 8, - .upper_margin = 2, - .right_margin = 24, - .lower_margin = 4, - .cmap_greyscale = 0, - }, - [1] = { - .pixclock = 153800, - .bpp = 16, - .xres = 240, - .yres = 320, - .hsync_len = 8, - .vsync_len = 2, - .left_margin = 8, - .upper_margin = 2, - .right_margin = 88, - .lower_margin = 2, - .cmap_greyscale = 0, - }, -}; - -static struct pxafb_mach_info cm_x300_lcd = { - .modes = cm_x300_lcd_modes, - .num_modes = ARRAY_SIZE(cm_x300_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static void __init cm_x300_init_lcd(void) -{ - pxa_set_fb_info(NULL, &cm_x300_lcd); -} -#else -static inline void cm_x300_init_lcd(void) {} -#endif - -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -static struct platform_pwm_backlight_data cm_x300_backlight_data = { - .pwm_id = 2, - .max_brightness = 100, - .dft_brightness = 100, - .pwm_period_ns = 10000, -}; - -static struct platform_device cm_x300_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &cm_x300_backlight_data, - }, -}; - -static void cm_x300_init_bl(void) -{ - platform_device_register(&cm_x300_backlight_device); -} -#else -static inline void cm_x300_init_bl(void) {} -#endif - -#if defined(CONFIG_SPI_GPIO) || defined(CONFIG_SPI_GPIO_MODULE) -#define GPIO_LCD_BASE (144) -#define GPIO_LCD_DIN (GPIO_LCD_BASE + 8) /* aux_gpio3_0 */ -#define GPIO_LCD_DOUT (GPIO_LCD_BASE + 9) /* aux_gpio3_1 */ -#define GPIO_LCD_SCL (GPIO_LCD_BASE + 10) /* aux_gpio3_2 */ -#define GPIO_LCD_CS (GPIO_LCD_BASE + 11) /* aux_gpio3_3 */ -#define LCD_SPI_BUS_NUM (1) - -static struct spi_gpio_platform_data cm_x300_spi_gpio_pdata = { - .sck = GPIO_LCD_SCL, - .mosi = GPIO_LCD_DIN, - .miso = GPIO_LCD_DOUT, - .num_chipselect = 1, -}; - -static struct platform_device cm_x300_spi_gpio = { - .name = "spi_gpio", - .id = LCD_SPI_BUS_NUM, - .dev = { - .platform_data = &cm_x300_spi_gpio_pdata, - }, -}; - -static struct tdo24m_platform_data cm_x300_tdo24m_pdata = { - .model = TDO35S, -}; - -static struct spi_board_info cm_x300_spi_devices[] __initdata = { - { - .modalias = "tdo24m", - .max_speed_hz = 1000000, - .bus_num = LCD_SPI_BUS_NUM, - .chip_select = 0, - .controller_data = (void *) GPIO_LCD_CS, - .platform_data = &cm_x300_tdo24m_pdata, - }, -}; - -static void __init cm_x300_init_spi(void) -{ - spi_register_board_info(cm_x300_spi_devices, - ARRAY_SIZE(cm_x300_spi_devices)); - platform_device_register(&cm_x300_spi_gpio); -} -#else -static inline void cm_x300_init_spi(void) {} -#endif - -#if defined(CONFIG_SND_PXA2XX_LIB_AC97) -static void __init cm_x300_init_ac97(void) -{ - pxa_set_ac97_info(NULL); -} -#else -static inline void cm_x300_init_ac97(void) {} -#endif - -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -static struct mtd_partition cm_x300_nand_partitions[] = { - [0] = { - .name = "OBM", - .offset = 0, - .size = SZ_256K, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [1] = { - .name = "U-Boot", - .offset = MTDPART_OFS_APPEND, - .size = SZ_256K, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [2] = { - .name = "Environment", - .offset = MTDPART_OFS_APPEND, - .size = SZ_256K, - }, - [3] = { - .name = "reserved", - .offset = MTDPART_OFS_APPEND, - .size = SZ_256K + SZ_1M, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [4] = { - .name = "kernel", - .offset = MTDPART_OFS_APPEND, - .size = SZ_4M, - }, - [5] = { - .name = "fs", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct pxa3xx_nand_platform_data cm_x300_nand_info = { - .enable_arbiter = 1, - .keep_config = 1, - .num_cs = 1, - .parts[0] = cm_x300_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(cm_x300_nand_partitions), -}; - -static void __init cm_x300_init_nand(void) -{ - pxa3xx_set_nand_info(&cm_x300_nand_info); -} -#else -static inline void cm_x300_init_nand(void) {} -#endif - -#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) -static struct pxamci_platform_data cm_x300_mci_platform_data = { - .detect_delay_ms = 200, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = GPIO82_MMC_IRQ, - .gpio_card_ro = GPIO85_MMC_WP, - .gpio_power = -1, -}; - -/* The second MMC slot of CM-X300 is hardwired to Libertas card and has - no detection/ro pins */ -static int cm_x300_mci2_init(struct device *dev, - irq_handler_t cm_x300_detect_int, - void *data) -{ - return 0; -} - -static void cm_x300_mci2_exit(struct device *dev, void *data) -{ -} - -static struct pxamci_platform_data cm_x300_mci2_platform_data = { - .detect_delay_ms = 200, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .init = cm_x300_mci2_init, - .exit = cm_x300_mci2_exit, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void __init cm_x300_init_mmc(void) -{ - pxa_set_mci_info(&cm_x300_mci_platform_data); - pxa3xx_set_mci2_info(&cm_x300_mci2_platform_data); -} -#else -static inline void cm_x300_init_mmc(void) {} -#endif - -#if defined(CONFIG_PXA310_ULPI) -static struct clk *pout_clk; - -static int cm_x300_ulpi_phy_reset(void) -{ - int err; - - /* reset the PHY */ - err = gpio_request_one(GPIO_ULPI_PHY_RST, GPIOF_OUT_INIT_LOW, - "ulpi reset"); - if (err) { - pr_err("failed to request ULPI reset GPIO: %d\n", err); - return err; - } - - msleep(10); - gpio_set_value(GPIO_ULPI_PHY_RST, 1); - msleep(10); - - gpio_free(GPIO_ULPI_PHY_RST); - - return 0; -} - -static inline int cm_x300_u2d_init(struct device *dev) -{ - int err = 0; - - if (cpu_is_pxa310()) { - /* CLK_POUT is connected to the ULPI PHY */ - pout_clk = clk_get(NULL, "CLK_POUT"); - if (IS_ERR(pout_clk)) { - err = PTR_ERR(pout_clk); - pr_err("failed to get CLK_POUT: %d\n", err); - return err; - } - clk_enable(pout_clk); - - err = cm_x300_ulpi_phy_reset(); - if (err) { - clk_disable(pout_clk); - clk_put(pout_clk); - } - } - - return err; -} - -static void cm_x300_u2d_exit(struct device *dev) -{ - if (cpu_is_pxa310()) { - clk_disable(pout_clk); - clk_put(pout_clk); - } -} - -static struct pxa3xx_u2d_platform_data cm_x300_u2d_platform_data = { - .ulpi_mode = ULPI_SER_6PIN, - .init = cm_x300_u2d_init, - .exit = cm_x300_u2d_exit, -}; - -static void cm_x300_init_u2d(void) -{ - pxa3xx_set_u2d_info(&cm_x300_u2d_platform_data); -} -#else -static inline void cm_x300_init_u2d(void) {} -#endif - -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static int cm_x300_ohci_init(struct device *dev) -{ - if (cpu_is_pxa300()) - UP2OCR = UP2OCR_HXS - | UP2OCR_HXOE | UP2OCR_DMPDE | UP2OCR_DPPDE; - - return 0; -} - -static struct pxaohci_platform_data cm_x300_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW, - .init = cm_x300_ohci_init, -}; - -static void __init cm_x300_init_ohci(void) -{ - pxa_set_ohci_info(&cm_x300_ohci_platform_data); -} -#else -static inline void cm_x300_init_ohci(void) {} -#endif - -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static struct gpio_led cm_x300_leds[] = { - [0] = { - .name = "cm-x300:green", - .default_trigger = "heartbeat", - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data cm_x300_gpio_led_pdata = { - .num_leds = ARRAY_SIZE(cm_x300_leds), - .leds = cm_x300_leds, -}; - -static struct platform_device cm_x300_led_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &cm_x300_gpio_led_pdata, - }, -}; - -static void __init cm_x300_init_leds(void) -{ - if (system_rev < 130) - cm_x300_leds[0].gpio = 79; - else - cm_x300_leds[0].gpio = 76; - - platform_device_register(&cm_x300_led_device); -} -#else -static inline void cm_x300_init_leds(void) {} -#endif - -#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) -/* PCA9555 */ -static struct pca953x_platform_data cm_x300_gpio_ext_pdata_0 = { - .gpio_base = 128, -}; - -static struct pca953x_platform_data cm_x300_gpio_ext_pdata_1 = { - .gpio_base = 144, -}; - -static struct i2c_board_info cm_x300_gpio_ext_info[] = { - [0] = { - I2C_BOARD_INFO("pca9555", 0x24), - .platform_data = &cm_x300_gpio_ext_pdata_0, - }, - [1] = { - I2C_BOARD_INFO("pca9555", 0x25), - .platform_data = &cm_x300_gpio_ext_pdata_1, - }, -}; - -static void __init cm_x300_init_i2c(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, cm_x300_gpio_ext_info, - ARRAY_SIZE(cm_x300_gpio_ext_info)); -} -#else -static inline void cm_x300_init_i2c(void) {} -#endif - -#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) -struct v3020_platform_data cm_x300_v3020_pdata = { - .use_gpio = 1, - .gpio_cs = GPIO95_RTC_CS, - .gpio_wr = GPIO96_RTC_WR, - .gpio_rd = GPIO97_RTC_RD, - .gpio_io = GPIO98_RTC_IO, -}; - -static struct platform_device cm_x300_rtc_device = { - .name = "v3020", - .id = -1, - .dev = { - .platform_data = &cm_x300_v3020_pdata, - } -}; - -static void __init cm_x300_init_rtc(void) -{ - platform_device_register(&cm_x300_rtc_device); -} -#else -static inline void cm_x300_init_rtc(void) {} -#endif - -/* Battery */ -struct power_supply_info cm_x300_psy_info = { - .name = "battery", - .technology = POWER_SUPPLY_TECHNOLOGY_LIPO, - .voltage_max_design = 4200000, - .voltage_min_design = 3000000, - .use_for_apm = 1, -}; - -static void cm_x300_battery_low(void) -{ -#if defined(CONFIG_APM_EMULATION) - apm_queue_event(APM_LOW_BATTERY); -#endif -} - -static void cm_x300_battery_critical(void) -{ -#if defined(CONFIG_APM_EMULATION) - apm_queue_event(APM_CRITICAL_SUSPEND); -#endif -} - -struct da9030_battery_info cm_x300_battery_info = { - .battery_info = &cm_x300_psy_info, - - .charge_milliamp = 1000, - .charge_millivolt = 4200, - - .vbat_low = 3600, - .vbat_crit = 3400, - .vbat_charge_start = 4100, - .vbat_charge_stop = 4200, - .vbat_charge_restart = 4000, - - .vcharge_min = 3200, - .vcharge_max = 5500, - - .tbat_low = 197, - .tbat_high = 78, - .tbat_restart = 100, - - .batmon_interval = 0, - - .battery_low = cm_x300_battery_low, - .battery_critical = cm_x300_battery_critical, -}; - -static struct regulator_consumer_supply buck2_consumers[] = { - { - .supply = "vcc_core", - }, -}; - -static struct regulator_init_data buck2_data = { - .constraints = { - .min_uV = 1375000, - .max_uV = 1375000, - .state_mem = { - .enabled = 0, - }, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .apply_uV = 1, - }, - .num_consumer_supplies = ARRAY_SIZE(buck2_consumers), - .consumer_supplies = buck2_consumers, -}; - -/* DA9030 */ -struct da903x_subdev_info cm_x300_da9030_subdevs[] = { - { - .name = "da903x-battery", - .id = DA9030_ID_BAT, - .platform_data = &cm_x300_battery_info, - }, - { - .name = "da903x-regulator", - .id = DA9030_ID_BUCK2, - .platform_data = &buck2_data, - }, -}; - -static struct da903x_platform_data cm_x300_da9030_info = { - .num_subdevs = ARRAY_SIZE(cm_x300_da9030_subdevs), - .subdevs = cm_x300_da9030_subdevs, -}; - -static struct i2c_board_info cm_x300_pmic_info = { - I2C_BOARD_INFO("da9030", 0x49), - .irq = IRQ_WAKEUP0, - .platform_data = &cm_x300_da9030_info, -}; - -static struct i2c_pxa_platform_data cm_x300_pwr_i2c_info = { - .use_pio = 1, -}; - -static void __init cm_x300_init_da9030(void) -{ - pxa3xx_set_i2c_power_info(&cm_x300_pwr_i2c_info); - i2c_register_board_info(1, &cm_x300_pmic_info, 1); - irq_set_irq_wake(IRQ_WAKEUP0, 1); -} - -/* wi2wi gpio setting for system_rev >= 130 */ -static struct gpio cm_x300_wi2wi_gpios[] __initdata = { - { 71, GPIOF_OUT_INIT_HIGH, "wlan en" }, - { 70, GPIOF_OUT_INIT_HIGH, "bt reset" }, -}; - -static void __init cm_x300_init_wi2wi(void) -{ - int err; - - if (system_rev < 130) { - cm_x300_wi2wi_gpios[0].gpio = 77; /* wlan en */ - cm_x300_wi2wi_gpios[1].gpio = 78; /* bt reset */ - } - - /* Libertas and CSR reset */ - err = gpio_request_array(ARRAY_AND_SIZE(cm_x300_wi2wi_gpios)); - if (err) { - pr_err("failed to request wifi/bt gpios: %d\n", err); - return; - } - - udelay(10); - gpio_set_value(cm_x300_wi2wi_gpios[1].gpio, 0); - udelay(10); - gpio_set_value(cm_x300_wi2wi_gpios[1].gpio, 1); - - gpio_free_array(ARRAY_AND_SIZE(cm_x300_wi2wi_gpios)); -} - -/* MFP */ -static void __init cm_x300_init_mfp(void) -{ - /* board-processor specific GPIO initialization */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x3xx_mfp_cfg)); - - if (system_rev < 130) - pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x3xx_rev_lt130_mfp_cfg)); - else - pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x3xx_rev_ge130_mfp_cfg)); - - if (cpu_is_pxa310()) - pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x310_mfp_cfg)); -} - -static void __init cm_x300_init(void) -{ - cm_x300_init_mfp(); - - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - if (cpu_is_pxa300()) - pxa_set_ffuart_info(NULL); - - cm_x300_init_da9030(); - cm_x300_init_dm9000(); - cm_x300_init_lcd(); - cm_x300_init_u2d(); - cm_x300_init_ohci(); - cm_x300_init_mmc(); - cm_x300_init_nand(); - cm_x300_init_leds(); - cm_x300_init_i2c(); - cm_x300_init_spi(); - cm_x300_init_rtc(); - cm_x300_init_ac97(); - cm_x300_init_wi2wi(); - cm_x300_init_bl(); -} - -static void __init cm_x300_fixup(struct tag *tags, char **cmdline, - struct meminfo *mi) -{ - /* Make sure that mi->bank[0].start = PHYS_ADDR */ - for (; tags->hdr.size; tags = tag_next(tags)) - if (tags->hdr.tag == ATAG_MEM && - tags->u.mem.start == 0x80000000) { - tags->u.mem.start = 0xa0000000; - break; - } -} - -MACHINE_START(CM_X300, "CM-X300 module") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = cm_x300_init, - .fixup = cm_x300_fixup, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-evalboard.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-evalboard.c deleted file mode 100644 index d28e802e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-evalboard.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/colibri-evalboard.c - * - * Support for Toradex Colibri Evaluation Carrier Board - * Daniel Mack <daniel@caiaq.de> - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/gpio.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/mach/arch.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> - -#include <mach/pxa27x.h> -#include <mach/colibri.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/pxa27x-udc.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data colibri_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_power = -1, - .gpio_card_ro = -1, - .detect_delay_ms = 200, -}; - -static void __init colibri_mmc_init(void) -{ - if (machine_is_colibri()) /* PXA270 Colibri */ - colibri_mci_platform_data.gpio_card_detect = - GPIO0_COLIBRI_PXA270_SD_DETECT; - if (machine_is_colibri300()) /* PXA300 Colibri */ - colibri_mci_platform_data.gpio_card_detect = - GPIO13_COLIBRI_PXA300_SD_DETECT; - else /* PXA320 Colibri */ - colibri_mci_platform_data.gpio_card_detect = - GPIO28_COLIBRI_PXA320_SD_DETECT; - - pxa_set_mci_info(&colibri_mci_platform_data); -} -#else -static inline void colibri_mmc_init(void) {} -#endif - -/****************************************************************************** - * USB Host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static int colibri_ohci_init(struct device *dev) -{ - UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; - return 0; -} - -static struct pxaohci_platform_data colibri_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | - POWER_CONTROL_LOW | POWER_SENSE_LOW, - .init = colibri_ohci_init, -}; - -static void __init colibri_uhc_init(void) -{ - /* Colibri PXA270 has two usb ports, TBA for 320 */ - if (machine_is_colibri()) - colibri_ohci_info.flags |= ENABLE_PORT2; - - pxa_set_ohci_info(&colibri_ohci_info); -} -#else -static inline void colibri_uhc_init(void) {} -#endif - -/****************************************************************************** - * I2C RTC - ******************************************************************************/ -#if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE) -static struct i2c_board_info __initdata colibri_i2c_devs[] = { - { - I2C_BOARD_INFO("m41t00", 0x68), - }, -}; - -static void __init colibri_rtc_init(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(colibri_i2c_devs)); -} -#else -static inline void colibri_rtc_init(void) {} -#endif - -void __init colibri_evalboard_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - colibri_mmc_init(); - colibri_uhc_init(); - colibri_rtc_init(); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270-income.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270-income.c deleted file mode 100644 index 248804bb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270-income.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/income.c - * - * Support for Income s.r.o. SH-Dmaster PXA270 SBC - * - * Copyright (C) 2010 - * Marek Vasut <marek.vasut@gmail.com> - * Pavel Revak <palo@bielyvlk.sk> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/bitops.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/init.h> -#include <linux/interrupt.h> -#include <linux/ioport.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/pwm_backlight.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/irq.h> -#include <asm/mach-types.h> - -#include <mach/hardware.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/pxa27x.h> -#include <mach/pxa27x-udc.h> -#include <mach/pxafb.h> - -#include "devices.h" -#include "generic.h" - -#define GPIO114_INCOME_ETH_IRQ (114) -#define GPIO0_INCOME_SD_DETECT (0) -#define GPIO0_INCOME_SD_RO (1) -#define GPIO54_INCOME_LED_A (54) -#define GPIO55_INCOME_LED_B (55) -#define GPIO113_INCOME_TS_IRQ (113) - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data income_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_power = -1, - .gpio_card_detect = GPIO0_INCOME_SD_DETECT, - .gpio_card_ro = GPIO0_INCOME_SD_RO, - .detect_delay_ms = 200, -}; - -static void __init income_mmc_init(void) -{ - pxa_set_mci_info(&income_mci_platform_data); -} -#else -static inline void income_mmc_init(void) {} -#endif - -/****************************************************************************** - * USB Host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static struct pxaohci_platform_data income_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -static void __init income_uhc_init(void) -{ - pxa_set_ohci_info(&income_ohci_info); -} -#else -static inline void income_uhc_init(void) {} -#endif - -/****************************************************************************** - * LED - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -struct gpio_led income_gpio_leds[] = { - { - .name = "income:green:leda", - .default_trigger = "none", - .gpio = GPIO54_INCOME_LED_A, - .active_low = 1, - }, - { - .name = "income:green:ledb", - .default_trigger = "none", - .gpio = GPIO55_INCOME_LED_B, - .active_low = 1, - } -}; - -static struct gpio_led_platform_data income_gpio_led_info = { - .leds = income_gpio_leds, - .num_leds = ARRAY_SIZE(income_gpio_leds), -}; - -static struct platform_device income_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &income_gpio_led_info, - } -}; - -static void __init income_led_init(void) -{ - platform_device_register(&income_leds); -} -#else -static inline void income_led_init(void) {} -#endif - -/****************************************************************************** - * I2C - ******************************************************************************/ -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct i2c_board_info __initdata income_i2c_devs[] = { - { - I2C_BOARD_INFO("ds1340", 0x68), - }, { - I2C_BOARD_INFO("lm75", 0x4f), - }, -}; - -static void __init income_i2c_init(void) -{ - pxa_set_i2c_info(NULL); - pxa27x_set_i2c_power_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(income_i2c_devs)); -} -#else -static inline void income_i2c_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info income_lcd_modes[] = { -{ - .pixclock = 144700, - .xres = 320, - .yres = 240, - .bpp = 32, - .depth = 18, - - .left_margin = 10, - .right_margin = 10, - .upper_margin = 7, - .lower_margin = 8, - - .hsync_len = 20, - .vsync_len = 2, - - .sync = FB_SYNC_VERT_HIGH_ACT, -}, -}; - -static struct pxafb_mach_info income_lcd_screen = { - .modes = income_lcd_modes, - .num_modes = ARRAY_SIZE(income_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_18BPP | LCD_PCLK_EDGE_FALL, -}; - -static void __init income_lcd_init(void) -{ - pxa_set_fb_info(NULL, &income_lcd_screen); -} -#else -static inline void income_lcd_init(void) {} -#endif - -/****************************************************************************** - * Backlight - ******************************************************************************/ -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -static struct platform_pwm_backlight_data income_backlight_data = { - .pwm_id = 0, - .max_brightness = 0x3ff, - .dft_brightness = 0x1ff, - .pwm_period_ns = 1000000, -}; - -static struct platform_device income_backlight = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &income_backlight_data, - }, -}; - -static void __init income_pwm_init(void) -{ - platform_device_register(&income_backlight); -} -#else -static inline void income_pwm_init(void) {} -#endif - -void __init colibri_pxa270_income_boardinit(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - income_mmc_init(); - income_uhc_init(); - income_led_init(); - income_i2c_init(); - income_lcd_init(); - income_pwm_init(); -} - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270.c deleted file mode 100644 index b2f227d3..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa270.c +++ /dev/null @@ -1,330 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/colibri-pxa270.c - * - * Support for Toradex PXA270 based Colibri module - * Daniel Mack <daniel@caiaq.de> - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/interrupt.h> -#include <linux/moduleparam.h> -#include <linux/kernel.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/platform_device.h> -#include <linux/ucb1400.h> - -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> -#include <asm/mach-types.h> -#include <asm/sizes.h> - -#include <mach/audio.h> -#include <mach/colibri.h> -#include <mach/pxa27x.h> - -#include "devices.h" -#include "generic.h" - -/****************************************************************************** - * Evaluation board MFP - ******************************************************************************/ -#ifdef CONFIG_MACH_COLIBRI_EVALBOARD -static mfp_cfg_t colibri_pxa270_evalboard_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO0_GPIO, /* SD detect */ - - /* FFUART */ - GPIO39_FFUART_TXD, - GPIO34_FFUART_RXD, - - /* UHC */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - GPIO119_USBH2_PWR, - GPIO120_USBH2_PEN, - - /* PCMCIA */ - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO49_nPWE, - GPIO48_nPOE, - GPIO57_nIOIS16, - GPIO56_nPWAIT, - GPIO104_PSKTSEL, - GPIO53_GPIO, /* RESET */ - GPIO83_GPIO, /* BVD1 */ - GPIO82_GPIO, /* BVD2 */ - GPIO1_GPIO, /* READY */ - GPIO84_GPIO, /* DETECT */ - GPIO107_GPIO, /* PPEN */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, -}; -#else -static mfp_cfg_t colibri_pxa270_evalboard_pin_config[] __initdata = {}; -#endif - -#ifdef CONFIG_MACH_COLIBRI_PXA270_INCOME -static mfp_cfg_t income_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO0_GPIO, /* SD detect */ - GPIO1_GPIO, /* SD read-only */ - - /* FFUART */ - GPIO39_FFUART_TXD, - GPIO34_FFUART_RXD, - - /* BFUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO45_BTUART_RTS, - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* UHC */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* LED */ - GPIO54_GPIO, /* LED A */ - GPIO55_GPIO, /* LED B */ -}; -#else -static mfp_cfg_t income_pin_config[] __initdata = {}; -#endif - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static mfp_cfg_t colibri_pxa270_pin_config[] __initdata = { - /* Ethernet */ - GPIO78_nCS_2, /* Ethernet CS */ - GPIO114_GPIO, /* Ethernet IRQ */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO95_AC97_nRESET, - GPIO98_AC97_SYSCLK, - GPIO113_GPIO, /* Touchscreen IRQ */ -}; - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition colibri_partitions[] = { - { - .name = "Bootloader", - .offset = 0x00000000, - .size = 0x00040000, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, { - .name = "Kernel", - .offset = 0x00040000, - .size = 0x00400000, - .mask_flags = 0 - }, { - .name = "Rootfs", - .offset = 0x00440000, - .size = MTDPART_SIZ_FULL, - .mask_flags = 0 - } -}; - -static struct physmap_flash_data colibri_flash_data[] = { - { - .width = 4, /* bankwidth in bytes */ - .parts = colibri_partitions, - .nr_parts = ARRAY_SIZE(colibri_partitions) - } -}; - -static struct resource colibri_pxa270_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device colibri_pxa270_flash_device = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = colibri_flash_data, - }, - .resource = &colibri_pxa270_flash_resource, - .num_resources = 1, -}; - -static void __init colibri_pxa270_nor_init(void) -{ - platform_device_register(&colibri_pxa270_flash_device); -} -#else -static inline void colibri_pxa270_nor_init(void) {} -#endif - -/****************************************************************************** - * Ethernet - ******************************************************************************/ -#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) -static struct resource colibri_pxa270_dm9000_resources[] = { - { - .start = PXA_CS2_PHYS, - .end = PXA_CS2_PHYS + 3, - .flags = IORESOURCE_MEM, - }, - { - .start = PXA_CS2_PHYS + 4, - .end = PXA_CS2_PHYS + 4 + 500, - .flags = IORESOURCE_MEM, - }, - { - .start = PXA_GPIO_TO_IRQ(GPIO114_COLIBRI_PXA270_ETH_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO114_COLIBRI_PXA270_ETH_IRQ), - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING, - }, -}; - -static struct platform_device colibri_pxa270_dm9000_device = { - .name = "dm9000", - .id = -1, - .num_resources = ARRAY_SIZE(colibri_pxa270_dm9000_resources), - .resource = colibri_pxa270_dm9000_resources, -}; - -static void __init colibri_pxa270_eth_init(void) -{ - platform_device_register(&colibri_pxa270_dm9000_device); -} -#else -static inline void colibri_pxa270_eth_init(void) {} -#endif - -/****************************************************************************** - * Audio and Touchscreen - ******************************************************************************/ -#if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ - defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) -static pxa2xx_audio_ops_t colibri_pxa270_ac97_pdata = { - .reset_gpio = 95, -}; - -static struct ucb1400_pdata colibri_pxa270_ucb1400_pdata = { - .irq = PXA_GPIO_TO_IRQ(GPIO113_COLIBRI_PXA270_TS_IRQ), -}; - -static struct platform_device colibri_pxa270_ucb1400_device = { - .name = "ucb1400_core", - .id = -1, - .dev = { - .platform_data = &colibri_pxa270_ucb1400_pdata, - }, -}; - -static void __init colibri_pxa270_tsc_init(void) -{ - pxa_set_ac97_info(&colibri_pxa270_ac97_pdata); - platform_device_register(&colibri_pxa270_ucb1400_device); -} -#else -static inline void colibri_pxa270_tsc_init(void) {} -#endif - -static int colibri_pxa270_baseboard; -core_param(colibri_pxa270_baseboard, colibri_pxa270_baseboard, int, 0444); - -static void __init colibri_pxa270_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa270_pin_config)); - - colibri_pxa270_nor_init(); - colibri_pxa270_eth_init(); - colibri_pxa270_tsc_init(); - - switch (colibri_pxa270_baseboard) { - case COLIBRI_EVALBOARD: - pxa2xx_mfp_config(ARRAY_AND_SIZE( - colibri_pxa270_evalboard_pin_config)); - colibri_evalboard_init(); - break; - case COLIBRI_PXA270_INCOME: - pxa2xx_mfp_config(ARRAY_AND_SIZE(income_pin_config)); - colibri_pxa270_income_boardinit(); - break; - default: - printk(KERN_ERR "Illegal colibri_pxa270_baseboard type %d\n", - colibri_pxa270_baseboard); - } -} - -/* The "Income s.r.o. SH-Dmaster PXA270 SBC" board can be booted either - * with the INCOME mach type or with COLIBRI and the kernel parameter - * "colibri_pxa270_baseboard=1" - */ -static void __init colibri_pxa270_income_init(void) -{ - colibri_pxa270_baseboard = COLIBRI_PXA270_INCOME; - colibri_pxa270_init(); -} - -MACHINE_START(COLIBRI, "Toradex Colibri PXA270") - .atag_offset = 0x100, - .init_machine = colibri_pxa270_init, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - -MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC") - .atag_offset = 0x100, - .init_machine = colibri_pxa270_income_init, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa300.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa300.c deleted file mode 100644 index bb6def8e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa300.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * arch/arm/mach-pxa/colibri-pxa300.c - * - * Support for Toradex PXA300/310 based Colibri module - * - * Daniel Mack <daniel@caiaq.de> - * Matthias Meier <matthias.j.meier@gmx.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> -#include <linux/interrupt.h> - -#include <asm/mach-types.h> -#include <asm/sizes.h> -#include <asm/mach/arch.h> -#include <asm/mach/irq.h> - -#include <mach/pxa300.h> -#include <mach/colibri.h> -#include <mach/ohci.h> -#include <mach/pxafb.h> -#include <mach/audio.h> - -#include "generic.h" -#include "devices.h" - - -#ifdef CONFIG_MACH_COLIBRI_EVALBOARD -static mfp_cfg_t colibri_pxa300_evalboard_pin_config[] __initdata = { - /* MMC */ - GPIO7_MMC1_CLK, - GPIO14_MMC1_CMD, - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO13_GPIO, /* GPIO13_COLIBRI_PXA300_SD_DETECT */ - - /* UHC */ - GPIO0_2_USBH_PEN, - GPIO1_2_USBH_PWR, - GPIO77_USB_P3_1, - GPIO78_USB_P3_2, - GPIO79_USB_P3_3, - GPIO80_USB_P3_4, - GPIO81_USB_P3_5, - GPIO82_USB_P3_6, - - /* I2C */ - GPIO21_I2C_SCL, - GPIO22_I2C_SDA, -}; -#else -static mfp_cfg_t colibri_pxa300_evalboard_pin_config[] __initdata = {}; -#endif - -#if defined(CONFIG_AX88796) -#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO) -/* - * Asix AX88796 Ethernet - */ -static struct ax_plat_data colibri_asix_platdata = { - .flags = 0, /* defined later */ - .wordlength = 2, -}; - -static struct resource colibri_asix_resource[] = { - [0] = { - .start = PXA3xx_CS2_PHYS, - .end = PXA3xx_CS2_PHYS + (0x20 * 2) - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO), - .end = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO), - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING, - } -}; - -static struct platform_device asix_device = { - .name = "ax88796", - .id = 0, - .num_resources = ARRAY_SIZE(colibri_asix_resource), - .resource = colibri_asix_resource, - .dev = { - .platform_data = &colibri_asix_platdata - } -}; - -static mfp_cfg_t colibri_pxa300_eth_pin_config[] __initdata = { - GPIO1_nCS2, /* AX88796 chip select */ - GPIO26_GPIO | MFP_PULL_HIGH /* AX88796 IRQ */ -}; - -static void __init colibri_pxa300_init_eth(void) -{ - colibri_pxa3xx_init_eth(&colibri_asix_platdata); - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_eth_pin_config)); - platform_device_register(&asix_device); -} -#else -static inline void __init colibri_pxa300_init_eth(void) {} -#endif /* CONFIG_AX88796 */ - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static mfp_cfg_t colibri_pxa300_lcd_pin_config[] __initdata = { - GPIO54_LCD_LDD_0, - GPIO55_LCD_LDD_1, - GPIO56_LCD_LDD_2, - GPIO57_LCD_LDD_3, - GPIO58_LCD_LDD_4, - GPIO59_LCD_LDD_5, - GPIO60_LCD_LDD_6, - GPIO61_LCD_LDD_7, - GPIO62_LCD_LDD_8, - GPIO63_LCD_LDD_9, - GPIO64_LCD_LDD_10, - GPIO65_LCD_LDD_11, - GPIO66_LCD_LDD_12, - GPIO67_LCD_LDD_13, - GPIO68_LCD_LDD_14, - GPIO69_LCD_LDD_15, - GPIO70_LCD_LDD_16, - GPIO71_LCD_LDD_17, - GPIO62_LCD_CS_N, - GPIO72_LCD_FCLK, - GPIO73_LCD_LCLK, - GPIO74_LCD_PCLK, - GPIO75_LCD_BIAS, - GPIO76_LCD_VSYNC, -}; - -static void __init colibri_pxa300_init_lcd(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_lcd_pin_config)); -} - -#else -static inline void colibri_pxa300_init_lcd(void) {} -#endif /* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */ - -#if defined(CONFIG_SND_AC97_CODEC) || defined(CONFIG_SND_AC97_CODEC_MODULE) -static mfp_cfg_t colibri_pxa310_ac97_pin_config[] __initdata = { - GPIO24_AC97_SYSCLK, - GPIO23_AC97_nACRESET, - GPIO25_AC97_SDATA_IN_0, - GPIO27_AC97_SDATA_OUT, - GPIO28_AC97_SYNC, - GPIO29_AC97_BITCLK -}; - -static inline void __init colibri_pxa310_init_ac97(void) -{ - /* no AC97 codec on Colibri PXA300 */ - if (!cpu_is_pxa310()) - return; - - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa310_ac97_pin_config)); - pxa_set_ac97_info(NULL); -} -#else -static inline void colibri_pxa310_init_ac97(void) {} -#endif - -void __init colibri_pxa300_init(void) -{ - colibri_pxa300_init_eth(); - colibri_pxa3xx_init_nand(); - colibri_pxa300_init_lcd(); - colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO39_GPIO)); - colibri_pxa310_init_ac97(); - - /* Evalboard init */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_evalboard_pin_config)); - colibri_evalboard_init(); -} - -MACHINE_START(COLIBRI300, "Toradex Colibri PXA300") - .atag_offset = 0x100, - .init_machine = colibri_pxa300_init, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa320.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa320.c deleted file mode 100644 index d88e7b37..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa320.c +++ /dev/null @@ -1,265 +0,0 @@ -/* - * arch/arm/mach-pxa/colibri-pxa320.c - * - * Support for Toradex PXA320/310 based Colibri module - * - * Daniel Mack <daniel@caiaq.de> - * Matthias Meier <matthias.j.meier@gmx.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> -#include <linux/interrupt.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/mach-types.h> -#include <asm/sizes.h> -#include <asm/mach/arch.h> -#include <asm/mach/irq.h> - -#include <mach/pxa320.h> -#include <mach/colibri.h> -#include <mach/pxafb.h> -#include <mach/ohci.h> -#include <mach/audio.h> -#include <mach/pxa27x-udc.h> -#include <mach/udc.h> - -#include "generic.h" -#include "devices.h" - -#ifdef CONFIG_MACH_COLIBRI_EVALBOARD -static mfp_cfg_t colibri_pxa320_evalboard_pin_config[] __initdata = { - /* MMC */ - GPIO22_MMC1_CLK, - GPIO23_MMC1_CMD, - GPIO18_MMC1_DAT0, - GPIO19_MMC1_DAT1, - GPIO20_MMC1_DAT2, - GPIO21_MMC1_DAT3, - GPIO28_GPIO, /* SD detect */ - - /* UART 1 configuration (may be set by bootloader) */ - GPIO99_UART1_CTS, - GPIO104_UART1_RTS, - GPIO97_UART1_RXD, - GPIO98_UART1_TXD, - GPIO101_UART1_DTR, - GPIO103_UART1_DSR, - GPIO100_UART1_DCD, - GPIO102_UART1_RI, - - /* UART 2 configuration */ - GPIO109_UART2_CTS, - GPIO112_UART2_RTS, - GPIO110_UART2_RXD, - GPIO111_UART2_TXD, - - /* UART 3 configuration */ - GPIO30_UART3_RXD, - GPIO31_UART3_TXD, - - /* UHC */ - GPIO2_2_USBH_PEN, - GPIO3_2_USBH_PWR, - - /* I2C */ - GPIO32_I2C_SCL, - GPIO33_I2C_SDA, - - /* PCMCIA */ - MFP_CFG(GPIO59, AF7), /* PRST ; AF7 to tristate */ - MFP_CFG(GPIO61, AF7), /* PCE1 ; AF7 to tristate */ - MFP_CFG(GPIO60, AF7), /* PCE2 ; AF7 to tristate */ - MFP_CFG(GPIO62, AF7), /* PCD ; AF7 to tristate */ - MFP_CFG(GPIO56, AF7), /* PSKTSEL ; AF7 to tristate */ - GPIO27_GPIO, /* RDnWR ; input/tristate */ - GPIO50_GPIO, /* PREG ; input/tristate */ - GPIO2_RDY, - GPIO5_NPIOR, - GPIO6_NPIOW, - GPIO7_NPIOS16, - GPIO8_NPWAIT, - GPIO29_GPIO, /* PRDY (READY GPIO) */ - GPIO57_GPIO, /* PPEN (POWER GPIO) */ - GPIO81_GPIO, /* PCD (DETECT GPIO) */ - GPIO77_GPIO, /* PRST (RESET GPIO) */ - GPIO53_GPIO, /* PBVD1 */ - GPIO79_GPIO, /* PBVD2 */ - GPIO54_GPIO, /* POE */ -}; -#else -static mfp_cfg_t colibri_pxa320_evalboard_pin_config[] __initdata = {}; -#endif - -#if defined(CONFIG_AX88796) -#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO36_GPIO) -/* - * Asix AX88796 Ethernet - */ -static struct ax_plat_data colibri_asix_platdata = { - .flags = 0, /* defined later */ - .wordlength = 2, -}; - -static struct resource colibri_asix_resource[] = { - [0] = { - .start = PXA3xx_CS2_PHYS, - .end = PXA3xx_CS2_PHYS + (0x20 * 2) - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO), - .end = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO), - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING, - } -}; - -static struct platform_device asix_device = { - .name = "ax88796", - .id = 0, - .num_resources = ARRAY_SIZE(colibri_asix_resource), - .resource = colibri_asix_resource, - .dev = { - .platform_data = &colibri_asix_platdata - } -}; - -static mfp_cfg_t colibri_pxa320_eth_pin_config[] __initdata = { - GPIO3_nCS2, /* AX88796 chip select */ - GPIO36_GPIO | MFP_PULL_HIGH /* AX88796 IRQ */ -}; - -static void __init colibri_pxa320_init_eth(void) -{ - colibri_pxa3xx_init_eth(&colibri_asix_platdata); - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_eth_pin_config)); - platform_device_register(&asix_device); -} -#else -static inline void __init colibri_pxa320_init_eth(void) {} -#endif /* CONFIG_AX88796 */ - -#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) -static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = { - .gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96), - .gpio_pullup = -1, -}; - -static struct platform_device colibri_pxa320_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &colibri_pxa320_gpio_vbus_info, - }, -}; - -static void colibri_pxa320_udc_command(int cmd) -{ - if (cmd == PXA2XX_UDC_CMD_CONNECT) - UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE; - else if (cmd == PXA2XX_UDC_CMD_DISCONNECT) - UP2OCR = UP2OCR_HXOE; -} - -static struct pxa2xx_udc_mach_info colibri_pxa320_udc_info __initdata = { - .udc_command = colibri_pxa320_udc_command, - .gpio_pullup = -1, -}; - -static void __init colibri_pxa320_init_udc(void) -{ - pxa_set_udc_info(&colibri_pxa320_udc_info); - platform_device_register(&colibri_pxa320_gpio_vbus); -} -#else -static inline void colibri_pxa320_init_udc(void) {} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static mfp_cfg_t colibri_pxa320_lcd_pin_config[] __initdata = { - GPIO6_2_LCD_LDD_0, - GPIO7_2_LCD_LDD_1, - GPIO8_2_LCD_LDD_2, - GPIO9_2_LCD_LDD_3, - GPIO10_2_LCD_LDD_4, - GPIO11_2_LCD_LDD_5, - GPIO12_2_LCD_LDD_6, - GPIO13_2_LCD_LDD_7, - GPIO63_LCD_LDD_8, - GPIO64_LCD_LDD_9, - GPIO65_LCD_LDD_10, - GPIO66_LCD_LDD_11, - GPIO67_LCD_LDD_12, - GPIO68_LCD_LDD_13, - GPIO69_LCD_LDD_14, - GPIO70_LCD_LDD_15, - GPIO71_LCD_LDD_16, - GPIO72_LCD_LDD_17, - GPIO73_LCD_CS_N, - GPIO74_LCD_VSYNC, - GPIO14_2_LCD_FCLK, - GPIO15_2_LCD_LCLK, - GPIO16_2_LCD_PCLK, - GPIO17_2_LCD_BIAS, -}; - -static void __init colibri_pxa320_init_lcd(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_lcd_pin_config)); -} -#else -static inline void colibri_pxa320_init_lcd(void) {} -#endif - -#if defined(CONFIG_SND_AC97_CODEC) || \ - defined(CONFIG_SND_AC97_CODEC_MODULE) -static mfp_cfg_t colibri_pxa320_ac97_pin_config[] __initdata = { - GPIO34_AC97_SYSCLK, - GPIO35_AC97_SDATA_IN_0, - GPIO37_AC97_SDATA_OUT, - GPIO38_AC97_SYNC, - GPIO39_AC97_BITCLK, - GPIO40_AC97_nACRESET -}; - -static inline void __init colibri_pxa320_init_ac97(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_ac97_pin_config)); - pxa_set_ac97_info(NULL); -} -#else -static inline void colibri_pxa320_init_ac97(void) {} -#endif - -void __init colibri_pxa320_init(void) -{ - colibri_pxa320_init_eth(); - colibri_pxa3xx_init_nand(); - colibri_pxa320_init_lcd(); - colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO49_GPIO)); - colibri_pxa320_init_ac97(); - colibri_pxa320_init_udc(); - - /* Evalboard init */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_evalboard_pin_config)); - colibri_evalboard_init(); -} - -MACHINE_START(COLIBRI320, "Toradex Colibri PXA320") - .atag_offset = 0x100, - .init_machine = colibri_pxa320_init, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa3xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa3xx.c deleted file mode 100644 index 68cc75fa..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/colibri-pxa3xx.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * arch/arm/mach-pxa/colibri-pxa3xx.c - * - * Common functions for all Toradex PXA3xx modules - * - * Daniel Mack <daniel@caiaq.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> -#include <linux/etherdevice.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/sizes.h> -#include <asm/system_info.h> -#include <asm/mach/arch.h> -#include <asm/mach/irq.h> -#include <mach/pxa3xx-regs.h> -#include <mach/mfp-pxa300.h> -#include <mach/colibri.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <plat/pxa3xx_nand.h> - -#include "generic.h" -#include "devices.h" - -#if defined(CONFIG_AX88796) -#define ETHER_ADDR_LEN 6 -static u8 ether_mac_addr[ETHER_ADDR_LEN]; - -void __init colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data) -{ - int i; - u64 serial = ((u64) system_serial_high << 32) | system_serial_low; - - /* - * If the bootloader passed in a serial boot tag, which contains a - * valid ethernet MAC, pass it to the interface. Toradex ships the - * modules with their own bootloader which provides a valid MAC - * this way. - */ - - for (i = 0; i < ETHER_ADDR_LEN; i++) { - ether_mac_addr[i] = serial & 0xff; - serial >>= 8; - } - - if (is_valid_ether_addr(ether_mac_addr)) { - plat_data->flags |= AXFLG_MAC_FROMPLATFORM; - plat_data->mac_addr = ether_mac_addr; - printk(KERN_INFO "%s(): taking MAC from serial boot tag\n", - __func__); - } else { - plat_data->flags |= AXFLG_MAC_FROMDEV; - printk(KERN_INFO "%s(): no valid serial boot tag found, " - "taking MAC from device\n", __func__); - } -} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static int lcd_bl_pin; - -/* - * LCD panel (Sharp LQ043T3DX02) - */ -static void colibri_lcd_backlight(int on) -{ - gpio_set_value(lcd_bl_pin, !!on); -} - -static struct pxafb_mode_info sharp_lq43_mode = { - .pixclock = 101936, - .xres = 480, - .yres = 272, - .bpp = 32, - .depth = 18, - .hsync_len = 41, - .left_margin = 2, - .right_margin = 2, - .vsync_len = 10, - .upper_margin = 2, - .lower_margin = 2, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info sharp_lq43_info = { - .modes = &sharp_lq43_mode, - .num_modes = 1, - .cmap_inverse = 0, - .cmap_static = 0, - .lcd_conn = LCD_COLOR_TFT_18BPP, - .pxafb_backlight_power = colibri_lcd_backlight, -}; - -void __init colibri_pxa3xx_init_lcd(int bl_pin) -{ - lcd_bl_pin = bl_pin; - gpio_request(bl_pin, "lcd backlight"); - gpio_direction_output(bl_pin, 0); - pxa_set_fb_info(NULL, &sharp_lq43_info); -} -#endif - -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -static struct mtd_partition colibri_nand_partitions[] = { - { - .name = "bootloader", - .offset = 0, - .size = SZ_512K, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - { - .name = "kernel", - .offset = MTDPART_OFS_APPEND, - .size = SZ_4M, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - { - .name = "reserved", - .offset = MTDPART_OFS_APPEND, - .size = SZ_1M, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - { - .name = "fs", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct pxa3xx_nand_platform_data colibri_nand_info = { - .enable_arbiter = 1, - .keep_config = 1, - .num_cs = 1, - .parts[0] = colibri_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(colibri_nand_partitions), -}; - -void __init colibri_pxa3xx_init_nand(void) -{ - pxa3xx_set_nand_info(&colibri_nand_info); -} -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/corgi.c b/ANDROID_3.4.5/arch/arm/mach-pxa/corgi.c deleted file mode 100644 index c1fe32db..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/corgi.c +++ /dev/null @@ -1,766 +0,0 @@ -/* - * Support for Sharp SL-C7xx PDAs - * Models: SL-C700 (Corgi), SL-C750 (Shepherd), SL-C760 (Husky) - * - * Copyright (c) 2004-2005 Richard Purdie - * - * Based on Sharp's 2.4 kernel patches/lubbock.c - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/major.h> -#include <linux/fs.h> -#include <linux/interrupt.h> -#include <linux/mmc/host.h> -#include <linux/mtd/physmap.h> -#include <linux/pm.h> -#include <linux/gpio.h> -#include <linux/backlight.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/io.h> -#include <linux/spi/spi.h> -#include <linux/spi/ads7846.h> -#include <linux/spi/corgi_lcd.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/mtd/sharpsl.h> -#include <linux/input/matrix_keypad.h> -#include <linux/module.h> -#include <video/w100fb.h> - -#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> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> - -#include <mach/pxa25x.h> -#include <mach/irda.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/corgi.h> -#include <mach/sharpsl_pm.h> - -#include <asm/mach/sharpsl_param.h> -#include <asm/hardware/scoop.h> - -#include "generic.h" -#include "devices.h" - -static unsigned long corgi_pin_config[] __initdata = { - /* Static Memory I/O */ - GPIO78_nCS_2, /* w100fb */ - GPIO80_nCS_4, /* scoop */ - - /* SSP1 */ - GPIO23_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - GPIO24_GPIO, /* CORGI_GPIO_ADS7846_CS - SFRM as chip select */ - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - GPIO32_I2S_SYSCLK, - - /* Infra-Red */ - GPIO47_FICP_TXD, - GPIO46_FICP_RXD, - - /* FFUART */ - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - GPIO39_FFUART_TXD, - GPIO37_FFUART_DSR, - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - - /* GPIO Matrix Keypad */ - GPIO66_GPIO | MFP_LPM_DRIVE_HIGH, /* column 0 */ - GPIO67_GPIO | MFP_LPM_DRIVE_HIGH, /* column 1 */ - GPIO68_GPIO | MFP_LPM_DRIVE_HIGH, /* column 2 */ - GPIO69_GPIO | MFP_LPM_DRIVE_HIGH, /* column 3 */ - GPIO70_GPIO | MFP_LPM_DRIVE_HIGH, /* column 4 */ - GPIO71_GPIO | MFP_LPM_DRIVE_HIGH, /* column 5 */ - GPIO72_GPIO | MFP_LPM_DRIVE_HIGH, /* column 6 */ - GPIO73_GPIO | MFP_LPM_DRIVE_HIGH, /* column 7 */ - GPIO74_GPIO | MFP_LPM_DRIVE_HIGH, /* column 8 */ - GPIO75_GPIO | MFP_LPM_DRIVE_HIGH, /* column 9 */ - GPIO76_GPIO | MFP_LPM_DRIVE_HIGH, /* column 10 */ - GPIO77_GPIO | MFP_LPM_DRIVE_HIGH, /* column 11 */ - GPIO58_GPIO, /* row 0 */ - GPIO59_GPIO, /* row 1 */ - GPIO60_GPIO, /* row 2 */ - GPIO61_GPIO, /* row 3 */ - GPIO62_GPIO, /* row 4 */ - GPIO63_GPIO, /* row 5 */ - GPIO64_GPIO, /* row 6 */ - GPIO65_GPIO, /* row 7 */ - - /* GPIO */ - GPIO9_GPIO, /* CORGI_GPIO_nSD_DETECT */ - GPIO7_GPIO, /* CORGI_GPIO_nSD_WP */ - GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_MAIN_BAT_{LOW,COVER} */ - GPIO13_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_LED_ORANGE */ - GPIO21_GPIO, /* CORGI_GPIO_ADC_TEMP */ - GPIO22_GPIO, /* CORGI_GPIO_IR_ON */ - GPIO33_GPIO, /* CORGI_GPIO_SD_PWR */ - GPIO38_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_CHRG_ON */ - GPIO43_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_CHRG_UKN */ - GPIO44_GPIO, /* CORGI_GPIO_HSYNC */ - - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_KEY_INT */ - GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, /* CORGI_GPIO_AC_IN */ - GPIO3_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_WAKEUP */ -}; - -/* - * Corgi SCOOP Device - */ -static struct resource corgi_scoop_resources[] = { - [0] = { - .start = 0x10800000, - .end = 0x10800fff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config corgi_scoop_setup = { - .io_dir = CORGI_SCOOP_IO_DIR, - .io_out = CORGI_SCOOP_IO_OUT, - .gpio_base = CORGI_SCOOP_GPIO_BASE, -}; - -struct platform_device corgiscoop_device = { - .name = "sharp-scoop", - .id = -1, - .dev = { - .platform_data = &corgi_scoop_setup, - }, - .num_resources = ARRAY_SIZE(corgi_scoop_resources), - .resource = corgi_scoop_resources, -}; - -static struct scoop_pcmcia_dev corgi_pcmcia_scoop[] = { -{ - .dev = &corgiscoop_device.dev, - .irq = CORGI_IRQ_GPIO_CF_IRQ, - .cd_irq = CORGI_IRQ_GPIO_CF_CD, - .cd_irq_str = "PCMCIA0 CD", -}, -}; - -static struct scoop_pcmcia_config corgi_pcmcia_config = { - .devs = &corgi_pcmcia_scoop[0], - .num_devs = 1, -}; - -static struct w100_mem_info corgi_fb_mem = { - .ext_cntl = 0x00040003, - .sdram_mode_reg = 0x00650021, - .ext_timing_cntl = 0x10002a4a, - .io_cntl = 0x7ff87012, - .size = 0x1fffff, -}; - -static struct w100_gen_regs corgi_fb_regs = { - .lcd_format = 0x00000003, - .lcdd_cntl1 = 0x01CC0000, - .lcdd_cntl2 = 0x0003FFFF, - .genlcd_cntl1 = 0x00FFFF0D, - .genlcd_cntl2 = 0x003F3003, - .genlcd_cntl3 = 0x000102aa, -}; - -static struct w100_gpio_regs corgi_fb_gpio = { - .init_data1 = 0x000000bf, - .init_data2 = 0x00000000, - .gpio_dir1 = 0x00000000, - .gpio_oe1 = 0x03c0feff, - .gpio_dir2 = 0x00000000, - .gpio_oe2 = 0x00000000, -}; - -static struct w100_mode corgi_fb_modes[] = { -{ - .xres = 480, - .yres = 640, - .left_margin = 0x56, - .right_margin = 0x55, - .upper_margin = 0x03, - .lower_margin = 0x00, - .crtc_ss = 0x82360056, - .crtc_ls = 0xA0280000, - .crtc_gs = 0x80280028, - .crtc_vpos_gs = 0x02830002, - .crtc_rev = 0x00400008, - .crtc_dclk = 0xA0000000, - .crtc_gclk = 0x8015010F, - .crtc_goe = 0x80100110, - .crtc_ps1_active = 0x41060010, - .pll_freq = 75, - .fast_pll_freq = 100, - .sysclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .pixclk_src = CLK_SRC_PLL, - .pixclk_divider = 2, - .pixclk_divider_rotated = 6, -},{ - .xres = 240, - .yres = 320, - .left_margin = 0x27, - .right_margin = 0x2e, - .upper_margin = 0x01, - .lower_margin = 0x00, - .crtc_ss = 0x81170027, - .crtc_ls = 0xA0140000, - .crtc_gs = 0xC0140014, - .crtc_vpos_gs = 0x00010141, - .crtc_rev = 0x00400008, - .crtc_dclk = 0xA0000000, - .crtc_gclk = 0x8015010F, - .crtc_goe = 0x80100110, - .crtc_ps1_active = 0x41060010, - .pll_freq = 0, - .fast_pll_freq = 0, - .sysclk_src = CLK_SRC_XTAL, - .sysclk_divider = 0, - .pixclk_src = CLK_SRC_XTAL, - .pixclk_divider = 1, - .pixclk_divider_rotated = 1, -}, - -}; - -static struct w100fb_mach_info corgi_fb_info = { - .init_mode = INIT_MODE_ROTATED, - .mem = &corgi_fb_mem, - .regs = &corgi_fb_regs, - .modelist = &corgi_fb_modes[0], - .num_modes = 2, - .gpio = &corgi_fb_gpio, - .xtal_freq = 12500000, - .xtal_dbl = 0, -}; - -static struct resource corgi_fb_resources[] = { - [0] = { - .start = 0x08000000, - .end = 0x08ffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device corgifb_device = { - .name = "w100fb", - .id = -1, - .num_resources = ARRAY_SIZE(corgi_fb_resources), - .resource = corgi_fb_resources, - .dev = { - .platform_data = &corgi_fb_info, - }, - -}; - -/* - * Corgi Keyboard Device - */ -#define CORGI_KEY_CALENDER KEY_F1 -#define CORGI_KEY_ADDRESS KEY_F2 -#define CORGI_KEY_FN KEY_F3 -#define CORGI_KEY_CANCEL KEY_F4 -#define CORGI_KEY_OFF KEY_SUSPEND -#define CORGI_KEY_EXOK KEY_F5 -#define CORGI_KEY_EXCANCEL KEY_F6 -#define CORGI_KEY_EXJOGDOWN KEY_F7 -#define CORGI_KEY_EXJOGUP KEY_F8 -#define CORGI_KEY_JAP1 KEY_LEFTCTRL -#define CORGI_KEY_JAP2 KEY_LEFTALT -#define CORGI_KEY_MAIL KEY_F10 -#define CORGI_KEY_OK KEY_F11 -#define CORGI_KEY_MENU KEY_F12 - -static const uint32_t corgikbd_keymap[] = { - KEY(0, 1, KEY_1), - KEY(0, 2, KEY_3), - KEY(0, 3, KEY_5), - KEY(0, 4, KEY_6), - KEY(0, 5, KEY_7), - KEY(0, 6, KEY_9), - KEY(0, 7, KEY_0), - KEY(0, 8, KEY_BACKSPACE), - KEY(1, 1, KEY_2), - KEY(1, 2, KEY_4), - KEY(1, 3, KEY_R), - KEY(1, 4, KEY_Y), - KEY(1, 5, KEY_8), - KEY(1, 6, KEY_I), - KEY(1, 7, KEY_O), - KEY(1, 8, KEY_P), - KEY(2, 0, KEY_TAB), - KEY(2, 1, KEY_Q), - KEY(2, 2, KEY_E), - KEY(2, 3, KEY_T), - KEY(2, 4, KEY_G), - KEY(2, 5, KEY_U), - KEY(2, 6, KEY_J), - KEY(2, 7, KEY_K), - KEY(3, 0, CORGI_KEY_CALENDER), - KEY(3, 1, KEY_W), - KEY(3, 2, KEY_S), - KEY(3, 3, KEY_F), - KEY(3, 4, KEY_V), - KEY(3, 5, KEY_H), - KEY(3, 6, KEY_M), - KEY(3, 7, KEY_L), - KEY(3, 9, KEY_RIGHTSHIFT), - KEY(4, 0, CORGI_KEY_ADDRESS), - KEY(4, 1, KEY_A), - KEY(4, 2, KEY_D), - KEY(4, 3, KEY_C), - KEY(4, 4, KEY_B), - KEY(4, 5, KEY_N), - KEY(4, 6, KEY_DOT), - KEY(4, 8, KEY_ENTER), - KEY(4, 10, KEY_LEFTSHIFT), - KEY(5, 0, CORGI_KEY_MAIL), - KEY(5, 1, KEY_Z), - KEY(5, 2, KEY_X), - KEY(5, 3, KEY_MINUS), - KEY(5, 4, KEY_SPACE), - KEY(5, 5, KEY_COMMA), - KEY(5, 7, KEY_UP), - KEY(5, 11, CORGI_KEY_FN), - KEY(6, 0, KEY_SYSRQ), - KEY(6, 1, CORGI_KEY_JAP1), - KEY(6, 2, CORGI_KEY_JAP2), - KEY(6, 3, CORGI_KEY_CANCEL), - KEY(6, 4, CORGI_KEY_OK), - KEY(6, 5, CORGI_KEY_MENU), - KEY(6, 6, KEY_LEFT), - KEY(6, 7, KEY_DOWN), - KEY(6, 8, KEY_RIGHT), - KEY(7, 0, CORGI_KEY_OFF), - KEY(7, 1, CORGI_KEY_EXOK), - KEY(7, 2, CORGI_KEY_EXCANCEL), - KEY(7, 3, CORGI_KEY_EXJOGDOWN), - KEY(7, 4, CORGI_KEY_EXJOGUP), -}; - -static struct matrix_keymap_data corgikbd_keymap_data = { - .keymap = corgikbd_keymap, - .keymap_size = ARRAY_SIZE(corgikbd_keymap), -}; - -static const int corgikbd_row_gpios[] = - { 58, 59, 60, 61, 62, 63, 64, 65 }; -static const int corgikbd_col_gpios[] = - { 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 }; - -static struct matrix_keypad_platform_data corgikbd_pdata = { - .keymap_data = &corgikbd_keymap_data, - .row_gpios = corgikbd_row_gpios, - .col_gpios = corgikbd_col_gpios, - .num_row_gpios = ARRAY_SIZE(corgikbd_row_gpios), - .num_col_gpios = ARRAY_SIZE(corgikbd_col_gpios), - .col_scan_delay_us = 10, - .debounce_ms = 10, - .wakeup = 1, -}; - -static struct platform_device corgikbd_device = { - .name = "matrix-keypad", - .id = -1, - .dev = { - .platform_data = &corgikbd_pdata, - }, -}; - -/* - * Corgi LEDs - */ -static struct gpio_led corgi_gpio_leds[] = { - { - .name = "corgi:amber:charge", - .default_trigger = "sharpsl-charge", - .gpio = CORGI_GPIO_LED_ORANGE, - }, - { - .name = "corgi:green:mail", - .default_trigger = "nand-disk", - .gpio = CORGI_GPIO_LED_GREEN, - }, -}; - -static struct gpio_led_platform_data corgi_gpio_leds_info = { - .leds = corgi_gpio_leds, - .num_leds = ARRAY_SIZE(corgi_gpio_leds), -}; - -static struct platform_device corgiled_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &corgi_gpio_leds_info, - }, -}; - -/* - * Corgi Audio - */ -static struct platform_device corgi_audio_device = { - .name = "corgi-audio", - .id = -1, -}; - -/* - * MMC/SD Device - * - * The card detect interrupt isn't debounced so we delay it by 250ms - * to give the card a chance to fully insert/eject. - */ -static struct pxamci_platform_data corgi_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = CORGI_GPIO_nSD_DETECT, - .gpio_card_ro = CORGI_GPIO_nSD_WP, - .gpio_power = CORGI_GPIO_SD_PWR, -}; - - -/* - * Irda - */ -static struct pxaficp_platform_data corgi_ficp_platform_data = { - .gpio_pwdown = CORGI_GPIO_IR_ON, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - - -/* - * USB Device Controller - */ -static struct pxa2xx_udc_mach_info udc_info __initdata = { - /* no connect GPIO; corgi can't tell connection status */ - .gpio_pullup = CORGI_GPIO_USB_PULLUP, -}; - -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MASTER) -static struct pxa2xx_spi_master corgi_spi_info = { - .num_chipselect = 3, -}; - -static void corgi_wait_for_hsync(void) -{ - while (gpio_get_value(CORGI_GPIO_HSYNC)) - cpu_relax(); - - while (!gpio_get_value(CORGI_GPIO_HSYNC)) - cpu_relax(); -} - -static struct ads7846_platform_data corgi_ads7846_info = { - .model = 7846, - .vref_delay_usecs = 100, - .x_plate_ohms = 419, - .y_plate_ohms = 486, - .gpio_pendown = CORGI_GPIO_TP_INT, - .wait_for_sync = corgi_wait_for_hsync, -}; - -static struct pxa2xx_spi_chip corgi_ads7846_chip = { - .gpio_cs = CORGI_GPIO_ADS7846_CS, -}; - -static void corgi_bl_kick_battery(void) -{ - void (*kick_batt)(void); - - kick_batt = symbol_get(sharpsl_battery_kick); - if (kick_batt) { - kick_batt(); - symbol_put(sharpsl_battery_kick); - } -} - -static struct corgi_lcd_platform_data corgi_lcdcon_info = { - .init_mode = CORGI_LCD_MODE_VGA, - .max_intensity = 0x2f, - .default_intensity = 0x1f, - .limit_mask = 0x0b, - .gpio_backlight_cont = CORGI_GPIO_BACKLIGHT_CONT, - .gpio_backlight_on = -1, - .kick_battery = corgi_bl_kick_battery, -}; - -static struct pxa2xx_spi_chip corgi_lcdcon_chip = { - .gpio_cs = CORGI_GPIO_LCDCON_CS, -}; - -static struct pxa2xx_spi_chip corgi_max1111_chip = { - .gpio_cs = CORGI_GPIO_MAX1111_CS, -}; - -static struct spi_board_info corgi_spi_devices[] = { - { - .modalias = "ads7846", - .max_speed_hz = 1200000, - .bus_num = 1, - .chip_select = 0, - .platform_data = &corgi_ads7846_info, - .controller_data= &corgi_ads7846_chip, - .irq = PXA_GPIO_TO_IRQ(CORGI_GPIO_TP_INT), - }, { - .modalias = "corgi-lcd", - .max_speed_hz = 50000, - .bus_num = 1, - .chip_select = 1, - .platform_data = &corgi_lcdcon_info, - .controller_data= &corgi_lcdcon_chip, - }, { - .modalias = "max1111", - .max_speed_hz = 450000, - .bus_num = 1, - .chip_select = 2, - .controller_data= &corgi_max1111_chip, - }, -}; - -static void __init corgi_init_spi(void) -{ - pxa2xx_set_spi_info(1, &corgi_spi_info); - spi_register_board_info(ARRAY_AND_SIZE(corgi_spi_devices)); -} -#else -static inline void corgi_init_spi(void) {} -#endif - -static struct mtd_partition sharpsl_nand_partitions[] = { - { - .name = "System Area", - .offset = 0, - .size = 7 * 1024 * 1024, - }, - { - .name = "Root Filesystem", - .offset = 7 * 1024 * 1024, - .size = 25 * 1024 * 1024, - }, - { - .name = "Home Filesystem", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; - -static struct nand_bbt_descr sharpsl_bbt = { - .options = 0, - .offs = 4, - .len = 2, - .pattern = scan_ff_pattern -}; - -static struct sharpsl_nand_platform_data sharpsl_nand_platform_data = { - .badblock_pattern = &sharpsl_bbt, - .partitions = sharpsl_nand_partitions, - .nr_partitions = ARRAY_SIZE(sharpsl_nand_partitions), -}; - -static struct resource sharpsl_nand_resources[] = { - { - .start = 0x0C000000, - .end = 0x0C000FFF, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device sharpsl_nand_device = { - .name = "sharpsl-nand", - .id = -1, - .resource = sharpsl_nand_resources, - .num_resources = ARRAY_SIZE(sharpsl_nand_resources), - .dev.platform_data = &sharpsl_nand_platform_data, -}; - -static struct mtd_partition sharpsl_rom_parts[] = { - { - .name ="Boot PROM Filesystem", - .offset = 0x00120000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data sharpsl_rom_data = { - .width = 2, - .nr_parts = ARRAY_SIZE(sharpsl_rom_parts), - .parts = sharpsl_rom_parts, -}; - -static struct resource sharpsl_rom_resources[] = { - { - .start = 0x00000000, - .end = 0x007fffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device sharpsl_rom_device = { - .name = "physmap-flash", - .id = -1, - .resource = sharpsl_rom_resources, - .num_resources = ARRAY_SIZE(sharpsl_rom_resources), - .dev.platform_data = &sharpsl_rom_data, -}; - -static struct platform_device *devices[] __initdata = { - &corgiscoop_device, - &corgifb_device, - &corgikbd_device, - &corgiled_device, - &corgi_audio_device, - &sharpsl_nand_device, - &sharpsl_rom_device, -}; - -static struct i2c_board_info __initdata corgi_i2c_devices[] = { - { I2C_BOARD_INFO("wm8731", 0x1b) }, -}; - -static void corgi_poweroff(void) -{ - if (!machine_is_corgi()) - /* Green LED off tells the bootloader to halt */ - gpio_set_value(CORGI_GPIO_LED_GREEN, 0); - - pxa_restart('h', NULL); -} - -static void corgi_restart(char mode, const char *cmd) -{ - if (!machine_is_corgi()) - /* Green LED on tells the bootloader to reboot */ - gpio_set_value(CORGI_GPIO_LED_GREEN, 1); - - pxa_restart('h', cmd); -} - -static void __init corgi_init(void) -{ - pm_power_off = corgi_poweroff; - - /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ - PCFR |= PCFR_OPDE; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config)); - - /* allow wakeup from various GPIOs */ - gpio_set_wake(CORGI_GPIO_KEY_INT, 1); - gpio_set_wake(CORGI_GPIO_WAKEUP, 1); - gpio_set_wake(CORGI_GPIO_AC_IN, 1); - gpio_set_wake(CORGI_GPIO_CHRG_FULL, 1); - - if (!machine_is_corgi()) - gpio_set_wake(CORGI_GPIO_MAIN_BAT_LOW, 1); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - corgi_init_spi(); - - pxa_set_udc_info(&udc_info); - pxa_set_mci_info(&corgi_mci_platform_data); - pxa_set_ficp_info(&corgi_ficp_platform_data); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(corgi_i2c_devices)); - - platform_scoop_config = &corgi_pcmcia_config; - - if (machine_is_husky()) - sharpsl_nand_partitions[1].size = 53 * 1024 * 1024; - - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -static void __init fixup_corgi(struct tag *tags, char **cmdline, - struct meminfo *mi) -{ - sharpsl_save_param(); - mi->nr_banks=1; - mi->bank[0].start = 0xa0000000; - if (machine_is_corgi()) - mi->bank[0].size = (32*1024*1024); - else - mi->bank[0].size = (64*1024*1024); -} - -#ifdef CONFIG_MACH_CORGI -MACHINE_START(CORGI, "SHARP Corgi") - .fixup = fixup_corgi, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = corgi_init, - .timer = &pxa_timer, - .restart = corgi_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_SHEPHERD -MACHINE_START(SHEPHERD, "SHARP Shepherd") - .fixup = fixup_corgi, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = corgi_init, - .timer = &pxa_timer, - .restart = corgi_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_HUSKY -MACHINE_START(HUSKY, "SHARP Husky") - .fixup = fixup_corgi, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = corgi_init, - .timer = &pxa_timer, - .restart = corgi_restart, -MACHINE_END -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/corgi_pm.c b/ANDROID_3.4.5/arch/arm/mach-pxa/corgi_pm.c deleted file mode 100644 index 048c4299..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/corgi_pm.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Battery and Power Management code for the Sharp SL-C7xx - * - * Copyright (c) 2005 Richard Purdie - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/module.h> -#include <linux/stat.h> -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/gpio-pxa.h> -#include <linux/interrupt.h> -#include <linux/platform_device.h> -#include <linux/apm-emulation.h> -#include <linux/io.h> - -#include <asm/irq.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> - -#include <mach/corgi.h> -#include <mach/pxa2xx-regs.h> -#include <mach/sharpsl_pm.h> - -#include "generic.h" - -#define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ -#define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ -#define SHARPSL_CHARGE_ON_ACIN_HIGH 0x9b /* 6V */ -#define SHARPSL_CHARGE_ON_ACIN_LOW 0x34 /* 2V */ -#define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ -#define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ - -static struct gpio charger_gpios[] = { - { CORGI_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" }, - { CORGI_GPIO_CHRG_ON, GPIOF_OUT_INIT_LOW, "Charger On" }, - { CORGI_GPIO_CHRG_UKN, GPIOF_OUT_INIT_LOW, "Charger Unknown" }, - { CORGI_GPIO_AC_IN, GPIOF_IN, "Charger Detection" }, - { CORGI_GPIO_KEY_INT, GPIOF_IN, "Key Interrupt" }, - { CORGI_GPIO_WAKEUP, GPIOF_IN, "System wakeup notification" }, -}; - -static void corgi_charger_init(void) -{ - gpio_request_array(ARRAY_AND_SIZE(charger_gpios)); -} - -static void corgi_measure_temp(int on) -{ - gpio_set_value(CORGI_GPIO_ADC_TEMP_ON, on); -} - -static void corgi_charge(int on) -{ - if (on) { - if (machine_is_corgi() && (sharpsl_pm.flags & SHARPSL_SUSPENDED)) { - gpio_set_value(CORGI_GPIO_CHRG_ON, 0); - gpio_set_value(CORGI_GPIO_CHRG_UKN, 1); - } else { - gpio_set_value(CORGI_GPIO_CHRG_ON, 1); - gpio_set_value(CORGI_GPIO_CHRG_UKN, 0); - } - } else { - gpio_set_value(CORGI_GPIO_CHRG_ON, 0); - gpio_set_value(CORGI_GPIO_CHRG_UKN, 0); - } -} - -static void corgi_discharge(int on) -{ - gpio_set_value(CORGI_GPIO_DISCHARGE_ON, on); -} - -static void corgi_presuspend(void) -{ -} - -static void corgi_postsuspend(void) -{ -} - -/* - * Check what brought us out of the suspend. - * Return: 0 to sleep, otherwise wake - */ -static int corgi_should_wakeup(unsigned int resume_on_alarm) -{ - int is_resume = 0; - - dev_dbg(sharpsl_pm.dev, "PEDR = %x, GPIO_AC_IN = %d, " - "GPIO_CHRG_FULL = %d, GPIO_KEY_INT = %d, GPIO_WAKEUP = %d\n", - PEDR, gpio_get_value(CORGI_GPIO_AC_IN), - gpio_get_value(CORGI_GPIO_CHRG_FULL), - gpio_get_value(CORGI_GPIO_KEY_INT), - gpio_get_value(CORGI_GPIO_WAKEUP)); - - if ((PEDR & GPIO_bit(CORGI_GPIO_AC_IN))) { - if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { - /* charge on */ - dev_dbg(sharpsl_pm.dev, "ac insert\n"); - sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; - } else { - /* charge off */ - dev_dbg(sharpsl_pm.dev, "ac remove\n"); - sharpsl_pm_led(SHARPSL_LED_OFF); - sharpsl_pm.machinfo->charge(0); - sharpsl_pm.charge_mode = CHRG_OFF; - } - } - - if ((PEDR & GPIO_bit(CORGI_GPIO_CHRG_FULL))) - dev_dbg(sharpsl_pm.dev, "Charge full interrupt\n"); - - if (PEDR & GPIO_bit(CORGI_GPIO_KEY_INT)) - is_resume |= GPIO_bit(CORGI_GPIO_KEY_INT); - - if (PEDR & GPIO_bit(CORGI_GPIO_WAKEUP)) - is_resume |= GPIO_bit(CORGI_GPIO_WAKEUP); - - if (resume_on_alarm && (PEDR & PWER_RTC)) - is_resume |= PWER_RTC; - - dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume); - return is_resume; -} - -static unsigned long corgi_charger_wakeup(void) -{ - unsigned long ret; - - ret = (!gpio_get_value(CORGI_GPIO_AC_IN) << GPIO_bit(CORGI_GPIO_AC_IN)) - | (!gpio_get_value(CORGI_GPIO_KEY_INT) - << GPIO_bit(CORGI_GPIO_KEY_INT)) - | (!gpio_get_value(CORGI_GPIO_WAKEUP) - << GPIO_bit(CORGI_GPIO_WAKEUP)); - return ret; -} - -unsigned long corgipm_read_devdata(int type) -{ - switch(type) { - case SHARPSL_STATUS_ACIN: - return !gpio_get_value(CORGI_GPIO_AC_IN); - case SHARPSL_STATUS_LOCK: - return gpio_get_value(sharpsl_pm.machinfo->gpio_batlock); - case SHARPSL_STATUS_CHRGFULL: - return gpio_get_value(sharpsl_pm.machinfo->gpio_batfull); - case SHARPSL_STATUS_FATAL: - return gpio_get_value(sharpsl_pm.machinfo->gpio_fatal); - case SHARPSL_ACIN_VOLT: - return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT); - case SHARPSL_BATT_TEMP: - return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP); - case SHARPSL_BATT_VOLT: - default: - return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT); - } -} - -static struct sharpsl_charger_machinfo corgi_pm_machinfo = { - .init = corgi_charger_init, - .exit = NULL, - .gpio_batlock = CORGI_GPIO_BAT_COVER, - .gpio_acin = CORGI_GPIO_AC_IN, - .gpio_batfull = CORGI_GPIO_CHRG_FULL, - .discharge = corgi_discharge, - .charge = corgi_charge, - .measure_temp = corgi_measure_temp, - .presuspend = corgi_presuspend, - .postsuspend = corgi_postsuspend, - .read_devdata = corgipm_read_devdata, - .charger_wakeup = corgi_charger_wakeup, - .should_wakeup = corgi_should_wakeup, -#if defined(CONFIG_LCD_CORGI) - .backlight_limit = corgi_lcd_limit_intensity, -#endif - .charge_on_volt = SHARPSL_CHARGE_ON_VOLT, - .charge_on_temp = SHARPSL_CHARGE_ON_TEMP, - .charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH, - .charge_acin_low = SHARPSL_CHARGE_ON_ACIN_LOW, - .fatal_acin_volt = SHARPSL_FATAL_ACIN_VOLT, - .fatal_noacin_volt= SHARPSL_FATAL_NOACIN_VOLT, - .bat_levels = 40, - .bat_levels_noac = sharpsl_battery_levels_noac, - .bat_levels_acin = sharpsl_battery_levels_acin, - .status_high_acin = 188, - .status_low_acin = 178, - .status_high_noac = 185, - .status_low_noac = 175, -}; - -static struct platform_device *corgipm_device; - -static int __devinit corgipm_init(void) -{ - int ret; - - if (!machine_is_corgi() && !machine_is_shepherd() - && !machine_is_husky()) - return -ENODEV; - - corgipm_device = platform_device_alloc("sharpsl-pm", -1); - if (!corgipm_device) - return -ENOMEM; - - if (!machine_is_corgi()) - corgi_pm_machinfo.batfull_irq = 1; - - corgipm_device->dev.platform_data = &corgi_pm_machinfo; - ret = platform_device_add(corgipm_device); - - if (ret) - platform_device_put(corgipm_device); - - return ret; -} - -static void corgipm_exit(void) -{ - platform_device_unregister(corgipm_device); -} - -module_init(corgipm_init); -module_exit(corgipm_exit); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa2xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa2xx.c deleted file mode 100644 index 6a7aeab4..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa2xx.c +++ /dev/null @@ -1,494 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cpufreq-pxa2xx.c - * - * Copyright (C) 2002,2003 Intrinsyc Software - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * History: - * 31-Jul-2002 : Initial version [FB] - * 29-Jan-2003 : added PXA255 support [FB] - * 20-Apr-2003 : ported to v2.5 (Dustin McIntire, Sensoria Corp.) - * - * Note: - * This driver may change the memory bus clock rate, but will not do any - * platform specific access timing changes... for example if you have flash - * memory connected to CS0, you will need to register a platform specific - * notifier which will adjust the memory access strobes to maintain a - * minimum strobe width. - * - */ - -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/sched.h> -#include <linux/init.h> -#include <linux/cpufreq.h> -#include <linux/err.h> -#include <linux/regulator/consumer.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); -MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0"); -#else -#define freq_debug 0 -#endif - -static struct regulator *vcc_core; - -static unsigned int pxa27x_maxfreq; -module_param(pxa27x_maxfreq, uint, 0); -MODULE_PARM_DESC(pxa27x_maxfreq, "Set the pxa27x maxfreq in MHz" - "(typically 624=>pxa270, 416=>pxa271, 520=>pxa272)"); - -typedef struct { - unsigned int khz; - unsigned int membus; - unsigned int cccr; - unsigned int div2; - unsigned int cclkcfg; - int vmin; - int vmax; -} pxa_freqs_t; - -/* Define the refresh period in mSec for the SDRAM and the number of rows */ -#define SDRAM_TREF 64 /* standard 64ms SDRAM */ -static unsigned int sdram_rows; - -#define CCLKCFG_TURBO 0x1 -#define CCLKCFG_FCS 0x2 -#define CCLKCFG_HALFTURBO 0x4 -#define CCLKCFG_FASTBUS 0x8 -#define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2) -#define MDREFR_DRI_MASK 0xFFF - -#define MDCNFG_DRAC2(mdcnfg) (((mdcnfg) >> 21) & 0x3) -#define MDCNFG_DRAC0(mdcnfg) (((mdcnfg) >> 5) & 0x3) - -/* - * PXA255 definitions - */ -/* Use the run mode frequencies for the CPUFREQ_POLICY_PERFORMANCE policy */ -#define CCLKCFG CCLKCFG_TURBO | CCLKCFG_FCS - -static pxa_freqs_t pxa255_run_freqs[] = -{ - /* CPU MEMBUS CCCR DIV2 CCLKCFG run turbo PXbus SDRAM */ - { 99500, 99500, 0x121, 1, CCLKCFG, -1, -1}, /* 99, 99, 50, 50 */ - {132700, 132700, 0x123, 1, CCLKCFG, -1, -1}, /* 133, 133, 66, 66 */ - {199100, 99500, 0x141, 0, CCLKCFG, -1, -1}, /* 199, 199, 99, 99 */ - {265400, 132700, 0x143, 1, CCLKCFG, -1, -1}, /* 265, 265, 133, 66 */ - {331800, 165900, 0x145, 1, CCLKCFG, -1, -1}, /* 331, 331, 166, 83 */ - {398100, 99500, 0x161, 0, CCLKCFG, -1, -1}, /* 398, 398, 196, 99 */ -}; - -/* Use the turbo mode frequencies for the CPUFREQ_POLICY_POWERSAVE policy */ -static pxa_freqs_t pxa255_turbo_freqs[] = -{ - /* CPU MEMBUS CCCR DIV2 CCLKCFG run turbo PXbus SDRAM */ - { 99500, 99500, 0x121, 1, CCLKCFG, -1, -1}, /* 99, 99, 50, 50 */ - {199100, 99500, 0x221, 0, CCLKCFG, -1, -1}, /* 99, 199, 50, 99 */ - {298500, 99500, 0x321, 0, CCLKCFG, -1, -1}, /* 99, 287, 50, 99 */ - {298600, 99500, 0x1c1, 0, CCLKCFG, -1, -1}, /* 199, 287, 99, 99 */ - {398100, 99500, 0x241, 0, CCLKCFG, -1, -1}, /* 199, 398, 99, 99 */ -}; - -#define NUM_PXA25x_RUN_FREQS ARRAY_SIZE(pxa255_run_freqs) -#define NUM_PXA25x_TURBO_FREQS ARRAY_SIZE(pxa255_turbo_freqs) - -static struct cpufreq_frequency_table - pxa255_run_freq_table[NUM_PXA25x_RUN_FREQS+1]; -static struct cpufreq_frequency_table - pxa255_turbo_freq_table[NUM_PXA25x_TURBO_FREQS+1]; - -static unsigned int pxa255_turbo_table; -module_param(pxa255_turbo_table, uint, 0); -MODULE_PARM_DESC(pxa255_turbo_table, "Selects the frequency table (0 = run table, !0 = turbo table)"); - -/* - * PXA270 definitions - * - * For the PXA27x: - * Control variables are A, L, 2N for CCCR; B, HT, T for CLKCFG. - * - * A = 0 => memory controller clock from table 3-7, - * A = 1 => memory controller clock = system bus clock - * Run mode frequency = 13 MHz * L - * Turbo mode frequency = 13 MHz * L * N - * System bus frequency = 13 MHz * L / (B + 1) - * - * In CCCR: - * A = 1 - * L = 16 oscillator to run mode ratio - * 2N = 6 2 * (turbo mode to run mode ratio) - * - * In CCLKCFG: - * B = 1 Fast bus mode - * HT = 0 Half-Turbo mode - * T = 1 Turbo mode - * - * For now, just support some of the combinations in table 3-7 of - * PXA27x Processor Family Developer's Manual to simplify frequency - * change sequences. - */ -#define PXA27x_CCCR(A, L, N2) (A << 25 | N2 << 7 | L) -#define CCLKCFG2(B, HT, T) \ - (CCLKCFG_FCS | \ - ((B) ? CCLKCFG_FASTBUS : 0) | \ - ((HT) ? CCLKCFG_HALFTURBO : 0) | \ - ((T) ? CCLKCFG_TURBO : 0)) - -static pxa_freqs_t pxa27x_freqs[] = { - {104000, 104000, PXA27x_CCCR(1, 8, 2), 0, CCLKCFG2(1, 0, 1), 900000, 1705000 }, - {156000, 104000, PXA27x_CCCR(1, 8, 3), 0, CCLKCFG2(1, 0, 1), 1000000, 1705000 }, - {208000, 208000, PXA27x_CCCR(0, 16, 2), 1, CCLKCFG2(0, 0, 1), 1180000, 1705000 }, - {312000, 208000, PXA27x_CCCR(1, 16, 3), 1, CCLKCFG2(1, 0, 1), 1250000, 1705000 }, - {416000, 208000, PXA27x_CCCR(1, 16, 4), 1, CCLKCFG2(1, 0, 1), 1350000, 1705000 }, - {520000, 208000, PXA27x_CCCR(1, 16, 5), 1, CCLKCFG2(1, 0, 1), 1450000, 1705000 }, - {624000, 208000, PXA27x_CCCR(1, 16, 6), 1, CCLKCFG2(1, 0, 1), 1550000, 1705000 } -}; - -#define NUM_PXA27x_FREQS ARRAY_SIZE(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(pxa_freqs_t *pxa_freq) -{ - int ret = 0; - int vmin, vmax; - - if (!cpu_is_pxa27x()) - return 0; - - vmin = pxa_freq->vmin; - vmax = pxa_freq->vmax; - if ((vmin == -1) || (vmax == -1)) - return 0; - - ret = regulator_set_voltage(vcc_core, vmin, vmax); - if (ret) - pr_err("cpufreq: Failed to set vcc_core in [%dmV..%dmV]\n", - vmin, vmax); - return ret; -} - -static __init void pxa_cpufreq_init_voltages(void) -{ - vcc_core = regulator_get(NULL, "vcc_core"); - if (IS_ERR(vcc_core)) { - pr_info("cpufreq: Didn't find vcc_core regulator\n"); - vcc_core = NULL; - } else { - pr_info("cpufreq: Found vcc_core regulator\n"); - } -} -#else -static int pxa_cpufreq_change_voltage(pxa_freqs_t *pxa_freq) -{ - return 0; -} - -static __init void pxa_cpufreq_init_voltages(void) { } -#endif - -static void find_freq_tables(struct cpufreq_frequency_table **freq_table, - pxa_freqs_t **pxa_freqs) -{ - if (cpu_is_pxa25x()) { - if (!pxa255_turbo_table) { - *pxa_freqs = pxa255_run_freqs; - *freq_table = pxa255_run_freq_table; - } else { - *pxa_freqs = pxa255_turbo_freqs; - *freq_table = pxa255_turbo_freq_table; - } - } - if (cpu_is_pxa27x()) { - *pxa_freqs = pxa27x_freqs; - *freq_table = pxa27x_freq_table; - } -} - -static void pxa27x_guess_max_freq(void) -{ - if (!pxa27x_maxfreq) { - pxa27x_maxfreq = 416000; - printk(KERN_INFO "PXA CPU 27x max frequency not defined " - "(pxa27x_maxfreq), assuming pxa271 with %dkHz maxfreq\n", - pxa27x_maxfreq); - } else { - pxa27x_maxfreq *= 1000; - } -} - -static void init_sdram_rows(void) -{ - uint32_t mdcnfg = __raw_readl(MDCNFG); - unsigned int drac2 = 0, drac0 = 0; - - 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)); -} - -static u32 mdrefr_dri(unsigned int freq) -{ - u32 interval = freq * SDRAM_TREF / sdram_rows; - - return (interval - (cpu_is_pxa27x() ? 31 : 0)) / 32; -} - -/* find a valid frequency point */ -static int pxa_verify_policy(struct cpufreq_policy *policy) -{ - struct cpufreq_frequency_table *pxa_freqs_table; - pxa_freqs_t *pxa_freqs; - int ret; - - find_freq_tables(&pxa_freqs_table, &pxa_freqs); - ret = cpufreq_frequency_table_verify(policy, pxa_freqs_table); - - if (freq_debug) - pr_debug("Verified CPU policy: %dKhz min to %dKhz max\n", - policy->min, policy->max); - - return ret; -} - -static unsigned int pxa_cpufreq_get(unsigned int cpu) -{ - return get_clk_frequency_khz(0); -} - -static int pxa_set_target(struct cpufreq_policy *policy, - unsigned int target_freq, - unsigned int relation) -{ - struct cpufreq_frequency_table *pxa_freqs_table; - pxa_freqs_t *pxa_freq_settings; - struct cpufreq_freqs freqs; - unsigned int idx; - unsigned long flags; - unsigned int new_freq_cpu, new_freq_mem; - unsigned int unused, preset_mdrefr, postset_mdrefr, cclkcfg; - int ret = 0; - - /* Get the current policy */ - find_freq_tables(&pxa_freqs_table, &pxa_freq_settings); - - /* Lookup the next frequency */ - if (cpufreq_frequency_table_target(policy, pxa_freqs_table, - target_freq, relation, &idx)) { - return -EINVAL; - } - - new_freq_cpu = pxa_freq_settings[idx].khz; - new_freq_mem = pxa_freq_settings[idx].membus; - freqs.old = policy->cur; - freqs.new = new_freq_cpu; - freqs.cpu = policy->cpu; - - if (freq_debug) - pr_debug("Changing CPU frequency to %d Mhz, (SDRAM %d Mhz)\n", - freqs.new / 1000, (pxa_freq_settings[idx].div2) ? - (new_freq_mem / 2000) : (new_freq_mem / 1000)); - - if (vcc_core && freqs.new > freqs.old) - ret = pxa_cpufreq_change_voltage(&pxa_freq_settings[idx]); - if (ret) - return ret; - /* - * Tell everyone what we're about to do... - * you should add a notify client with any platform specific - * Vcc changing capability - */ - cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); - - /* Calculate the next MDREFR. If we're slowing down the SDRAM clock - * we need to preset the smaller DRI before the change. If we're - * speeding up we need to set the larger DRI value after the change. - */ - preset_mdrefr = postset_mdrefr = __raw_readl(MDREFR); - if ((preset_mdrefr & MDREFR_DRI_MASK) > mdrefr_dri(new_freq_mem)) { - preset_mdrefr = (preset_mdrefr & ~MDREFR_DRI_MASK); - preset_mdrefr |= mdrefr_dri(new_freq_mem); - } - postset_mdrefr = - (postset_mdrefr & ~MDREFR_DRI_MASK) | mdrefr_dri(new_freq_mem); - - /* If we're dividing the memory clock by two for the SDRAM clock, this - * must be set prior to the change. Clearing the divide must be done - * after the change. - */ - if (pxa_freq_settings[idx].div2) { - preset_mdrefr |= MDREFR_DB2_MASK; - postset_mdrefr |= MDREFR_DB2_MASK; - } else { - postset_mdrefr &= ~MDREFR_DB2_MASK; - } - - local_irq_save(flags); - - /* Set new the CCCR and prepare CCLKCFG */ - CCCR = pxa_freq_settings[idx].cccr; - cclkcfg = pxa_freq_settings[idx].cclkcfg; - - asm volatile(" \n\ - ldr r4, [%1] /* load MDREFR */ \n\ - b 2f \n\ - .align 5 \n\ -1: \n\ - str %3, [%1] /* preset the MDREFR */ \n\ - mcr p14, 0, %2, c6, c0, 0 /* set CCLKCFG[FCS] */ \n\ - str %4, [%1] /* postset the MDREFR */ \n\ - \n\ - b 3f \n\ -2: b 1b \n\ -3: nop \n\ - " - : "=&r" (unused) - : "r" (MDREFR), "r" (cclkcfg), - "r" (preset_mdrefr), "r" (postset_mdrefr) - : "r4", "r5"); - local_irq_restore(flags); - - /* - * Tell everyone what we've just done... - * you should add a notify client with any platform specific - * SDRAM refresh timer adjustments - */ - cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); - - /* - * Even if voltage setting fails, we don't report it, as the frequency - * change succeeded. The voltage reduction is not a critical failure, - * only power savings will suffer from this. - * - * Note: if the voltage change fails, and a return value is returned, a - * bug is triggered (seems a deadlock). Should anybody find out where, - * the "return 0" should become a "return ret". - */ - if (vcc_core && freqs.new < freqs.old) - ret = pxa_cpufreq_change_voltage(&pxa_freq_settings[idx]); - - return 0; -} - -static int pxa_cpufreq_init(struct cpufreq_policy *policy) -{ - int i; - unsigned int freq; - struct cpufreq_frequency_table *pxa255_freq_table; - pxa_freqs_t *pxa255_freqs; - - /* try to guess pxa27x cpu */ - if (cpu_is_pxa27x()) - pxa27x_guess_max_freq(); - - pxa_cpufreq_init_voltages(); - - init_sdram_rows(); - - /* set default policy and cpuinfo */ - policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ - policy->cur = get_clk_frequency_khz(0); /* current freq */ - policy->min = policy->max = policy->cur; - - /* Generate pxa25x the run cpufreq_frequency_table struct */ - for (i = 0; i < NUM_PXA25x_RUN_FREQS; i++) { - pxa255_run_freq_table[i].frequency = pxa255_run_freqs[i].khz; - pxa255_run_freq_table[i].index = i; - } - pxa255_run_freq_table[i].frequency = CPUFREQ_TABLE_END; - - /* Generate pxa25x the turbo cpufreq_frequency_table struct */ - for (i = 0; i < NUM_PXA25x_TURBO_FREQS; i++) { - pxa255_turbo_freq_table[i].frequency = - pxa255_turbo_freqs[i].khz; - pxa255_turbo_freq_table[i].index = i; - } - pxa255_turbo_freq_table[i].frequency = CPUFREQ_TABLE_END; - - pxa255_turbo_table = !!pxa255_turbo_table; - - /* Generate the pxa27x cpufreq_frequency_table struct */ - for (i = 0; i < NUM_PXA27x_FREQS; i++) { - freq = pxa27x_freqs[i].khz; - if (freq > pxa27x_maxfreq) - break; - pxa27x_freq_table[i].frequency = freq; - pxa27x_freq_table[i].index = i; - } - pxa27x_freq_table[i].index = i; - pxa27x_freq_table[i].frequency = CPUFREQ_TABLE_END; - - /* - * Set the policy's minimum and maximum frequencies from the tables - * just constructed. This sets cpuinfo.mxx_freq, min and max. - */ - if (cpu_is_pxa25x()) { - find_freq_tables(&pxa255_freq_table, &pxa255_freqs); - pr_info("PXA255 cpufreq using %s frequency table\n", - pxa255_turbo_table ? "turbo" : "run"); - cpufreq_frequency_table_cpuinfo(policy, pxa255_freq_table); - } - else if (cpu_is_pxa27x()) - cpufreq_frequency_table_cpuinfo(policy, pxa27x_freq_table); - - printk(KERN_INFO "PXA CPU frequency change support initialized\n"); - - return 0; -} - -static struct cpufreq_driver pxa_cpufreq_driver = { - .verify = pxa_verify_policy, - .target = pxa_set_target, - .init = pxa_cpufreq_init, - .get = pxa_cpufreq_get, - .name = "PXA2xx", -}; - -static int __init pxa_cpu_init(void) -{ - int ret = -ENODEV; - if (cpu_is_pxa25x() || cpu_is_pxa27x()) - ret = cpufreq_register_driver(&pxa_cpufreq_driver); - return ret; -} - -static void __exit pxa_cpu_exit(void) -{ - cpufreq_unregister_driver(&pxa_cpufreq_driver); -} - - -MODULE_AUTHOR("Intrinsyc Software Inc."); -MODULE_DESCRIPTION("CPU frequency changing driver for the PXA architecture"); -MODULE_LICENSE("GPL"); -module_init(pxa_cpu_init); -module_exit(pxa_cpu_exit); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa3xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa3xx.c deleted file mode 100644 index b85b4ab7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/cpufreq-pxa3xx.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/cpufreq-pxa3xx.c - * - * Copyright (C) 2008 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - */ - -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/sched.h> -#include <linux/init.h> -#include <linux/cpufreq.h> -#include <linux/slab.h> -#include <linux/io.h> - -#include <mach/pxa3xx-regs.h> - -#include "generic.h" - -#define HSS_104M (0) -#define HSS_156M (1) -#define HSS_208M (2) -#define HSS_312M (3) - -#define SMCFS_78M (0) -#define SMCFS_104M (2) -#define SMCFS_208M (5) - -#define SFLFS_104M (0) -#define SFLFS_156M (1) -#define SFLFS_208M (2) -#define SFLFS_312M (3) - -#define XSPCLK_156M (0) -#define XSPCLK_NONE (3) - -#define DMCFS_26M (0) -#define DMCFS_260M (3) - -struct pxa3xx_freq_info { - unsigned int cpufreq_mhz; - unsigned int core_xl : 5; - unsigned int core_xn : 3; - unsigned int hss : 2; - unsigned int dmcfs : 2; - unsigned int smcfs : 3; - unsigned int sflfs : 2; - unsigned int df_clkdiv : 3; - - int vcc_core; /* in mV */ - int vcc_sram; /* in mV */ -}; - -#define OP(cpufreq, _xl, _xn, _hss, _dmc, _smc, _sfl, _dfi, vcore, vsram) \ -{ \ - .cpufreq_mhz = cpufreq, \ - .core_xl = _xl, \ - .core_xn = _xn, \ - .hss = HSS_##_hss##M, \ - .dmcfs = DMCFS_##_dmc##M, \ - .smcfs = SMCFS_##_smc##M, \ - .sflfs = SFLFS_##_sfl##M, \ - .df_clkdiv = _dfi, \ - .vcc_core = vcore, \ - .vcc_sram = vsram, \ -} - -static struct pxa3xx_freq_info pxa300_freqs[] = { - /* CPU XL XN HSS DMEM SMEM SRAM DFI VCC_CORE VCC_SRAM */ - OP(104, 8, 1, 104, 260, 78, 104, 3, 1000, 1100), /* 104MHz */ - OP(208, 16, 1, 104, 260, 104, 156, 2, 1000, 1100), /* 208MHz */ - OP(416, 16, 2, 156, 260, 104, 208, 2, 1100, 1200), /* 416MHz */ - OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */ -}; - -static struct pxa3xx_freq_info pxa320_freqs[] = { - /* CPU XL XN HSS DMEM SMEM SRAM DFI VCC_CORE VCC_SRAM */ - OP(104, 8, 1, 104, 260, 78, 104, 3, 1000, 1100), /* 104MHz */ - OP(208, 16, 1, 104, 260, 104, 156, 2, 1000, 1100), /* 208MHz */ - OP(416, 16, 2, 156, 260, 104, 208, 2, 1100, 1200), /* 416MHz */ - OP(624, 24, 2, 208, 260, 208, 312, 3, 1375, 1400), /* 624MHz */ - OP(806, 31, 2, 208, 260, 208, 312, 3, 1400, 1400), /* 806MHz */ -}; - -static unsigned int pxa3xx_freqs_num; -static struct pxa3xx_freq_info *pxa3xx_freqs; -static struct cpufreq_frequency_table *pxa3xx_freqs_table; - -static int setup_freqs_table(struct cpufreq_policy *policy, - struct pxa3xx_freq_info *freqs, int num) -{ - struct cpufreq_frequency_table *table; - int i; - - table = kzalloc((num + 1) * sizeof(*table), GFP_KERNEL); - if (table == NULL) - return -ENOMEM; - - for (i = 0; i < num; i++) { - table[i].index = i; - table[i].frequency = freqs[i].cpufreq_mhz * 1000; - } - table[num].index = i; - table[num].frequency = CPUFREQ_TABLE_END; - - pxa3xx_freqs = freqs; - pxa3xx_freqs_num = num; - pxa3xx_freqs_table = table; - - return cpufreq_frequency_table_cpuinfo(policy, table); -} - -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); - - /* No clock until core PLL is re-locked */ - accr |= 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(); -} - -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); - - ACCR = accr; - - while ((ACSR & mask) != (accr & mask)) - cpu_relax(); -} - -static int pxa3xx_cpufreq_verify(struct cpufreq_policy *policy) -{ - return cpufreq_frequency_table_verify(policy, pxa3xx_freqs_table); -} - -static unsigned int pxa3xx_cpufreq_get(unsigned int cpu) -{ - return pxa3xx_get_clk_frequency_khz(0); -} - -static int pxa3xx_cpufreq_set(struct cpufreq_policy *policy, - unsigned int target_freq, - unsigned int relation) -{ - struct pxa3xx_freq_info *next; - struct cpufreq_freqs freqs; - unsigned long flags; - int idx; - - if (policy->cpu != 0) - return -EINVAL; - - /* Lookup the next frequency */ - if (cpufreq_frequency_table_target(policy, pxa3xx_freqs_table, - target_freq, relation, &idx)) - return -EINVAL; - - next = &pxa3xx_freqs[idx]; - - freqs.old = policy->cur; - freqs.new = next->cpufreq_mhz * 1000; - freqs.cpu = policy->cpu; - - pr_debug("CPU frequency from %d MHz to %d MHz%s\n", - freqs.old / 1000, freqs.new / 1000, - (freqs.old == freqs.new) ? " (skipped)" : ""); - - if (freqs.old == target_freq) - return 0; - - cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); - - local_irq_save(flags); - __update_core_freq(next); - __update_bus_freq(next); - local_irq_restore(flags); - - cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); - - return 0; -} - -static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy) -{ - int ret = -EINVAL; - - /* set default policy and cpuinfo */ - policy->cpuinfo.min_freq = 104000; - policy->cpuinfo.max_freq = (cpu_is_pxa320()) ? 806000 : 624000; - policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ - policy->max = pxa3xx_get_clk_frequency_khz(0); - policy->cur = policy->min = policy->max; - - if (cpu_is_pxa300() || cpu_is_pxa310()) - ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa300_freqs)); - - if (cpu_is_pxa320()) - ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa320_freqs)); - - if (ret) { - pr_err("failed to setup frequency table\n"); - return ret; - } - - pr_info("CPUFREQ support for PXA3xx initialized\n"); - return 0; -} - -static struct cpufreq_driver pxa3xx_cpufreq_driver = { - .verify = pxa3xx_cpufreq_verify, - .target = pxa3xx_cpufreq_set, - .init = pxa3xx_cpufreq_init, - .get = pxa3xx_cpufreq_get, - .name = "pxa3xx-cpufreq", -}; - -static int __init cpufreq_init(void) -{ - if (cpu_is_pxa3xx()) - return cpufreq_register_driver(&pxa3xx_cpufreq_driver); - - return 0; -} -module_init(cpufreq_init); - -static void __exit cpufreq_exit(void) -{ - cpufreq_unregister_driver(&pxa3xx_cpufreq_driver); -} -module_exit(cpufreq_exit); - -MODULE_DESCRIPTION("CPU frequency scaling driver for PXA3xx"); -MODULE_LICENSE("GPL"); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/csb701.c b/ANDROID_3.4.5/arch/arm/mach-pxa/csb701.c deleted file mode 100644 index 5a221a49..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/csb701.c +++ /dev/null @@ -1,66 +0,0 @@ -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/platform_device.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/leds.h> - -#include <asm/mach-types.h> - -static struct gpio_keys_button csb701_buttons[] = { - { - .code = 0x7, - .gpio = 1, - .active_low = 1, - .desc = "SW2", - .type = EV_SW, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data csb701_gpio_keys_data = { - .buttons = csb701_buttons, - .nbuttons = ARRAY_SIZE(csb701_buttons), -}; - -static struct gpio_led csb701_leds[] = { - { - .name = "csb701:yellow:heartbeat", - .default_trigger = "heartbeat", - .gpio = 11, - .active_low = 1, - }, -}; - -static struct platform_device csb701_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev.platform_data = &csb701_gpio_keys_data, -}; - -static struct gpio_led_platform_data csb701_leds_gpio_data = { - .leds = csb701_leds, - .num_leds = ARRAY_SIZE(csb701_leds), -}; - -static struct platform_device csb701_leds_gpio = { - .name = "leds-gpio", - .id = -1, - .dev.platform_data = &csb701_leds_gpio_data, -}; - -static struct platform_device *devices[] __initdata = { - &csb701_gpio_keys, - &csb701_leds_gpio, -}; - -static int __init csb701_init(void) -{ - if (!machine_is_csb726()) - return -ENODEV; - - return platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -module_init(csb701_init); - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/csb726.c b/ANDROID_3.4.5/arch/arm/mach-pxa/csb726.c deleted file mode 100644 index 67f0de37..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/csb726.c +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Support for Cogent CSB726 - * - * Copyright (c) 2008 Dmitry Eremin-Solenikov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/gpio.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/mtd/partitions.h> -#include <linux/sm501.h> -#include <linux/smsc911x.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <mach/csb726.h> -#include <mach/pxa27x.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/audio.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" - -/* - * n/a: 2, 5, 6, 7, 8, 23, 24, 25, 26, 27, 87, 88, 89, - * nu: 58 -- 77, 90, 91, 93, 102, 105-108, 114-116, - * XXX: 21, - * XXX: 79 CS_3 for LAN9215 or PSKTSEL on R2, R3 - * XXX: 33 CS_5 for LAN9215 on R1 - */ - -static unsigned long csb726_pin_config[] = { - GPIO78_nCS_2, /* EXP_CS */ - GPIO79_nCS_3, /* SMSC9215 */ - GPIO80_nCS_4, /* SM501 */ - - GPIO52_GPIO, /* #SMSC9251 int */ - GPIO53_GPIO, /* SM501 int */ - - GPIO1_GPIO, /* GPIO0 */ - GPIO11_GPIO, /* GPIO1 */ - GPIO9_GPIO, /* GPIO2 */ - GPIO10_GPIO, /* GPIO3 */ - GPIO16_PWM0_OUT, /* or GPIO4 */ - GPIO17_PWM1_OUT, /* or GPIO5 */ - GPIO94_GPIO, /* GPIO6 */ - GPIO95_GPIO, /* GPIO7 */ - GPIO96_GPIO, /* GPIO8 */ - GPIO97_GPIO, /* GPIO9 */ - GPIO15_GPIO, /* EXP_IRQ */ - GPIO18_RDY, /* EXP_WAIT */ - - GPIO0_GPIO, /* PWR_INT */ - GPIO104_GPIO, /* PWR_OFF */ - - GPIO12_GPIO, /* touch irq */ - - GPIO13_SSP2_TXD, - GPIO14_SSP2_SFRM, - MFP_CFG_OUT(GPIO19, AF1, DRIVE_LOW),/* SSP2_SYSCLK */ - GPIO22_SSP2_SCLK, - - GPIO81_SSP3_TXD, - GPIO82_SSP3_RXD, - GPIO83_SSP3_SFRM, - GPIO84_SSP3_SCLK, - - GPIO20_GPIO, /* SDIO int */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO100_GPIO, /* SD CD */ - GPIO101_GPIO, /* SD WP */ - - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO113_AC97_nRESET, - - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO36_FFUART_DCD, - GPIO37_FFUART_DSR, - GPIO38_FFUART_RI, - GPIO39_FFUART_TXD, - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, /* maybe unused */ - GPIO85_nPCE_1, - GPIO98_GPIO, /* CF IRQ */ - GPIO99_GPIO, /* CF CD */ - GPIO103_GPIO, /* Reset */ - - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, -}; - -static struct pxamci_platform_data csb726_mci = { - .detect_delay_ms = 500, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - /* FIXME setpower */ - .gpio_card_detect = CSB726_GPIO_MMC_DETECT, - .gpio_card_ro = CSB726_GPIO_MMC_RO, - .gpio_power = -1, -}; - -static struct pxaohci_platform_data csb726_ohci_platform_data = { - .port_mode = PMM_NPS_MODE, - .flags = ENABLE_PORT1 | NO_OC_PROTECTION, -}; - -static struct mtd_partition csb726_flash_partitions[] = { - { - .name = "Bootloader", - .offset = 0, - .size = CSB726_FLASH_uMON, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, - { - .name = "root", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - } -}; - -static struct physmap_flash_data csb726_flash_data = { - .width = 2, - .parts = csb726_flash_partitions, - .nr_parts = ARRAY_SIZE(csb726_flash_partitions), -}; - -static struct resource csb726_flash_resources[] = { - { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + CSB726_FLASH_SIZE - 1 , - .flags = IORESOURCE_MEM, - } -}; - -static struct platform_device csb726_flash = { - .name = "physmap-flash", - .dev = { - .platform_data = &csb726_flash_data, - }, - .resource = csb726_flash_resources, - .num_resources = ARRAY_SIZE(csb726_flash_resources), -}; - -static struct resource csb726_sm501_resources[] = { - { - .start = PXA_CS4_PHYS, - .end = PXA_CS4_PHYS + SZ_8M - 1, - .flags = IORESOURCE_MEM, - .name = "sm501-localmem", - }, - { - .start = PXA_CS4_PHYS + SZ_64M - SZ_2M, - .end = PXA_CS4_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - .name = "sm501-regs", - }, - { - .start = CSB726_IRQ_SM501, - .end = CSB726_IRQ_SM501, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct sm501_initdata csb726_sm501_initdata = { -/* .devices = SM501_USE_USB_HOST, */ - .devices = SM501_USE_USB_HOST | SM501_USE_UART0 | SM501_USE_UART1, -}; - -static struct sm501_platdata csb726_sm501_platdata = { - .init = &csb726_sm501_initdata, -}; - -static struct platform_device csb726_sm501 = { - .name = "sm501", - .id = 0, - .num_resources = ARRAY_SIZE(csb726_sm501_resources), - .resource = csb726_sm501_resources, - .dev = { - .platform_data = &csb726_sm501_platdata, - }, -}; - -static struct resource csb726_lan_resources[] = { - { - .start = PXA_CS3_PHYS, - .end = PXA_CS3_PHYS + SZ_64K - 1, - .flags = IORESOURCE_MEM, - }, - { - .start = CSB726_IRQ_LAN, - .end = CSB726_IRQ_LAN, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, - }, -}; - -struct smsc911x_platform_config csb726_lan_config = { - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, - .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, - .flags = SMSC911X_USE_32BIT, - .phy_interface = PHY_INTERFACE_MODE_MII, -}; - - -static struct platform_device csb726_lan = { - .name = "smsc911x", - .id = -1, - .num_resources = ARRAY_SIZE(csb726_lan_resources), - .resource = csb726_lan_resources, - .dev = { - .platform_data = &csb726_lan_config, - }, -}; - -static struct platform_device *devices[] __initdata = { - &csb726_flash, - &csb726_sm501, - &csb726_lan, -}; - -static void __init csb726_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(csb726_pin_config)); -/* __raw_writel(0x7ffc3ffc, MSC1); *//* LAN9215/EXP_CS */ -/* __raw_writel(0x06697ff4, MSC2); *//* none/SM501 */ - __raw_writel((__raw_readl(MSC2) & ~0xffff) | 0x7ff4, MSC2); /* SM501 */ - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_i2c_info(NULL); - pxa27x_set_i2c_power_info(NULL); - pxa_set_mci_info(&csb726_mci); - pxa_set_ohci_info(&csb726_ohci_platform_data); - pxa_set_ac97_info(NULL); - - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -MACHINE_START(CSB726, "Cogent CSB726") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = csb726_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/devices.c b/ANDROID_3.4.5/arch/arm/mach-pxa/devices.c deleted file mode 100644 index 166eee5b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/devices.c +++ /dev/null @@ -1,1118 +0,0 @@ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/dma-mapping.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/pmu.h> -#include <mach/udc.h> -#include <mach/pxa3xx-u2d.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/irda.h> -#include <mach/irqs.h> -#include <mach/ohci.h> -#include <plat/pxa27x_keypad.h> -#include <mach/camera.h> -#include <mach/audio.h> -#include <mach/hardware.h> -#include <plat/pxa3xx_nand.h> - -#include "devices.h" -#include "generic.h" - -void __init pxa_register_device(struct platform_device *dev, void *data) -{ - int ret; - - dev->dev.platform_data = data; - - ret = platform_device_register(dev); - if (ret) - dev_err(&dev->dev, "unable to register device: %d\n", ret); -} - -static struct resource pxa_resource_pmu = { - .start = IRQ_PMU, - .end = IRQ_PMU, - .flags = IORESOURCE_IRQ, -}; - -struct platform_device pxa_device_pmu = { - .name = "arm-pmu", - .id = ARM_PMU_DEVICE_CPU, - .resource = &pxa_resource_pmu, - .num_resources = 1, -}; - -static struct resource pxamci_resources[] = { - [0] = { - .start = 0x41100000, - .end = 0x41100fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_MMC, - .end = IRQ_MMC, - .flags = IORESOURCE_IRQ, - }, - [2] = { - .start = 21, - .end = 21, - .flags = IORESOURCE_DMA, - }, - [3] = { - .start = 22, - .end = 22, - .flags = IORESOURCE_DMA, - }, -}; - -static u64 pxamci_dmamask = 0xffffffffUL; - -struct platform_device pxa_device_mci = { - .name = "pxa2xx-mci", - .id = 0, - .dev = { - .dma_mask = &pxamci_dmamask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxamci_resources), - .resource = pxamci_resources, -}; - -void __init pxa_set_mci_info(struct pxamci_platform_data *info) -{ - pxa_register_device(&pxa_device_mci, info); -} - - -static struct pxa2xx_udc_mach_info pxa_udc_info = { - .gpio_pullup = -1, -}; - -void __init pxa_set_udc_info(struct pxa2xx_udc_mach_info *info) -{ - memcpy(&pxa_udc_info, info, sizeof *info); -} - -static struct resource pxa2xx_udc_resources[] = { - [0] = { - .start = 0x40600000, - .end = 0x4060ffff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_USB, - .end = IRQ_USB, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 udc_dma_mask = ~(u32)0; - -struct platform_device pxa25x_device_udc = { - .name = "pxa25x-udc", - .id = -1, - .resource = pxa2xx_udc_resources, - .num_resources = ARRAY_SIZE(pxa2xx_udc_resources), - .dev = { - .platform_data = &pxa_udc_info, - .dma_mask = &udc_dma_mask, - } -}; - -struct platform_device pxa27x_device_udc = { - .name = "pxa27x-udc", - .id = -1, - .resource = pxa2xx_udc_resources, - .num_resources = ARRAY_SIZE(pxa2xx_udc_resources), - .dev = { - .platform_data = &pxa_udc_info, - .dma_mask = &udc_dma_mask, - } -}; - -#ifdef CONFIG_PXA3xx -static struct resource pxa3xx_u2d_resources[] = { - [0] = { - .start = 0x54100000, - .end = 0x54100fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_USB2, - .end = IRQ_USB2, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa3xx_device_u2d = { - .name = "pxa3xx-u2d", - .id = -1, - .resource = pxa3xx_u2d_resources, - .num_resources = ARRAY_SIZE(pxa3xx_u2d_resources), -}; - -void __init pxa3xx_set_u2d_info(struct pxa3xx_u2d_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_u2d, info); -} -#endif /* CONFIG_PXA3xx */ - -static struct resource pxafb_resources[] = { - [0] = { - .start = 0x44000000, - .end = 0x4400ffff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_LCD, - .end = IRQ_LCD, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 fb_dma_mask = ~(u64)0; - -struct platform_device pxa_device_fb = { - .name = "pxa2xx-fb", - .id = -1, - .dev = { - .dma_mask = &fb_dma_mask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxafb_resources), - .resource = pxafb_resources, -}; - -void __init pxa_set_fb_info(struct device *parent, struct pxafb_mach_info *info) -{ - pxa_device_fb.dev.parent = parent; - pxa_register_device(&pxa_device_fb, info); -} - -static struct resource pxa_resource_ffuart[] = { - { - .start = 0x40100000, - .end = 0x40100023, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_FFUART, - .end = IRQ_FFUART, - .flags = IORESOURCE_IRQ, - } -}; - -struct platform_device pxa_device_ffuart = { - .name = "pxa2xx-uart", - .id = 0, - .resource = pxa_resource_ffuart, - .num_resources = ARRAY_SIZE(pxa_resource_ffuart), -}; - -void __init pxa_set_ffuart_info(void *info) -{ - pxa_register_device(&pxa_device_ffuart, info); -} - -static struct resource pxa_resource_btuart[] = { - { - .start = 0x40200000, - .end = 0x40200023, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_BTUART, - .end = IRQ_BTUART, - .flags = IORESOURCE_IRQ, - } -}; - -struct platform_device pxa_device_btuart = { - .name = "pxa2xx-uart", - .id = 1, - .resource = pxa_resource_btuart, - .num_resources = ARRAY_SIZE(pxa_resource_btuart), -}; - -void __init pxa_set_btuart_info(void *info) -{ - pxa_register_device(&pxa_device_btuart, info); -} - -static struct resource pxa_resource_stuart[] = { - { - .start = 0x40700000, - .end = 0x40700023, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_STUART, - .end = IRQ_STUART, - .flags = IORESOURCE_IRQ, - } -}; - -struct platform_device pxa_device_stuart = { - .name = "pxa2xx-uart", - .id = 2, - .resource = pxa_resource_stuart, - .num_resources = ARRAY_SIZE(pxa_resource_stuart), -}; - -void __init pxa_set_stuart_info(void *info) -{ - pxa_register_device(&pxa_device_stuart, info); -} - -static struct resource pxa_resource_hwuart[] = { - { - .start = 0x41600000, - .end = 0x4160002F, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_HWUART, - .end = IRQ_HWUART, - .flags = IORESOURCE_IRQ, - } -}; - -struct platform_device pxa_device_hwuart = { - .name = "pxa2xx-uart", - .id = 3, - .resource = pxa_resource_hwuart, - .num_resources = ARRAY_SIZE(pxa_resource_hwuart), -}; - -void __init pxa_set_hwuart_info(void *info) -{ - if (cpu_is_pxa255()) - pxa_register_device(&pxa_device_hwuart, info); - else - pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware"); -} - -static struct resource pxai2c_resources[] = { - { - .start = 0x40301680, - .end = 0x403016a3, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_I2C, - .end = IRQ_I2C, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa_device_i2c = { - .name = "pxa2xx-i2c", - .id = 0, - .resource = pxai2c_resources, - .num_resources = ARRAY_SIZE(pxai2c_resources), -}; - -void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info) -{ - pxa_register_device(&pxa_device_i2c, info); -} - -#ifdef CONFIG_PXA27x -static struct resource pxa27x_resources_i2c_power[] = { - { - .start = 0x40f00180, - .end = 0x40f001a3, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_PWRI2C, - .end = IRQ_PWRI2C, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa27x_device_i2c_power = { - .name = "pxa2xx-i2c", - .id = 1, - .resource = pxa27x_resources_i2c_power, - .num_resources = ARRAY_SIZE(pxa27x_resources_i2c_power), -}; -#endif - -static struct resource pxai2s_resources[] = { - { - .start = 0x40400000, - .end = 0x40400083, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_I2S, - .end = IRQ_I2S, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa_device_i2s = { - .name = "pxa2xx-i2s", - .id = -1, - .resource = pxai2s_resources, - .num_resources = ARRAY_SIZE(pxai2s_resources), -}; - -struct platform_device pxa_device_asoc_ssp1 = { - .name = "pxa-ssp-dai", - .id = 0, -}; - -struct platform_device pxa_device_asoc_ssp2= { - .name = "pxa-ssp-dai", - .id = 1, -}; - -struct platform_device pxa_device_asoc_ssp3 = { - .name = "pxa-ssp-dai", - .id = 2, -}; - -struct platform_device pxa_device_asoc_ssp4 = { - .name = "pxa-ssp-dai", - .id = 3, -}; - -struct platform_device pxa_device_asoc_platform = { - .name = "pxa-pcm-audio", - .id = -1, -}; - -static u64 pxaficp_dmamask = ~(u32)0; - -struct platform_device pxa_device_ficp = { - .name = "pxa2xx-ir", - .id = -1, - .dev = { - .dma_mask = &pxaficp_dmamask, - .coherent_dma_mask = 0xffffffff, - }, -}; - -void __init pxa_set_ficp_info(struct pxaficp_platform_data *info) -{ - pxa_register_device(&pxa_device_ficp, info); -} - -static struct resource pxa_rtc_resources[] = { - [0] = { - .start = 0x40900000, - .end = 0x40900000 + 0x3b, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_RTC1Hz, - .end = IRQ_RTC1Hz, - .name = "rtc 1Hz", - .flags = IORESOURCE_IRQ, - }, - [2] = { - .start = IRQ_RTCAlrm, - .end = IRQ_RTCAlrm, - .name = "rtc alarm", - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa_device_rtc = { - .name = "pxa-rtc", - .id = -1, - .num_resources = ARRAY_SIZE(pxa_rtc_resources), - .resource = pxa_rtc_resources, -}; - -static struct resource sa1100_rtc_resources[] = { - { - .start = IRQ_RTC1Hz, - .end = IRQ_RTC1Hz, - .name = "rtc 1Hz", - .flags = IORESOURCE_IRQ, - }, { - .start = IRQ_RTCAlrm, - .end = IRQ_RTCAlrm, - .name = "rtc alarm", - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device sa1100_device_rtc = { - .name = "sa1100-rtc", - .id = -1, - .num_resources = ARRAY_SIZE(sa1100_rtc_resources), - .resource = sa1100_rtc_resources, -}; - -static struct resource pxa_ac97_resources[] = { - [0] = { - .start = 0x40500000, - .end = 0x40500000 + 0xfff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_AC97, - .end = IRQ_AC97, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 pxa_ac97_dmamask = 0xffffffffUL; - -struct platform_device pxa_device_ac97 = { - .name = "pxa2xx-ac97", - .id = -1, - .dev = { - .dma_mask = &pxa_ac97_dmamask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxa_ac97_resources), - .resource = pxa_ac97_resources, -}; - -void __init pxa_set_ac97_info(pxa2xx_audio_ops_t *ops) -{ - pxa_register_device(&pxa_device_ac97, ops); -} - -#ifdef CONFIG_PXA25x - -static struct resource pxa25x_resource_pwm0[] = { - [0] = { - .start = 0x40b00000, - .end = 0x40b0000f, - .flags = IORESOURCE_MEM, - }, -}; - -struct platform_device pxa25x_device_pwm0 = { - .name = "pxa25x-pwm", - .id = 0, - .resource = pxa25x_resource_pwm0, - .num_resources = ARRAY_SIZE(pxa25x_resource_pwm0), -}; - -static struct resource pxa25x_resource_pwm1[] = { - [0] = { - .start = 0x40c00000, - .end = 0x40c0000f, - .flags = IORESOURCE_MEM, - }, -}; - -struct platform_device pxa25x_device_pwm1 = { - .name = "pxa25x-pwm", - .id = 1, - .resource = pxa25x_resource_pwm1, - .num_resources = ARRAY_SIZE(pxa25x_resource_pwm1), -}; - -static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa25x_resource_ssp[] = { - [0] = { - .start = 0x41000000, - .end = 0x4100001f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_SSP, - .end = IRQ_SSP, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 13, - .end = 13, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 14, - .end = 14, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa25x_device_ssp = { - .name = "pxa25x-ssp", - .id = 0, - .dev = { - .dma_mask = &pxa25x_ssp_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa25x_resource_ssp, - .num_resources = ARRAY_SIZE(pxa25x_resource_ssp), -}; - -static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa25x_resource_nssp[] = { - [0] = { - .start = 0x41400000, - .end = 0x4140002f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_NSSP, - .end = IRQ_NSSP, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 15, - .end = 15, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 16, - .end = 16, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa25x_device_nssp = { - .name = "pxa25x-nssp", - .id = 1, - .dev = { - .dma_mask = &pxa25x_nssp_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa25x_resource_nssp, - .num_resources = ARRAY_SIZE(pxa25x_resource_nssp), -}; - -static u64 pxa25x_assp_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa25x_resource_assp[] = { - [0] = { - .start = 0x41500000, - .end = 0x4150002f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_ASSP, - .end = IRQ_ASSP, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 23, - .end = 23, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 24, - .end = 24, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa25x_device_assp = { - /* ASSP is basically equivalent to NSSP */ - .name = "pxa25x-nssp", - .id = 2, - .dev = { - .dma_mask = &pxa25x_assp_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa25x_resource_assp, - .num_resources = ARRAY_SIZE(pxa25x_resource_assp), -}; -#endif /* CONFIG_PXA25x */ - -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) -static struct resource pxa27x_resource_camera[] = { - [0] = { - .start = 0x50000000, - .end = 0x50000fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_CAMERA, - .end = IRQ_CAMERA, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 pxa27x_dma_mask_camera = DMA_BIT_MASK(32); - -static struct platform_device pxa27x_device_camera = { - .name = "pxa27x-camera", - .id = 0, /* This is used to put cameras on this interface */ - .dev = { - .dma_mask = &pxa27x_dma_mask_camera, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxa27x_resource_camera), - .resource = pxa27x_resource_camera, -}; - -void __init pxa_set_camera_info(struct pxacamera_platform_data *info) -{ - pxa_register_device(&pxa27x_device_camera, info); -} - -static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa27x_resource_ohci[] = { - [0] = { - .start = 0x4C000000, - .end = 0x4C00ff6f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_USBH1, - .end = IRQ_USBH1, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa27x_device_ohci = { - .name = "pxa27x-ohci", - .id = -1, - .dev = { - .dma_mask = &pxa27x_ohci_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .num_resources = ARRAY_SIZE(pxa27x_resource_ohci), - .resource = pxa27x_resource_ohci, -}; - -void __init pxa_set_ohci_info(struct pxaohci_platform_data *info) -{ - pxa_register_device(&pxa27x_device_ohci, info); -} -#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ - -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) -static struct resource pxa27x_resource_keypad[] = { - [0] = { - .start = 0x41500000, - .end = 0x4150004c, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_KEYPAD, - .end = IRQ_KEYPAD, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa27x_device_keypad = { - .name = "pxa27x-keypad", - .id = -1, - .resource = pxa27x_resource_keypad, - .num_resources = ARRAY_SIZE(pxa27x_resource_keypad), -}; - -void __init pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info) -{ - pxa_register_device(&pxa27x_device_keypad, info); -} - -static u64 pxa27x_ssp1_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa27x_resource_ssp1[] = { - [0] = { - .start = 0x41000000, - .end = 0x4100003f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_SSP, - .end = IRQ_SSP, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 13, - .end = 13, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 14, - .end = 14, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa27x_device_ssp1 = { - .name = "pxa27x-ssp", - .id = 0, - .dev = { - .dma_mask = &pxa27x_ssp1_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa27x_resource_ssp1, - .num_resources = ARRAY_SIZE(pxa27x_resource_ssp1), -}; - -static u64 pxa27x_ssp2_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa27x_resource_ssp2[] = { - [0] = { - .start = 0x41700000, - .end = 0x4170003f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_SSP2, - .end = IRQ_SSP2, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 15, - .end = 15, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 16, - .end = 16, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa27x_device_ssp2 = { - .name = "pxa27x-ssp", - .id = 1, - .dev = { - .dma_mask = &pxa27x_ssp2_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa27x_resource_ssp2, - .num_resources = ARRAY_SIZE(pxa27x_resource_ssp2), -}; - -static u64 pxa27x_ssp3_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa27x_resource_ssp3[] = { - [0] = { - .start = 0x41900000, - .end = 0x4190003f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_SSP3, - .end = IRQ_SSP3, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 66, - .end = 66, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 67, - .end = 67, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa27x_device_ssp3 = { - .name = "pxa27x-ssp", - .id = 2, - .dev = { - .dma_mask = &pxa27x_ssp3_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa27x_resource_ssp3, - .num_resources = ARRAY_SIZE(pxa27x_resource_ssp3), -}; - -static struct resource pxa27x_resource_pwm0[] = { - [0] = { - .start = 0x40b00000, - .end = 0x40b0001f, - .flags = IORESOURCE_MEM, - }, -}; - -struct platform_device pxa27x_device_pwm0 = { - .name = "pxa27x-pwm", - .id = 0, - .resource = pxa27x_resource_pwm0, - .num_resources = ARRAY_SIZE(pxa27x_resource_pwm0), -}; - -static struct resource pxa27x_resource_pwm1[] = { - [0] = { - .start = 0x40c00000, - .end = 0x40c0001f, - .flags = IORESOURCE_MEM, - }, -}; - -struct platform_device pxa27x_device_pwm1 = { - .name = "pxa27x-pwm", - .id = 1, - .resource = pxa27x_resource_pwm1, - .num_resources = ARRAY_SIZE(pxa27x_resource_pwm1), -}; -#endif /* CONFIG_PXA27x || CONFIG_PXA3xx || CONFIG_PXA95x*/ - -#ifdef CONFIG_PXA3xx -static struct resource pxa3xx_resources_mci2[] = { - [0] = { - .start = 0x42000000, - .end = 0x42000fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_MMC2, - .end = IRQ_MMC2, - .flags = IORESOURCE_IRQ, - }, - [2] = { - .start = 93, - .end = 93, - .flags = IORESOURCE_DMA, - }, - [3] = { - .start = 94, - .end = 94, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa3xx_device_mci2 = { - .name = "pxa2xx-mci", - .id = 1, - .dev = { - .dma_mask = &pxamci_dmamask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxa3xx_resources_mci2), - .resource = pxa3xx_resources_mci2, -}; - -void __init pxa3xx_set_mci2_info(struct pxamci_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_mci2, info); -} - -static struct resource pxa3xx_resources_mci3[] = { - [0] = { - .start = 0x42500000, - .end = 0x42500fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_MMC3, - .end = IRQ_MMC3, - .flags = IORESOURCE_IRQ, - }, - [2] = { - .start = 100, - .end = 100, - .flags = IORESOURCE_DMA, - }, - [3] = { - .start = 101, - .end = 101, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa3xx_device_mci3 = { - .name = "pxa2xx-mci", - .id = 2, - .dev = { - .dma_mask = &pxamci_dmamask, - .coherent_dma_mask = 0xffffffff, - }, - .num_resources = ARRAY_SIZE(pxa3xx_resources_mci3), - .resource = pxa3xx_resources_mci3, -}; - -void __init pxa3xx_set_mci3_info(struct pxamci_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_mci3, info); -} - -static struct resource pxa3xx_resources_gcu[] = { - { - .start = 0x54000000, - .end = 0x54000fff, - .flags = IORESOURCE_MEM, - }, - { - .start = IRQ_GCU, - .end = IRQ_GCU, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 pxa3xx_gcu_dmamask = DMA_BIT_MASK(32); - -struct platform_device pxa3xx_device_gcu = { - .name = "pxa3xx-gcu", - .id = -1, - .num_resources = ARRAY_SIZE(pxa3xx_resources_gcu), - .resource = pxa3xx_resources_gcu, - .dev = { - .dma_mask = &pxa3xx_gcu_dmamask, - .coherent_dma_mask = 0xffffffff, - }, -}; - -#endif /* CONFIG_PXA3xx */ - -#if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) -static struct resource pxa3xx_resources_i2c_power[] = { - { - .start = 0x40f500c0, - .end = 0x40f500d3, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_PWRI2C, - .end = IRQ_PWRI2C, - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa3xx_device_i2c_power = { - .name = "pxa3xx-pwri2c", - .id = 1, - .resource = pxa3xx_resources_i2c_power, - .num_resources = ARRAY_SIZE(pxa3xx_resources_i2c_power), -}; - -static struct resource pxa3xx_resources_nand[] = { - [0] = { - .start = 0x43100000, - .end = 0x43100053, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_NAND, - .end = IRQ_NAND, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for Data DMA */ - .start = 97, - .end = 97, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for Command DMA */ - .start = 99, - .end = 99, - .flags = IORESOURCE_DMA, - }, -}; - -static u64 pxa3xx_nand_dma_mask = DMA_BIT_MASK(32); - -struct platform_device pxa3xx_device_nand = { - .name = "pxa3xx-nand", - .id = -1, - .dev = { - .dma_mask = &pxa3xx_nand_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .num_resources = ARRAY_SIZE(pxa3xx_resources_nand), - .resource = pxa3xx_resources_nand, -}; - -void __init pxa3xx_set_nand_info(struct pxa3xx_nand_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_nand, info); -} - -static u64 pxa3xx_ssp4_dma_mask = DMA_BIT_MASK(32); - -static struct resource pxa3xx_resource_ssp4[] = { - [0] = { - .start = 0x41a00000, - .end = 0x41a0003f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = IRQ_SSP4, - .end = IRQ_SSP4, - .flags = IORESOURCE_IRQ, - }, - [2] = { - /* DRCMR for RX */ - .start = 2, - .end = 2, - .flags = IORESOURCE_DMA, - }, - [3] = { - /* DRCMR for TX */ - .start = 3, - .end = 3, - .flags = IORESOURCE_DMA, - }, -}; - -struct platform_device pxa3xx_device_ssp4 = { - /* PXA3xx SSP is basically equivalent to PXA27x */ - .name = "pxa27x-ssp", - .id = 3, - .dev = { - .dma_mask = &pxa3xx_ssp4_dma_mask, - .coherent_dma_mask = DMA_BIT_MASK(32), - }, - .resource = pxa3xx_resource_ssp4, - .num_resources = ARRAY_SIZE(pxa3xx_resource_ssp4), -}; -#endif /* CONFIG_PXA3xx || CONFIG_PXA95x */ - -struct resource pxa_resource_gpio[] = { - { - .start = 0x40e00000, - .end = 0x40e0ffff, - .flags = IORESOURCE_MEM, - }, { - .start = IRQ_GPIO0, - .end = IRQ_GPIO0, - .name = "gpio0", - .flags = IORESOURCE_IRQ, - }, { - .start = IRQ_GPIO1, - .end = IRQ_GPIO1, - .name = "gpio1", - .flags = IORESOURCE_IRQ, - }, { - .start = IRQ_GPIO_2_x, - .end = IRQ_GPIO_2_x, - .name = "gpio_mux", - .flags = IORESOURCE_IRQ, - }, -}; - -struct platform_device pxa_device_gpio = { - .name = "pxa-gpio", - .id = -1, - .num_resources = ARRAY_SIZE(pxa_resource_gpio), - .resource = pxa_resource_gpio, -}; - -/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1. - * See comment in arch/arm/mach-pxa/ssp.c::ssp_probe() */ -void __init pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_master *info) -{ - struct platform_device *pd; - - pd = platform_device_alloc("pxa2xx-spi", id); - if (pd == NULL) { - printk(KERN_ERR "pxa2xx-spi: failed to allocate device id %d\n", - id); - return; - } - - pd->dev.platform_data = info; - platform_device_add(pd); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/devices.h b/ANDROID_3.4.5/arch/arm/mach-pxa/devices.h deleted file mode 100644 index 1475db10..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/devices.h +++ /dev/null @@ -1,49 +0,0 @@ -extern struct platform_device pxa_device_pmu; -extern struct platform_device pxa_device_mci; -extern struct platform_device pxa3xx_device_mci2; -extern struct platform_device pxa3xx_device_mci3; -extern struct platform_device pxa25x_device_udc; -extern struct platform_device pxa27x_device_udc; -extern struct platform_device pxa3xx_device_u2d; -extern struct platform_device pxa_device_fb; -extern struct platform_device pxa_device_ffuart; -extern struct platform_device pxa_device_btuart; -extern struct platform_device pxa_device_stuart; -extern struct platform_device pxa_device_hwuart; -extern struct platform_device pxa_device_i2c; -extern struct platform_device pxa_device_i2s; -extern struct platform_device pxa_device_ficp; -extern struct platform_device sa1100_device_rtc; -extern struct platform_device pxa_device_rtc; -extern struct platform_device pxa_device_ac97; -extern struct platform_device pxa_device_gpio; - -extern struct platform_device pxa27x_device_i2c_power; -extern struct platform_device pxa27x_device_ohci; -extern struct platform_device pxa27x_device_keypad; - -extern struct platform_device pxa25x_device_ssp; -extern struct platform_device pxa25x_device_nssp; -extern struct platform_device pxa25x_device_assp; -extern struct platform_device pxa27x_device_ssp1; -extern struct platform_device pxa27x_device_ssp2; -extern struct platform_device pxa27x_device_ssp3; -extern struct platform_device pxa3xx_device_ssp4; - -extern struct platform_device pxa25x_device_pwm0; -extern struct platform_device pxa25x_device_pwm1; -extern struct platform_device pxa27x_device_pwm0; -extern struct platform_device pxa27x_device_pwm1; - -extern struct platform_device pxa3xx_device_nand; -extern struct platform_device pxa3xx_device_i2c_power; - -extern struct platform_device pxa3xx_device_gcu; - -extern struct platform_device pxa_device_asoc_platform; -extern struct platform_device pxa_device_asoc_ssp1; -extern struct platform_device pxa_device_asoc_ssp2; -extern struct platform_device pxa_device_asoc_ssp3; -extern struct platform_device pxa_device_asoc_ssp4; - -void __init pxa_register_device(struct platform_device *dev, void *data); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/em-x270.c b/ANDROID_3.4.5/arch/arm/mach-pxa/em-x270.c deleted file mode 100644 index 16ec557b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/em-x270.c +++ /dev/null @@ -1,1321 +0,0 @@ -/* - * Support for CompuLab EM-X270 platform - * - * Copyright (C) 2007, 2008 CompuLab, Ltd. - * Author: Mike Rapoport <mike@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/delay.h> - -#include <linux/dm9000.h> -#include <linux/rtc-v3020.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/input.h> -#include <linux/gpio_keys.h> -#include <linux/gpio.h> -#include <linux/mfd/da903x.h> -#include <linux/regulator/machine.h> -#include <linux/spi/spi.h> -#include <linux/spi/tdo24m.h> -#include <linux/spi/libertas_spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/power_supply.h> -#include <linux/apm-emulation.h> -#include <linux/i2c.h> -#include <linux/i2c/pca953x.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/regulator/userspace-consumer.h> - -#include <media/soc_camera.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/pxa27x-udc.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/ohci.h> -#include <mach/mmc.h> -#include <plat/pxa27x_keypad.h> -#include <mach/camera.h> - -#include "generic.h" -#include "devices.h" - -/* EM-X270 specific GPIOs */ -#define GPIO13_MMC_CD (13) -#define GPIO95_MMC_WP (95) -#define GPIO56_NAND_RB (56) -#define GPIO93_CAM_RESET (93) -#define GPIO16_USB_HUB_RESET (16) - -/* eXeda specific GPIOs */ -#define GPIO114_MMC_CD (114) -#define GPIO20_NAND_RB (20) -#define GPIO38_SD_PWEN (38) -#define GPIO37_WLAN_RST (37) -#define GPIO95_TOUCHPAD_INT (95) -#define GPIO130_CAM_RESET (130) -#define GPIO10_USB_HUB_RESET (10) - -/* common GPIOs */ -#define GPIO11_NAND_CS (11) -#define GPIO41_ETHIRQ (41) -#define EM_X270_ETHIRQ PXA_GPIO_TO_IRQ(GPIO41_ETHIRQ) -#define GPIO115_WLAN_PWEN (115) -#define GPIO19_WLAN_STRAP (19) -#define GPIO9_USB_VBUS_EN (9) - -static int mmc_cd; -static int nand_rb; -static int dm9000_flags; -static int cam_reset; -static int usb_hub_reset; - -static unsigned long common_pin_config[] = { - /* AC'97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO98_AC97_SYSCLK, - GPIO113_AC97_nRESET, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* MCI controller */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* QCI */ - GPIO84_CIF_FV, - GPIO25_CIF_LV, - GPIO53_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO81_CIF_DD_0, - GPIO55_CIF_DD_1, - GPIO51_CIF_DD_2, - GPIO50_CIF_DD_3, - GPIO52_CIF_DD_4, - GPIO48_CIF_DD_5, - GPIO17_CIF_DD_6, - GPIO12_CIF_DD_7, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* Keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO34_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO39_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, - GPIO91_KP_MKIN_6 | WAKEUP_ON_LEVEL_HIGH, - GPIO36_KP_MKIN_7 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, - GPIO96_KP_MKOUT_6, - GPIO22_KP_MKOUT_7, - - /* SSP1 */ - GPIO26_SSP1_RXD, - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO57_SSP1_TXD, - - /* SSP2 */ - GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */ - GPIO14_GPIO, - GPIO89_SSP2_TXD, - GPIO88_SSP2_RXD, - - /* SDRAM and local bus */ - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO79_nCS_3, - GPIO80_nCS_4, - GPIO49_nPWE, - GPIO18_RDY, - - /* GPIO */ - GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, /* sleep/resume button */ - - /* power controls */ - GPIO20_GPIO | MFP_LPM_DRIVE_LOW, /* GPRS_PWEN */ - GPIO115_GPIO | MFP_LPM_DRIVE_LOW, /* WLAN_PWEN */ - - /* NAND controls */ - GPIO11_GPIO | MFP_LPM_DRIVE_HIGH, /* NAND CE# */ - - /* interrupts */ - GPIO41_GPIO, /* DM9000 interrupt */ -}; - -static unsigned long em_x270_pin_config[] = { - GPIO13_GPIO, /* MMC card detect */ - GPIO16_GPIO, /* USB hub reset */ - GPIO56_GPIO, /* NAND Ready/Busy */ - GPIO93_GPIO | MFP_LPM_DRIVE_LOW, /* Camera reset */ - GPIO95_GPIO, /* MMC Write protect */ -}; - -static unsigned long exeda_pin_config[] = { - GPIO10_GPIO, /* USB hub reset */ - GPIO20_GPIO, /* NAND Ready/Busy */ - GPIO38_GPIO | MFP_LPM_DRIVE_LOW, /* SD slot power */ - GPIO95_GPIO, /* touchpad IRQ */ - GPIO114_GPIO, /* MMC card detect */ -}; - -#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) -static struct resource em_x270_dm9000_resource[] = { - [0] = { - .start = PXA_CS2_PHYS, - .end = PXA_CS2_PHYS + 3, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_CS2_PHYS + 8, - .end = PXA_CS2_PHYS + 8 + 0x3f, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = EM_X270_ETHIRQ, - .end = EM_X270_ETHIRQ, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct dm9000_plat_data em_x270_dm9000_platdata = { - .flags = DM9000_PLATF_NO_EEPROM, -}; - -static struct platform_device em_x270_dm9000 = { - .name = "dm9000", - .id = 0, - .num_resources = ARRAY_SIZE(em_x270_dm9000_resource), - .resource = em_x270_dm9000_resource, - .dev = { - .platform_data = &em_x270_dm9000_platdata, - } -}; - -static void __init em_x270_init_dm9000(void) -{ - em_x270_dm9000_platdata.flags |= dm9000_flags; - platform_device_register(&em_x270_dm9000); -} -#else -static inline void em_x270_init_dm9000(void) {} -#endif - -/* V3020 RTC */ -#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE) -static struct resource em_x270_v3020_resource[] = { - [0] = { - .start = PXA_CS4_PHYS, - .end = PXA_CS4_PHYS + 3, - .flags = IORESOURCE_MEM, - }, -}; - -static struct v3020_platform_data em_x270_v3020_platdata = { - .leftshift = 0, -}; - -static struct platform_device em_x270_rtc = { - .name = "v3020", - .num_resources = ARRAY_SIZE(em_x270_v3020_resource), - .resource = em_x270_v3020_resource, - .id = -1, - .dev = { - .platform_data = &em_x270_v3020_platdata, - } -}; - -static void __init em_x270_init_rtc(void) -{ - platform_device_register(&em_x270_rtc); -} -#else -static inline void em_x270_init_rtc(void) {} -#endif - -/* NAND flash */ -#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE) -static inline void nand_cs_on(void) -{ - gpio_set_value(GPIO11_NAND_CS, 0); -} - -static void nand_cs_off(void) -{ - dsb(); - - gpio_set_value(GPIO11_NAND_CS, 1); -} - -/* hardware specific access to control-lines */ -static void em_x270_nand_cmd_ctl(struct mtd_info *mtd, int dat, - unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - unsigned long nandaddr = (unsigned long)this->IO_ADDR_W; - - dsb(); - - if (ctrl & NAND_CTRL_CHANGE) { - if (ctrl & NAND_ALE) - nandaddr |= (1 << 3); - else - nandaddr &= ~(1 << 3); - if (ctrl & NAND_CLE) - nandaddr |= (1 << 2); - else - nandaddr &= ~(1 << 2); - if (ctrl & NAND_NCE) - nand_cs_on(); - else - nand_cs_off(); - } - - dsb(); - this->IO_ADDR_W = (void __iomem *)nandaddr; - if (dat != NAND_CMD_NONE) - writel(dat, this->IO_ADDR_W); - - dsb(); -} - -/* read device ready pin */ -static int em_x270_nand_device_ready(struct mtd_info *mtd) -{ - dsb(); - - return gpio_get_value(nand_rb); -} - -static struct mtd_partition em_x270_partition_info[] = { - [0] = { - .name = "em_x270-0", - .offset = 0, - .size = SZ_4M, - }, - [1] = { - .name = "em_x270-1", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL - }, -}; - -static const char *em_x270_part_probes[] = { "cmdlinepart", NULL }; - -struct platform_nand_data em_x270_nand_platdata = { - .chip = { - .nr_chips = 1, - .chip_offset = 0, - .nr_partitions = ARRAY_SIZE(em_x270_partition_info), - .partitions = em_x270_partition_info, - .chip_delay = 20, - .part_probe_types = em_x270_part_probes, - }, - .ctrl = { - .hwcontrol = 0, - .dev_ready = em_x270_nand_device_ready, - .select_chip = 0, - .cmd_ctrl = em_x270_nand_cmd_ctl, - }, -}; - -static struct resource em_x270_nand_resource[] = { - [0] = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + 12, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device em_x270_nand = { - .name = "gen_nand", - .num_resources = ARRAY_SIZE(em_x270_nand_resource), - .resource = em_x270_nand_resource, - .id = -1, - .dev = { - .platform_data = &em_x270_nand_platdata, - } -}; - -static void __init em_x270_init_nand(void) -{ - int err; - - err = gpio_request(GPIO11_NAND_CS, "NAND CS"); - if (err) { - pr_warning("EM-X270: failed to request NAND CS gpio\n"); - return; - } - - gpio_direction_output(GPIO11_NAND_CS, 1); - - err = gpio_request(nand_rb, "NAND R/B"); - if (err) { - pr_warning("EM-X270: failed to request NAND R/B gpio\n"); - gpio_free(GPIO11_NAND_CS); - return; - } - - gpio_direction_input(nand_rb); - - platform_device_register(&em_x270_nand); -} -#else -static inline void em_x270_init_nand(void) {} -#endif - -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition em_x270_nor_parts[] = { - { - .name = "Bootloader", - .offset = 0x00000000, - .size = 0x00050000, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, { - .name = "Environment", - .offset = 0x00050000, - .size = 0x00010000, - }, { - .name = "Reserved", - .offset = 0x00060000, - .size = 0x00050000, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, { - .name = "Splashscreen", - .offset = 0x000b0000, - .size = 0x00050000, - } -}; - -static struct physmap_flash_data em_x270_nor_data[] = { - [0] = { - .width = 2, - .parts = em_x270_nor_parts, - .nr_parts = ARRAY_SIZE(em_x270_nor_parts), - }, -}; - -static struct resource em_x270_nor_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_1M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device em_x270_physmap_flash = { - .name = "physmap-flash", - .id = 0, - .num_resources = 1, - .resource = &em_x270_nor_flash_resource, - .dev = { - .platform_data = &em_x270_nor_data, - }, -}; - -static void __init em_x270_init_nor(void) -{ - platform_device_register(&em_x270_physmap_flash); -} -#else -static inline void em_x270_init_nor(void) {} -#endif - -/* PXA27x OHCI controller setup */ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static struct regulator *em_x270_usb_ldo; - -static int em_x270_usb_hub_init(void) -{ - int err; - - em_x270_usb_ldo = regulator_get(NULL, "vcc usb"); - if (IS_ERR(em_x270_usb_ldo)) - return PTR_ERR(em_x270_usb_ldo); - - err = gpio_request(GPIO9_USB_VBUS_EN, "vbus en"); - if (err) - goto err_free_usb_ldo; - - err = gpio_request(usb_hub_reset, "hub rst"); - if (err) - goto err_free_vbus_gpio; - - /* USB Hub power-on and reset */ - gpio_direction_output(usb_hub_reset, 1); - gpio_direction_output(GPIO9_USB_VBUS_EN, 0); - regulator_enable(em_x270_usb_ldo); - gpio_set_value(usb_hub_reset, 0); - gpio_set_value(usb_hub_reset, 1); - regulator_disable(em_x270_usb_ldo); - regulator_enable(em_x270_usb_ldo); - gpio_set_value(usb_hub_reset, 0); - gpio_set_value(GPIO9_USB_VBUS_EN, 1); - - return 0; - -err_free_vbus_gpio: - gpio_free(GPIO9_USB_VBUS_EN); -err_free_usb_ldo: - regulator_put(em_x270_usb_ldo); - - return err; -} - -static int em_x270_ohci_init(struct device *dev) -{ - int err; - - /* we don't want to entirely disable USB if the HUB init failed */ - err = em_x270_usb_hub_init(); - if (err) - pr_err("USB Hub initialization failed: %d\n", err); - - /* enable port 2 transiever */ - UP2OCR = UP2OCR_HXS | UP2OCR_HXOE; - - return 0; -} - -static void em_x270_ohci_exit(struct device *dev) -{ - gpio_free(usb_hub_reset); - gpio_free(GPIO9_USB_VBUS_EN); - - if (!IS_ERR(em_x270_usb_ldo)) { - if (regulator_is_enabled(em_x270_usb_ldo)) - regulator_disable(em_x270_usb_ldo); - - regulator_put(em_x270_usb_ldo); - } -} - -static struct pxaohci_platform_data em_x270_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT2 | POWER_CONTROL_LOW, - .init = em_x270_ohci_init, - .exit = em_x270_ohci_exit, -}; - -static void __init em_x270_init_ohci(void) -{ - pxa_set_ohci_info(&em_x270_ohci_platform_data); -} -#else -static inline void em_x270_init_ohci(void) {} -#endif - -/* MCI controller setup */ -#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) -static struct regulator *em_x270_sdio_ldo; - -static int em_x270_mci_init(struct device *dev, - irq_handler_t em_x270_detect_int, - void *data) -{ - int err; - - em_x270_sdio_ldo = regulator_get(dev, "vcc sdio"); - if (IS_ERR(em_x270_sdio_ldo)) { - dev_err(dev, "can't request SDIO power supply: %ld\n", - PTR_ERR(em_x270_sdio_ldo)); - return PTR_ERR(em_x270_sdio_ldo); - } - - err = request_irq(gpio_to_irq(mmc_cd), em_x270_detect_int, - IRQF_DISABLED | IRQF_TRIGGER_RISING | - IRQF_TRIGGER_FALLING, - "MMC card detect", data); - if (err) { - dev_err(dev, "can't request MMC card detect IRQ: %d\n", err); - goto err_irq; - } - - if (machine_is_em_x270()) { - err = gpio_request(GPIO95_MMC_WP, "MMC WP"); - if (err) { - dev_err(dev, "can't request MMC write protect: %d\n", - err); - goto err_gpio_wp; - } - gpio_direction_input(GPIO95_MMC_WP); - } else { - err = gpio_request(GPIO38_SD_PWEN, "sdio power"); - if (err) { - dev_err(dev, "can't request MMC power control : %d\n", - err); - goto err_gpio_wp; - } - gpio_direction_output(GPIO38_SD_PWEN, 1); - } - - return 0; - -err_gpio_wp: - free_irq(gpio_to_irq(mmc_cd), data); -err_irq: - regulator_put(em_x270_sdio_ldo); - - return err; -} - -static void em_x270_mci_setpower(struct device *dev, unsigned int vdd) -{ - struct pxamci_platform_data* p_d = dev->platform_data; - - if ((1 << vdd) & p_d->ocr_mask) { - int vdd_uV = (2000 + (vdd - __ffs(MMC_VDD_20_21)) * 100) * 1000; - - regulator_set_voltage(em_x270_sdio_ldo, vdd_uV, vdd_uV); - regulator_enable(em_x270_sdio_ldo); - } else { - regulator_disable(em_x270_sdio_ldo); - } -} - -static void em_x270_mci_exit(struct device *dev, void *data) -{ - free_irq(gpio_to_irq(mmc_cd), data); - regulator_put(em_x270_sdio_ldo); - - if (machine_is_em_x270()) - gpio_free(GPIO95_MMC_WP); - else - gpio_free(GPIO38_SD_PWEN); -} - -static int em_x270_mci_get_ro(struct device *dev) -{ - return gpio_get_value(GPIO95_MMC_WP); -} - -static struct pxamci_platform_data em_x270_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_20_21|MMC_VDD_21_22|MMC_VDD_22_23| - MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27| - MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30| - MMC_VDD_30_31|MMC_VDD_31_32, - .init = em_x270_mci_init, - .setpower = em_x270_mci_setpower, - .exit = em_x270_mci_exit, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void __init em_x270_init_mmc(void) -{ - if (machine_is_em_x270()) - em_x270_mci_platform_data.get_ro = em_x270_mci_get_ro; - - pxa_set_mci_info(&em_x270_mci_platform_data); -} -#else -static inline void em_x270_init_mmc(void) {} -#endif - -/* LCD */ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info em_x270_lcd_modes[] = { - [0] = { - .pixclock = 38250, - .bpp = 16, - .xres = 480, - .yres = 640, - .hsync_len = 8, - .vsync_len = 2, - .left_margin = 8, - .upper_margin = 2, - .right_margin = 24, - .lower_margin = 4, - .sync = 0, - }, - [1] = { - .pixclock = 153800, - .bpp = 16, - .xres = 240, - .yres = 320, - .hsync_len = 8, - .vsync_len = 2, - .left_margin = 8, - .upper_margin = 2, - .right_margin = 88, - .lower_margin = 2, - .sync = 0, - }, -}; - -static struct pxafb_mach_info em_x270_lcd = { - .modes = em_x270_lcd_modes, - .num_modes = 2, - .lcd_conn = LCD_COLOR_TFT_16BPP, -}; - -static void __init em_x270_init_lcd(void) -{ - pxa_set_fb_info(NULL, &em_x270_lcd); -} -#else -static inline void em_x270_init_lcd(void) {} -#endif - -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static struct pxa2xx_spi_master em_x270_spi_info = { - .num_chipselect = 1, -}; - -static struct pxa2xx_spi_chip em_x270_tdo24m_chip = { - .rx_threshold = 1, - .tx_threshold = 1, - .gpio_cs = -1, -}; - -static struct tdo24m_platform_data em_x270_tdo24m_pdata = { - .model = TDO35S, -}; - -static struct pxa2xx_spi_master em_x270_spi_2_info = { - .num_chipselect = 1, - .enable_dma = 1, -}; - -static struct pxa2xx_spi_chip em_x270_libertas_chip = { - .rx_threshold = 1, - .tx_threshold = 1, - .timeout = 1000, - .gpio_cs = 14, -}; - -static unsigned long em_x270_libertas_pin_config[] = { - /* SSP2 */ - GPIO19_SSP2_SCLK, - GPIO14_GPIO, - GPIO89_SSP2_TXD, - GPIO88_SSP2_RXD, -}; - -static int em_x270_libertas_setup(struct spi_device *spi) -{ - int err = gpio_request(GPIO115_WLAN_PWEN, "WLAN PWEN"); - if (err) - return err; - - err = gpio_request(GPIO19_WLAN_STRAP, "WLAN STRAP"); - if (err) - goto err_free_pwen; - - if (machine_is_exeda()) { - err = gpio_request(GPIO37_WLAN_RST, "WLAN RST"); - if (err) - goto err_free_strap; - - gpio_direction_output(GPIO37_WLAN_RST, 1); - msleep(100); - } - - gpio_direction_output(GPIO19_WLAN_STRAP, 1); - msleep(100); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_libertas_pin_config)); - - gpio_direction_output(GPIO115_WLAN_PWEN, 0); - msleep(100); - gpio_set_value(GPIO115_WLAN_PWEN, 1); - msleep(100); - - spi->bits_per_word = 16; - spi_setup(spi); - - return 0; - -err_free_strap: - gpio_free(GPIO19_WLAN_STRAP); -err_free_pwen: - gpio_free(GPIO115_WLAN_PWEN); - - return err; -} - -static int em_x270_libertas_teardown(struct spi_device *spi) -{ - gpio_set_value(GPIO115_WLAN_PWEN, 0); - gpio_free(GPIO115_WLAN_PWEN); - gpio_free(GPIO19_WLAN_STRAP); - - if (machine_is_exeda()) { - gpio_set_value(GPIO37_WLAN_RST, 0); - gpio_free(GPIO37_WLAN_RST); - } - - return 0; -} - -struct libertas_spi_platform_data em_x270_libertas_pdata = { - .use_dummy_writes = 1, - .setup = em_x270_libertas_setup, - .teardown = em_x270_libertas_teardown, -}; - -static struct spi_board_info em_x270_spi_devices[] __initdata = { - { - .modalias = "tdo24m", - .max_speed_hz = 1000000, - .bus_num = 1, - .chip_select = 0, - .controller_data = &em_x270_tdo24m_chip, - .platform_data = &em_x270_tdo24m_pdata, - }, - { - .modalias = "libertas_spi", - .max_speed_hz = 13000000, - .bus_num = 2, - .irq = PXA_GPIO_TO_IRQ(116), - .chip_select = 0, - .controller_data = &em_x270_libertas_chip, - .platform_data = &em_x270_libertas_pdata, - }, -}; - -static void __init em_x270_init_spi(void) -{ - pxa2xx_set_spi_info(1, &em_x270_spi_info); - pxa2xx_set_spi_info(2, &em_x270_spi_2_info); - spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices)); -} -#else -static inline void em_x270_init_spi(void) {} -#endif - -#if defined(CONFIG_SND_PXA2XX_LIB_AC97) -static pxa2xx_audio_ops_t em_x270_ac97_info = { - .reset_gpio = 113, -}; - -static void __init em_x270_init_ac97(void) -{ - pxa_set_ac97_info(&em_x270_ac97_info); -} -#else -static inline void em_x270_init_ac97(void) {} -#endif - -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int em_x270_module_matrix_keys[] = { - KEY(0, 0, KEY_A), KEY(1, 0, KEY_UP), KEY(2, 1, KEY_B), - KEY(0, 2, KEY_LEFT), KEY(1, 1, KEY_ENTER), KEY(2, 0, KEY_RIGHT), - KEY(0, 1, KEY_C), KEY(1, 2, KEY_DOWN), KEY(2, 2, KEY_D), -}; - -struct pxa27x_keypad_platform_data em_x270_module_keypad_info = { - /* code map for the matrix keys */ - .matrix_key_rows = 3, - .matrix_key_cols = 3, - .matrix_key_map = em_x270_module_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(em_x270_module_matrix_keys), -}; - -static unsigned int em_x270_exeda_matrix_keys[] = { - KEY(0, 0, KEY_RIGHTSHIFT), KEY(0, 1, KEY_RIGHTCTRL), - KEY(0, 2, KEY_RIGHTALT), KEY(0, 3, KEY_SPACE), - KEY(0, 4, KEY_LEFTALT), KEY(0, 5, KEY_LEFTCTRL), - KEY(0, 6, KEY_ENTER), KEY(0, 7, KEY_SLASH), - - KEY(1, 0, KEY_DOT), KEY(1, 1, KEY_M), - KEY(1, 2, KEY_N), KEY(1, 3, KEY_B), - KEY(1, 4, KEY_V), KEY(1, 5, KEY_C), - KEY(1, 6, KEY_X), KEY(1, 7, KEY_Z), - - KEY(2, 0, KEY_LEFTSHIFT), KEY(2, 1, KEY_SEMICOLON), - KEY(2, 2, KEY_L), KEY(2, 3, KEY_K), - KEY(2, 4, KEY_J), KEY(2, 5, KEY_H), - KEY(2, 6, KEY_G), KEY(2, 7, KEY_F), - - KEY(3, 0, KEY_D), KEY(3, 1, KEY_S), - KEY(3, 2, KEY_A), KEY(3, 3, KEY_TAB), - KEY(3, 4, KEY_BACKSPACE), KEY(3, 5, KEY_P), - KEY(3, 6, KEY_O), KEY(3, 7, KEY_I), - - KEY(4, 0, KEY_U), KEY(4, 1, KEY_Y), - KEY(4, 2, KEY_T), KEY(4, 3, KEY_R), - KEY(4, 4, KEY_E), KEY(4, 5, KEY_W), - KEY(4, 6, KEY_Q), KEY(4, 7, KEY_MINUS), - - KEY(5, 0, KEY_0), KEY(5, 1, KEY_9), - KEY(5, 2, KEY_8), KEY(5, 3, KEY_7), - KEY(5, 4, KEY_6), KEY(5, 5, KEY_5), - KEY(5, 6, KEY_4), KEY(5, 7, KEY_3), - - KEY(6, 0, KEY_2), KEY(6, 1, KEY_1), - KEY(6, 2, KEY_ENTER), KEY(6, 3, KEY_END), - KEY(6, 4, KEY_DOWN), KEY(6, 5, KEY_UP), - KEY(6, 6, KEY_MENU), KEY(6, 7, KEY_F1), - - KEY(7, 0, KEY_LEFT), KEY(7, 1, KEY_RIGHT), - KEY(7, 2, KEY_BACK), KEY(7, 3, KEY_HOME), - KEY(7, 4, 0), KEY(7, 5, 0), - KEY(7, 6, 0), KEY(7, 7, 0), -}; - -struct pxa27x_keypad_platform_data em_x270_exeda_keypad_info = { - /* code map for the matrix keys */ - .matrix_key_rows = 8, - .matrix_key_cols = 8, - .matrix_key_map = em_x270_exeda_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(em_x270_exeda_matrix_keys), -}; - -static void __init em_x270_init_keypad(void) -{ - if (machine_is_em_x270()) - pxa_set_keypad_info(&em_x270_module_keypad_info); - else - pxa_set_keypad_info(&em_x270_exeda_keypad_info); -} -#else -static inline void em_x270_init_keypad(void) {} -#endif - -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button gpio_keys_button[] = { - [0] = { - .desc = "sleep/wakeup", - .code = KEY_SUSPEND, - .type = EV_PWR, - .gpio = 1, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data em_x270_gpio_keys_data = { - .buttons = gpio_keys_button, - .nbuttons = 1, -}; - -static struct platform_device em_x270_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &em_x270_gpio_keys_data, - }, -}; - -static void __init em_x270_init_gpio_keys(void) -{ - platform_device_register(&em_x270_gpio_keys); -} -#else -static inline void em_x270_init_gpio_keys(void) {} -#endif - -/* Quick Capture Interface and sensor setup */ -#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE) -static struct regulator *em_x270_camera_ldo; - -static int em_x270_sensor_init(void) -{ - int ret; - - ret = gpio_request(cam_reset, "camera reset"); - if (ret) - return ret; - - gpio_direction_output(cam_reset, 0); - - em_x270_camera_ldo = regulator_get(NULL, "vcc cam"); - if (em_x270_camera_ldo == NULL) { - gpio_free(cam_reset); - return -ENODEV; - } - - ret = regulator_enable(em_x270_camera_ldo); - if (ret) { - regulator_put(em_x270_camera_ldo); - gpio_free(cam_reset); - return ret; - } - - gpio_set_value(cam_reset, 1); - - return 0; -} - -struct pxacamera_platform_data em_x270_camera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN, - .mclk_10khz = 2600, -}; - -static int em_x270_sensor_power(struct device *dev, int on) -{ - int ret; - int is_on = regulator_is_enabled(em_x270_camera_ldo); - - if (on == is_on) - return 0; - - gpio_set_value(cam_reset, !on); - - if (on) - ret = regulator_enable(em_x270_camera_ldo); - else - ret = regulator_disable(em_x270_camera_ldo); - - if (ret) - return ret; - - gpio_set_value(cam_reset, on); - - return 0; -} - -static struct i2c_board_info em_x270_i2c_cam_info[] = { - { - I2C_BOARD_INFO("mt9m111", 0x48), - }, -}; - -static struct soc_camera_link iclink = { - .bus_id = 0, - .power = em_x270_sensor_power, - .board_info = &em_x270_i2c_cam_info[0], - .i2c_adapter_id = 0, -}; - -static struct platform_device em_x270_camera = { - .name = "soc-camera-pdrv", - .id = -1, - .dev = { - .platform_data = &iclink, - }, -}; - -static void __init em_x270_init_camera(void) -{ - if (em_x270_sensor_init() == 0) { - pxa_set_camera_info(&em_x270_camera_platform_data); - platform_device_register(&em_x270_camera); - } -} -#else -static inline void em_x270_init_camera(void) {} -#endif - -static struct regulator_bulk_data em_x270_gps_consumer_supply = { - .supply = "vcc gps", -}; - -static struct regulator_userspace_consumer_data em_x270_gps_consumer_data = { - .name = "vcc gps", - .num_supplies = 1, - .supplies = &em_x270_gps_consumer_supply, -}; - -static struct platform_device em_x270_gps_userspace_consumer = { - .name = "reg-userspace-consumer", - .id = 0, - .dev = { - .platform_data = &em_x270_gps_consumer_data, - }, -}; - -static struct regulator_bulk_data em_x270_gprs_consumer_supply = { - .supply = "vcc gprs", -}; - -static struct regulator_userspace_consumer_data em_x270_gprs_consumer_data = { - .name = "vcc gprs", - .num_supplies = 1, - .supplies = &em_x270_gprs_consumer_supply -}; - -static struct platform_device em_x270_gprs_userspace_consumer = { - .name = "reg-userspace-consumer", - .id = 1, - .dev = { - .platform_data = &em_x270_gprs_consumer_data, - } -}; - -static struct platform_device *em_x270_userspace_consumers[] = { - &em_x270_gps_userspace_consumer, - &em_x270_gprs_userspace_consumer, -}; - -static void __init em_x270_userspace_consumers_init(void) -{ - platform_add_devices(ARRAY_AND_SIZE(em_x270_userspace_consumers)); -} - -/* DA9030 related initializations */ -#define REGULATOR_CONSUMER(_name, _dev_name, _supply) \ - static struct regulator_consumer_supply _name##_consumers[] = { \ - { \ - .dev_name = _dev_name, \ - .supply = _supply, \ - }, \ - } - -REGULATOR_CONSUMER(ldo3, "reg-userspace-consumer.0", "vcc gps"); -REGULATOR_CONSUMER(ldo5, NULL, "vcc cam"); -REGULATOR_CONSUMER(ldo10, "pxa2xx-mci", "vcc sdio"); -REGULATOR_CONSUMER(ldo12, NULL, "vcc usb"); -REGULATOR_CONSUMER(ldo19, "reg-userspace-consumer.1", "vcc gprs"); -REGULATOR_CONSUMER(buck2, NULL, "vcc_core"); - -#define REGULATOR_INIT(_ldo, _min_uV, _max_uV, _ops_mask) \ - static struct regulator_init_data _ldo##_data = { \ - .constraints = { \ - .min_uV = _min_uV, \ - .max_uV = _max_uV, \ - .state_mem = { \ - .enabled = 0, \ - }, \ - .valid_ops_mask = _ops_mask, \ - .apply_uV = 1, \ - }, \ - .num_consumer_supplies = ARRAY_SIZE(_ldo##_consumers), \ - .consumer_supplies = _ldo##_consumers, \ - }; - -REGULATOR_INIT(ldo3, 3200000, 3200000, REGULATOR_CHANGE_STATUS); -REGULATOR_INIT(ldo5, 3000000, 3000000, REGULATOR_CHANGE_STATUS); -REGULATOR_INIT(ldo10, 2000000, 3200000, - REGULATOR_CHANGE_STATUS | REGULATOR_CHANGE_VOLTAGE); -REGULATOR_INIT(ldo12, 3000000, 3000000, REGULATOR_CHANGE_STATUS); -REGULATOR_INIT(ldo19, 3200000, 3200000, REGULATOR_CHANGE_STATUS); -REGULATOR_INIT(buck2, 1000000, 1650000, REGULATOR_CHANGE_VOLTAGE); - -struct led_info em_x270_led_info = { - .name = "em-x270:orange", - .default_trigger = "battery-charging-or-full", -}; - -struct power_supply_info em_x270_psy_info = { - .name = "battery", - .technology = POWER_SUPPLY_TECHNOLOGY_LIPO, - .voltage_max_design = 4200000, - .voltage_min_design = 3000000, - .use_for_apm = 1, -}; - -static void em_x270_battery_low(void) -{ -#if defined(CONFIG_APM_EMULATION) - apm_queue_event(APM_LOW_BATTERY); -#endif -} - -static void em_x270_battery_critical(void) -{ -#if defined(CONFIG_APM_EMULATION) - apm_queue_event(APM_CRITICAL_SUSPEND); -#endif -} - -struct da9030_battery_info em_x270_batterty_info = { - .battery_info = &em_x270_psy_info, - - .charge_milliamp = 1000, - .charge_millivolt = 4200, - - .vbat_low = 3600, - .vbat_crit = 3400, - .vbat_charge_start = 4100, - .vbat_charge_stop = 4200, - .vbat_charge_restart = 4000, - - .vcharge_min = 3200, - .vcharge_max = 5500, - - .tbat_low = 197, - .tbat_high = 78, - .tbat_restart = 100, - - .batmon_interval = 0, - - .battery_low = em_x270_battery_low, - .battery_critical = em_x270_battery_critical, -}; - -#define DA9030_SUBDEV(_name, _id, _pdata) \ - { \ - .name = "da903x-" #_name, \ - .id = DA9030_ID_##_id, \ - .platform_data = _pdata, \ - } - -#define DA9030_LDO(num) DA9030_SUBDEV(regulator, LDO##num, &ldo##num##_data) - -struct da903x_subdev_info em_x270_da9030_subdevs[] = { - DA9030_LDO(3), - DA9030_LDO(5), - DA9030_LDO(10), - DA9030_LDO(12), - DA9030_LDO(19), - - DA9030_SUBDEV(regulator, BUCK2, &buck2_data), - - DA9030_SUBDEV(led, LED_PC, &em_x270_led_info), - DA9030_SUBDEV(backlight, WLED, &em_x270_led_info), - DA9030_SUBDEV(battery, BAT, &em_x270_batterty_info), -}; - -static struct da903x_platform_data em_x270_da9030_info = { - .num_subdevs = ARRAY_SIZE(em_x270_da9030_subdevs), - .subdevs = em_x270_da9030_subdevs, -}; - -static struct i2c_board_info em_x270_i2c_pmic_info = { - I2C_BOARD_INFO("da9030", 0x49), - .irq = PXA_GPIO_TO_IRQ(0), - .platform_data = &em_x270_da9030_info, -}; - -static struct i2c_pxa_platform_data em_x270_pwr_i2c_info = { - .use_pio = 1, -}; - -static void __init em_x270_init_da9030(void) -{ - pxa27x_set_i2c_power_info(&em_x270_pwr_i2c_info); - i2c_register_board_info(1, &em_x270_i2c_pmic_info, 1); -} - -static struct pca953x_platform_data exeda_gpio_ext_pdata = { - .gpio_base = 128, -}; - -static struct i2c_board_info exeda_i2c_info[] = { - { - I2C_BOARD_INFO("pca9555", 0x21), - .platform_data = &exeda_gpio_ext_pdata, - }, -}; - -static struct i2c_pxa_platform_data em_x270_i2c_info = { - .fast_mode = 1, -}; - -static void __init em_x270_init_i2c(void) -{ - pxa_set_i2c_info(&em_x270_i2c_info); - - if (machine_is_exeda()) - i2c_register_board_info(0, ARRAY_AND_SIZE(exeda_i2c_info)); -} - -static void __init em_x270_module_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_pin_config)); - - mmc_cd = GPIO13_MMC_CD; - nand_rb = GPIO56_NAND_RB; - dm9000_flags = DM9000_PLATF_32BITONLY; - cam_reset = GPIO93_CAM_RESET; - usb_hub_reset = GPIO16_USB_HUB_RESET; -} - -static void __init em_x270_exeda_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(exeda_pin_config)); - - mmc_cd = GPIO114_MMC_CD; - nand_rb = GPIO20_NAND_RB; - dm9000_flags = DM9000_PLATF_16BITONLY; - cam_reset = GPIO130_CAM_RESET; - usb_hub_reset = GPIO10_USB_HUB_RESET; -} - -static void __init em_x270_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(common_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - -#ifdef CONFIG_PM - pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP); -#endif - - if (machine_is_em_x270()) - em_x270_module_init(); - else if (machine_is_exeda()) - em_x270_exeda_init(); - else - panic("Unsupported machine: %d\n", machine_arch_type); - - em_x270_init_da9030(); - em_x270_init_dm9000(); - em_x270_init_rtc(); - em_x270_init_nand(); - em_x270_init_nor(); - em_x270_init_lcd(); - em_x270_init_mmc(); - em_x270_init_ohci(); - em_x270_init_keypad(); - em_x270_init_gpio_keys(); - em_x270_init_ac97(); - em_x270_init_spi(); - em_x270_init_i2c(); - em_x270_init_camera(); - em_x270_userspace_consumers_init(); -} - -MACHINE_START(EM_X270, "Compulab EM-X270") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = em_x270_init, - .restart = pxa_restart, -MACHINE_END - -MACHINE_START(EXEDA, "Compulab eXeda") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = em_x270_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.c b/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.c deleted file mode 100644 index 4cb2391a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.c +++ /dev/null @@ -1,983 +0,0 @@ -/* - * Hardware definitions for the Toshiba eseries PDAs - * - * Copyright (c) 2003 Ian Molton <spyro@f2s.com> - * - * This file is licensed under - * the terms of the GNU General Public License version 2. This program - * is licensed "as is" without any warranty of any kind, whether express - * or implied. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/gpio.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/mfd/tc6387xb.h> -#include <linux/mfd/tc6393xb.h> -#include <linux/mfd/t7l66xb.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/partitions.h> -#include <linux/usb/gpio_vbus.h> - -#include <video/w100fb.h> - -#include <asm/setup.h> -#include <asm/mach/arch.h> -#include <asm/mach-types.h> - -#include <mach/pxa25x.h> -#include <mach/eseries-gpio.h> -#include <mach/eseries-irq.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/udc.h> -#include <mach/irda.h> - -#include "devices.h" -#include "generic.h" -#include "clock.h" - -/* Only e800 has 128MB RAM */ -void __init eseries_fixup(struct tag *tags, char **cmdline, struct meminfo *mi) -{ - mi->nr_banks=1; - mi->bank[0].start = 0xa0000000; - if (machine_is_e800()) - mi->bank[0].size = (128*1024*1024); - else - mi->bank[0].size = (64*1024*1024); -} - -struct gpio_vbus_mach_info e7xx_udc_info = { - .gpio_vbus = GPIO_E7XX_USB_DISC, - .gpio_pullup = GPIO_E7XX_USB_PULLUP, - .gpio_pullup_inverted = 1 -}; - -static struct platform_device e7xx_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &e7xx_udc_info, - }, -}; - -struct pxaficp_platform_data e7xx_ficp_platform_data = { - .gpio_pwdown = GPIO_E7XX_IR_OFF, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -int eseries_tmio_enable(struct platform_device *dev) -{ - /* Reset - bring SUSPEND high before PCLR */ - gpio_set_value(GPIO_ESERIES_TMIO_SUSPEND, 0); - gpio_set_value(GPIO_ESERIES_TMIO_PCLR, 0); - msleep(1); - gpio_set_value(GPIO_ESERIES_TMIO_SUSPEND, 1); - msleep(1); - gpio_set_value(GPIO_ESERIES_TMIO_PCLR, 1); - msleep(1); - return 0; -} - -int eseries_tmio_disable(struct platform_device *dev) -{ - gpio_set_value(GPIO_ESERIES_TMIO_SUSPEND, 0); - gpio_set_value(GPIO_ESERIES_TMIO_PCLR, 0); - return 0; -} - -int eseries_tmio_suspend(struct platform_device *dev) -{ - gpio_set_value(GPIO_ESERIES_TMIO_SUSPEND, 0); - return 0; -} - -int eseries_tmio_resume(struct platform_device *dev) -{ - gpio_set_value(GPIO_ESERIES_TMIO_SUSPEND, 1); - msleep(1); - return 0; -} - -void eseries_get_tmio_gpios(void) -{ - gpio_request(GPIO_ESERIES_TMIO_SUSPEND, NULL); - gpio_request(GPIO_ESERIES_TMIO_PCLR, NULL); - gpio_direction_output(GPIO_ESERIES_TMIO_SUSPEND, 0); - gpio_direction_output(GPIO_ESERIES_TMIO_PCLR, 0); -} - -/* TMIO controller uses the same resources on all e-series machines. */ -struct resource eseries_tmio_resources[] = { - [0] = { - .start = PXA_CS4_PHYS, - .end = PXA_CS4_PHYS + 0x1fffff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(GPIO_ESERIES_TMIO_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO_ESERIES_TMIO_IRQ), - .flags = IORESOURCE_IRQ, - }, -}; - -/* Some e-series hardware cannot control the 32K clock */ -static void clk_32k_dummy(struct clk *clk) -{ -} - -static const struct clkops clk_32k_dummy_ops = { - .enable = clk_32k_dummy, - .disable = clk_32k_dummy, -}; - -static struct clk tmio_dummy_clk = { - .ops = &clk_32k_dummy_ops, - .rate = 32768, -}; - -static struct clk_lookup eseries_clkregs[] = { - INIT_CLKREG(&tmio_dummy_clk, NULL, "CLK_CK32K"), -}; - -static void __init eseries_register_clks(void) -{ - clkdev_add_table(eseries_clkregs, ARRAY_SIZE(eseries_clkregs)); -} - -#ifdef CONFIG_MACH_E330 -/* -------------------- e330 tc6387xb parameters -------------------- */ - -static struct tc6387xb_platform_data e330_tc6387xb_info = { - .enable = &eseries_tmio_enable, - .disable = &eseries_tmio_disable, - .suspend = &eseries_tmio_suspend, - .resume = &eseries_tmio_resume, -}; - -static struct platform_device e330_tc6387xb_device = { - .name = "tc6387xb", - .id = -1, - .dev = { - .platform_data = &e330_tc6387xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -/* --------------------------------------------------------------- */ - -static struct platform_device *e330_devices[] __initdata = { - &e330_tc6387xb_device, - &e7xx_gpio_vbus, -}; - -static void __init e330_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - eseries_register_clks(); - eseries_get_tmio_gpios(); - platform_add_devices(ARRAY_AND_SIZE(e330_devices)); -} - -MACHINE_START(E330, "Toshiba e330") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e330_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_E350 -/* -------------------- e350 t7l66xb parameters -------------------- */ - -static struct t7l66xb_platform_data e350_t7l66xb_info = { - .irq_base = IRQ_BOARD_START, - .enable = &eseries_tmio_enable, - .suspend = &eseries_tmio_suspend, - .resume = &eseries_tmio_resume, -}; - -static struct platform_device e350_t7l66xb_device = { - .name = "t7l66xb", - .id = -1, - .dev = { - .platform_data = &e350_t7l66xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -/* ---------------------------------------------------------- */ - -static struct platform_device *e350_devices[] __initdata = { - &e350_t7l66xb_device, - &e7xx_gpio_vbus, -}; - -static void __init e350_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - eseries_register_clks(); - eseries_get_tmio_gpios(); - platform_add_devices(ARRAY_AND_SIZE(e350_devices)); -} - -MACHINE_START(E350, "Toshiba e350") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e350_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_E400 -/* ------------------------ E400 LCD definitions ------------------------ */ - -static struct pxafb_mode_info e400_pxafb_mode_info = { - .pixclock = 140703, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 4, - .left_margin = 28, - .right_margin = 8, - .vsync_len = 3, - .upper_margin = 5, - .lower_margin = 6, - .sync = 0, -}; - -static struct pxafb_mach_info e400_pxafb_mach_info = { - .modes = &e400_pxafb_mode_info, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP, - .lccr3 = 0, - .pxafb_backlight_power = NULL, -}; - -/* ------------------------ E400 MFP config ----------------------------- */ - -static unsigned long e400_pin_config[] __initdata = { - /* Chip selects */ - GPIO15_nCS_1, /* CS1 - Flash */ - GPIO80_nCS_4, /* CS4 - TMIO */ - - /* Clocks */ - GPIO12_32KHz, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - - /* TMIO controller */ - GPIO19_GPIO, /* t7l66xb #PCLR */ - GPIO45_GPIO, /* t7l66xb #SUSPEND (NOT BTUART!) */ - - /* wakeup */ - GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, -}; - -/* ---------------------------------------------------------------------- */ - -static struct mtd_partition partition_a = { - .name = "Internal NAND flash", - .offset = 0, - .size = MTDPART_SIZ_FULL, -}; - -static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; - -static struct nand_bbt_descr e400_t7l66xb_nand_bbt = { - .options = 0, - .offs = 4, - .len = 2, - .pattern = scan_ff_pattern -}; - -static struct tmio_nand_data e400_t7l66xb_nand_config = { - .num_partitions = 1, - .partition = &partition_a, - .badblock_pattern = &e400_t7l66xb_nand_bbt, -}; - -static struct t7l66xb_platform_data e400_t7l66xb_info = { - .irq_base = IRQ_BOARD_START, - .enable = &eseries_tmio_enable, - .suspend = &eseries_tmio_suspend, - .resume = &eseries_tmio_resume, - - .nand_data = &e400_t7l66xb_nand_config, -}; - -static struct platform_device e400_t7l66xb_device = { - .name = "t7l66xb", - .id = -1, - .dev = { - .platform_data = &e400_t7l66xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -/* ---------------------------------------------------------- */ - -static struct platform_device *e400_devices[] __initdata = { - &e400_t7l66xb_device, - &e7xx_gpio_vbus, -}; - -static void __init e400_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - /* Fixme - e400 may have a switched clock */ - eseries_register_clks(); - eseries_get_tmio_gpios(); - pxa_set_fb_info(NULL, &e400_pxafb_mach_info); - platform_add_devices(ARRAY_AND_SIZE(e400_devices)); -} - -MACHINE_START(E400, "Toshiba e400") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e400_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_E740 -/* ------------------------ e740 video support --------------------------- */ - -static struct w100_gen_regs e740_lcd_regs = { - .lcd_format = 0x00008023, - .lcdd_cntl1 = 0x0f000000, - .lcdd_cntl2 = 0x0003ffff, - .genlcd_cntl1 = 0x00ffff03, - .genlcd_cntl2 = 0x003c0f03, - .genlcd_cntl3 = 0x000143aa, -}; - -static struct w100_mode e740_lcd_mode = { - .xres = 240, - .yres = 320, - .left_margin = 20, - .right_margin = 28, - .upper_margin = 9, - .lower_margin = 8, - .crtc_ss = 0x80140013, - .crtc_ls = 0x81150110, - .crtc_gs = 0x80050005, - .crtc_vpos_gs = 0x000a0009, - .crtc_rev = 0x0040010a, - .crtc_dclk = 0xa906000a, - .crtc_gclk = 0x80050108, - .crtc_goe = 0x80050108, - .pll_freq = 57, - .pixclk_divider = 4, - .pixclk_divider_rotated = 4, - .pixclk_src = CLK_SRC_XTAL, - .sysclk_divider = 1, - .sysclk_src = CLK_SRC_PLL, - .crtc_ps1_active = 0x41060010, -}; - -static struct w100_gpio_regs e740_w100_gpio_info = { - .init_data1 = 0x21002103, - .gpio_dir1 = 0xffffdeff, - .gpio_oe1 = 0x03c00643, - .init_data2 = 0x003f003f, - .gpio_dir2 = 0xffffffff, - .gpio_oe2 = 0x000000ff, -}; - -static struct w100fb_mach_info e740_fb_info = { - .modelist = &e740_lcd_mode, - .num_modes = 1, - .regs = &e740_lcd_regs, - .gpio = &e740_w100_gpio_info, - .xtal_freq = 14318000, - .xtal_dbl = 1, -}; - -static struct resource e740_fb_resources[] = { - [0] = { - .start = 0x0c000000, - .end = 0x0cffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device e740_fb_device = { - .name = "w100fb", - .id = -1, - .dev = { - .platform_data = &e740_fb_info, - }, - .num_resources = ARRAY_SIZE(e740_fb_resources), - .resource = e740_fb_resources, -}; - -/* --------------------------- MFP Pin config -------------------------- */ - -static unsigned long e740_pin_config[] __initdata = { - /* Chip selects */ - GPIO15_nCS_1, /* CS1 - Flash */ - GPIO79_nCS_3, /* CS3 - IMAGEON */ - GPIO80_nCS_4, /* CS4 - TMIO */ - - /* Clocks */ - GPIO12_32KHz, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - - /* TMIO controller */ - GPIO19_GPIO, /* t7l66xb #PCLR */ - GPIO45_GPIO, /* t7l66xb #SUSPEND (NOT BTUART!) */ - - /* UDC */ - GPIO13_GPIO, - GPIO3_GPIO, - - /* IrDA */ - GPIO38_GPIO | MFP_LPM_DRIVE_HIGH, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* Audio power control */ - GPIO16_GPIO, /* AC97 codec AVDD2 supply (analogue power) */ - GPIO40_GPIO, /* Mic amp power */ - GPIO41_GPIO, /* Headphone amp power */ - - /* PC Card */ - GPIO8_GPIO, /* CD0 */ - GPIO44_GPIO, /* CD1 */ - GPIO11_GPIO, /* IRQ0 */ - GPIO6_GPIO, /* IRQ1 */ - GPIO27_GPIO, /* RST0 */ - GPIO24_GPIO, /* RST1 */ - GPIO20_GPIO, /* PWR0 */ - GPIO23_GPIO, /* PWR1 */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* wakeup */ - GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, -}; - -/* -------------------- e740 t7l66xb parameters -------------------- */ - -static struct t7l66xb_platform_data e740_t7l66xb_info = { - .irq_base = IRQ_BOARD_START, - .enable = &eseries_tmio_enable, - .suspend = &eseries_tmio_suspend, - .resume = &eseries_tmio_resume, -}; - -static struct platform_device e740_t7l66xb_device = { - .name = "t7l66xb", - .id = -1, - .dev = { - .platform_data = &e740_t7l66xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -static struct platform_device e740_audio_device = { - .name = "e740-audio", - .id = -1, -}; - -/* ----------------------------------------------------------------------- */ - -static struct platform_device *e740_devices[] __initdata = { - &e740_fb_device, - &e740_t7l66xb_device, - &e7xx_gpio_vbus, - &e740_audio_device, -}; - -static void __init e740_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - eseries_register_clks(); - clk_add_alias("CLK_CK48M", e740_t7l66xb_device.name, - "UDCCLK", &pxa25x_device_udc.dev), - eseries_get_tmio_gpios(); - platform_add_devices(ARRAY_AND_SIZE(e740_devices)); - pxa_set_ac97_info(NULL); - pxa_set_ficp_info(&e7xx_ficp_platform_data); -} - -MACHINE_START(E740, "Toshiba e740") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e740_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_E750 -/* ---------------------- E750 LCD definitions -------------------- */ - -static struct w100_gen_regs e750_lcd_regs = { - .lcd_format = 0x00008003, - .lcdd_cntl1 = 0x00000000, - .lcdd_cntl2 = 0x0003ffff, - .genlcd_cntl1 = 0x00fff003, - .genlcd_cntl2 = 0x003c0f03, - .genlcd_cntl3 = 0x000143aa, -}; - -static struct w100_mode e750_lcd_mode = { - .xres = 240, - .yres = 320, - .left_margin = 21, - .right_margin = 22, - .upper_margin = 5, - .lower_margin = 4, - .crtc_ss = 0x80150014, - .crtc_ls = 0x8014000d, - .crtc_gs = 0xc1000005, - .crtc_vpos_gs = 0x00020147, - .crtc_rev = 0x0040010a, - .crtc_dclk = 0xa1700030, - .crtc_gclk = 0x80cc0015, - .crtc_goe = 0x80cc0015, - .crtc_ps1_active = 0x61060017, - .pll_freq = 57, - .pixclk_divider = 4, - .pixclk_divider_rotated = 4, - .pixclk_src = CLK_SRC_XTAL, - .sysclk_divider = 1, - .sysclk_src = CLK_SRC_PLL, -}; - -static struct w100_gpio_regs e750_w100_gpio_info = { - .init_data1 = 0x01192f1b, - .gpio_dir1 = 0xd5ffdeff, - .gpio_oe1 = 0x000020bf, - .init_data2 = 0x010f010f, - .gpio_dir2 = 0xffffffff, - .gpio_oe2 = 0x000001cf, -}; - -static struct w100fb_mach_info e750_fb_info = { - .modelist = &e750_lcd_mode, - .num_modes = 1, - .regs = &e750_lcd_regs, - .gpio = &e750_w100_gpio_info, - .xtal_freq = 14318000, - .xtal_dbl = 1, -}; - -static struct resource e750_fb_resources[] = { - [0] = { - .start = 0x0c000000, - .end = 0x0cffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device e750_fb_device = { - .name = "w100fb", - .id = -1, - .dev = { - .platform_data = &e750_fb_info, - }, - .num_resources = ARRAY_SIZE(e750_fb_resources), - .resource = e750_fb_resources, -}; - -/* -------------------- e750 MFP parameters -------------------- */ - -static unsigned long e750_pin_config[] __initdata = { - /* Chip selects */ - GPIO15_nCS_1, /* CS1 - Flash */ - GPIO79_nCS_3, /* CS3 - IMAGEON */ - GPIO80_nCS_4, /* CS4 - TMIO */ - - /* Clocks */ - GPIO11_3_6MHz, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - - /* TMIO controller */ - GPIO19_GPIO, /* t7l66xb #PCLR */ - GPIO45_GPIO, /* t7l66xb #SUSPEND (NOT BTUART!) */ - - /* UDC */ - GPIO13_GPIO, - GPIO3_GPIO, - - /* IrDA */ - GPIO38_GPIO | MFP_LPM_DRIVE_HIGH, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* Audio power control */ - GPIO4_GPIO, /* Headphone amp power */ - GPIO7_GPIO, /* Speaker amp power */ - GPIO37_GPIO, /* Headphone detect */ - - /* PC Card */ - GPIO8_GPIO, /* CD0 */ - GPIO44_GPIO, /* CD1 */ - GPIO11_GPIO, /* IRQ0 */ - GPIO6_GPIO, /* IRQ1 */ - GPIO27_GPIO, /* RST0 */ - GPIO24_GPIO, /* RST1 */ - GPIO20_GPIO, /* PWR0 */ - GPIO23_GPIO, /* PWR1 */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* wakeup */ - GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, -}; - -/* ----------------- e750 tc6393xb parameters ------------------ */ - -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, - .disable = &eseries_tmio_disable, -}; - -static struct platform_device e750_tc6393xb_device = { - .name = "tc6393xb", - .id = -1, - .dev = { - .platform_data = &e750_tc6393xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -static struct platform_device e750_audio_device = { - .name = "e750-audio", - .id = -1, -}; - -/* ------------------------------------------------------------- */ - -static struct platform_device *e750_devices[] __initdata = { - &e750_fb_device, - &e750_tc6393xb_device, - &e7xx_gpio_vbus, - &e750_audio_device, -}; - -static void __init e750_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(e750_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - clk_add_alias("CLK_CK3P6MI", e750_tc6393xb_device.name, - "GPIO11_CLK", NULL), - eseries_get_tmio_gpios(); - platform_add_devices(ARRAY_AND_SIZE(e750_devices)); - pxa_set_ac97_info(NULL); - pxa_set_ficp_info(&e7xx_ficp_platform_data); -} - -MACHINE_START(E750, "Toshiba e750") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e750_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_E800 -/* ------------------------ e800 LCD definitions ------------------------- */ - -static unsigned long e800_pin_config[] __initdata = { - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, -}; - -static struct w100_gen_regs e800_lcd_regs = { - .lcd_format = 0x00008003, - .lcdd_cntl1 = 0x02a00000, - .lcdd_cntl2 = 0x0003ffff, - .genlcd_cntl1 = 0x000ff2a3, - .genlcd_cntl2 = 0x000002a3, - .genlcd_cntl3 = 0x000102aa, -}; - -static struct w100_mode e800_lcd_mode[2] = { - [0] = { - .xres = 480, - .yres = 640, - .left_margin = 52, - .right_margin = 148, - .upper_margin = 2, - .lower_margin = 6, - .crtc_ss = 0x80350034, - .crtc_ls = 0x802b0026, - .crtc_gs = 0x80160016, - .crtc_vpos_gs = 0x00020003, - .crtc_rev = 0x0040001d, - .crtc_dclk = 0xe0000000, - .crtc_gclk = 0x82a50049, - .crtc_goe = 0x80ee001c, - .crtc_ps1_active = 0x00000000, - .pll_freq = 128, - .pixclk_divider = 4, - .pixclk_divider_rotated = 6, - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .sysclk_src = CLK_SRC_PLL, - }, - [1] = { - .xres = 240, - .yres = 320, - .left_margin = 15, - .right_margin = 88, - .upper_margin = 0, - .lower_margin = 7, - .crtc_ss = 0xd010000f, - .crtc_ls = 0x80070003, - .crtc_gs = 0x80000000, - .crtc_vpos_gs = 0x01460147, - .crtc_rev = 0x00400003, - .crtc_dclk = 0xa1700030, - .crtc_gclk = 0x814b0008, - .crtc_goe = 0x80cc0015, - .crtc_ps1_active = 0x00000000, - .pll_freq = 100, - .pixclk_divider = 6, /* Wince uses 14 which gives a */ - .pixclk_divider_rotated = 6, /* 7MHz Pclk. We use a 14MHz one */ - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .sysclk_src = CLK_SRC_PLL, - } -}; - - -static struct w100_gpio_regs e800_w100_gpio_info = { - .init_data1 = 0xc13fc019, - .gpio_dir1 = 0x3e40df7f, - .gpio_oe1 = 0x003c3000, - .init_data2 = 0x00000000, - .gpio_dir2 = 0x00000000, - .gpio_oe2 = 0x00000000, -}; - -static struct w100_mem_info e800_w100_mem_info = { - .ext_cntl = 0x09640011, - .sdram_mode_reg = 0x00600021, - .ext_timing_cntl = 0x10001545, - .io_cntl = 0x7ddd7333, - .size = 0x1fffff, -}; - -static void e800_tg_change(struct w100fb_par *par) -{ - unsigned long tmp; - - tmp = w100fb_gpio_read(W100_GPIO_PORT_A); - if (par->mode->xres == 480) - tmp |= 0x100; - else - tmp &= ~0x100; - w100fb_gpio_write(W100_GPIO_PORT_A, tmp); -} - -static struct w100_tg_info e800_tg_info = { - .change = e800_tg_change, -}; - -static struct w100fb_mach_info e800_fb_info = { - .modelist = e800_lcd_mode, - .num_modes = 2, - .regs = &e800_lcd_regs, - .gpio = &e800_w100_gpio_info, - .mem = &e800_w100_mem_info, - .tg = &e800_tg_info, - .xtal_freq = 16000000, -}; - -static struct resource e800_fb_resources[] = { - [0] = { - .start = 0x0c000000, - .end = 0x0cffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device e800_fb_device = { - .name = "w100fb", - .id = -1, - .dev = { - .platform_data = &e800_fb_info, - }, - .num_resources = ARRAY_SIZE(e800_fb_resources), - .resource = e800_fb_resources, -}; - -/* --------------------------- UDC definitions --------------------------- */ - -static struct gpio_vbus_mach_info e800_udc_info = { - .gpio_vbus = GPIO_E800_USB_DISC, - .gpio_pullup = GPIO_E800_USB_PULLUP, - .gpio_pullup_inverted = 1 -}; - -static struct platform_device e800_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &e800_udc_info, - }, -}; - - -/* ----------------- e800 tc6393xb parameters ------------------ */ - -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, - .disable = &eseries_tmio_disable, -}; - -static struct platform_device e800_tc6393xb_device = { - .name = "tc6393xb", - .id = -1, - .dev = { - .platform_data = &e800_tc6393xb_info, - }, - .num_resources = 2, - .resource = eseries_tmio_resources, -}; - -static struct platform_device e800_audio_device = { - .name = "e800-audio", - .id = -1, -}; - -/* ----------------------------------------------------------------------- */ - -static struct platform_device *e800_devices[] __initdata = { - &e800_fb_device, - &e800_tc6393xb_device, - &e800_gpio_vbus, - &e800_audio_device, -}; - -static void __init e800_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(e800_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - clk_add_alias("CLK_CK3P6MI", e800_tc6393xb_device.name, - "GPIO11_CLK", NULL), - eseries_get_tmio_gpios(); - platform_add_devices(ARRAY_AND_SIZE(e800_devices)); - pxa_set_ac97_info(NULL); -} - -MACHINE_START(E800, "Toshiba e800") - /* Maintainer: Ian Molton (spyro@f2s.com) */ - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = ESERIES_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .fixup = eseries_fixup, - .init_machine = e800_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.h b/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.h deleted file mode 100644 index b96949dd..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/eseries.h +++ /dev/null @@ -1,14 +0,0 @@ -void __init eseries_fixup(struct tag *tags, char **cmdline, struct meminfo *mi); - -extern struct pxa2xx_udc_mach_info e7xx_udc_mach_info; -extern struct pxaficp_platform_data e7xx_ficp_platform_data; -extern int e7xx_irda_init(void); - -extern int eseries_tmio_enable(struct platform_device *dev); -extern int eseries_tmio_disable(struct platform_device *dev); -extern int eseries_tmio_suspend(struct platform_device *dev); -extern int eseries_tmio_resume(struct platform_device *dev); -extern void eseries_get_tmio_gpios(void); -extern struct resource eseries_tmio_resources[]; -extern struct platform_device e300_tc6387xb_device; - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/ezx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/ezx.c deleted file mode 100644 index 15ab2533..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/ezx.c +++ /dev/null @@ -1,1243 +0,0 @@ -/* - * ezx.c - Common code for the EZX platform. - * - * Copyright (C) 2005-2006 Harald Welte <laforge@openezx.org>, - * 2007-2008 Daniel Ribeiro <drwyrm@gmail.com>, - * 2007-2008 Stefan Schmidt <stefan@datenfreihafen.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/pwm_backlight.h> -#include <linux/input.h> -#include <linux/gpio.h> -#include <linux/gpio_keys.h> -#include <linux/leds-lp3944.h> -#include <linux/i2c/pxa-i2c.h> - -#include <media/soc_camera.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/pxafb.h> -#include <mach/ohci.h> -#include <mach/hardware.h> -#include <plat/pxa27x_keypad.h> -#include <mach/camera.h> - -#include "devices.h" -#include "generic.h" - -#define EZX_NR_IRQS (IRQ_BOARD_START + 24) - -#define GPIO12_A780_FLIP_LID 12 -#define GPIO15_A1200_FLIP_LID 15 -#define GPIO15_A910_FLIP_LID 15 -#define GPIO12_E680_LOCK_SWITCH 12 -#define GPIO15_E6_LOCK_SWITCH 15 -#define GPIO50_nCAM_EN 50 -#define GPIO19_GEN1_CAM_RST 19 -#define GPIO28_GEN2_CAM_RST 28 - -static struct platform_pwm_backlight_data ezx_backlight_data = { - .pwm_id = 0, - .max_brightness = 1023, - .dft_brightness = 1023, - .pwm_period_ns = 78770, -}; - -static struct platform_device ezx_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &ezx_backlight_data, - }, -}; - -static struct pxafb_mode_info mode_ezx_old = { - .pixclock = 150000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 10, - .left_margin = 20, - .right_margin = 10, - .vsync_len = 2, - .upper_margin = 3, - .lower_margin = 2, - .sync = 0, -}; - -static struct pxafb_mach_info ezx_fb_info_1 = { - .modes = &mode_ezx_old, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP, -}; - -static struct pxafb_mode_info mode_72r89803y01 = { - .pixclock = 192308, - .xres = 240, - .yres = 320, - .bpp = 32, - .depth = 18, - .hsync_len = 10, - .left_margin = 20, - .right_margin = 10, - .vsync_len = 2, - .upper_margin = 3, - .lower_margin = 2, - .sync = 0, -}; - -static struct pxafb_mach_info ezx_fb_info_2 = { - .modes = &mode_72r89803y01, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_18BPP, -}; - -static struct platform_device *ezx_devices[] __initdata = { - &ezx_backlight_device, -}; - -static unsigned long ezx_pin_config[] __initdata = { - /* PWM backlight */ - GPIO16_PWM0_OUT, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* PCAP SSP */ - GPIO29_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - GPIO24_GPIO, /* pcap chip select */ - GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, /* pcap interrupt */ - GPIO4_GPIO | MFP_LPM_DRIVE_HIGH, /* WDI_AP */ - GPIO55_GPIO | MFP_LPM_DRIVE_HIGH, /* SYS_RESTART */ - - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO11_GPIO, /* mmc detect */ - - /* usb to external transceiver */ - GPIO34_USB_P2_2, - GPIO35_USB_P2_1, - GPIO36_USB_P2_4, - GPIO39_USB_P2_6, - GPIO40_USB_P2_5, - GPIO53_USB_P2_3, - - /* usb to Neptune GSM chip */ - GPIO30_USB_P3_2, - GPIO31_USB_P3_6, - GPIO90_USB_P3_5, - GPIO91_USB_P3_1, - GPIO56_USB_P3_4, - GPIO113_USB_P3_3, -}; - -#if defined(CONFIG_MACH_EZX_A780) || defined(CONFIG_MACH_EZX_E680) -static unsigned long gen1_pin_config[] __initdata = { - /* flip / lockswitch */ - GPIO12_GPIO | WAKEUP_ON_EDGE_BOTH, - - /* bluetooth (bcm2035) */ - GPIO14_GPIO | WAKEUP_ON_EDGE_RISE, /* HOSTWAKE */ - GPIO48_GPIO, /* RESET */ - GPIO28_GPIO, /* WAKEUP */ - - /* Neptune handshake */ - GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* BP_RDY */ - GPIO57_GPIO | MFP_LPM_DRIVE_HIGH, /* AP_RDY */ - GPIO13_GPIO | WAKEUP_ON_EDGE_BOTH, /* WDI */ - GPIO3_GPIO | WAKEUP_ON_EDGE_BOTH, /* WDI2 */ - GPIO82_GPIO | MFP_LPM_DRIVE_HIGH, /* RESET */ - GPIO99_GPIO | MFP_LPM_DRIVE_HIGH, /* TC_MM_EN */ - - /* sound */ - GPIO52_SSP3_SCLK, - GPIO83_SSP3_SFRM, - GPIO81_SSP3_TXD, - GPIO89_SSP3_RXD, - - /* ssp2 pins to in */ - GPIO22_GPIO, /* SSP2_SCLK */ - GPIO37_GPIO, /* SSP2_SFRM */ - GPIO38_GPIO, /* SSP2_TXD */ - GPIO88_GPIO, /* SSP2_RXD */ - - /* camera */ - GPIO23_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO85_CIF_LV, - GPIO84_CIF_FV, - GPIO27_CIF_DD_0, - GPIO114_CIF_DD_1, - GPIO51_CIF_DD_2, - GPIO115_CIF_DD_3, - GPIO95_CIF_DD_4, - GPIO94_CIF_DD_5, - GPIO17_CIF_DD_6, - GPIO108_CIF_DD_7, - GPIO50_GPIO | MFP_LPM_DRIVE_HIGH, /* CAM_EN */ - GPIO19_GPIO | MFP_LPM_DRIVE_HIGH, /* CAM_RST */ - - /* EMU */ - GPIO120_GPIO, /* EMU_MUX1 */ - GPIO119_GPIO, /* EMU_MUX2 */ - GPIO86_GPIO, /* SNP_INT_CTL */ - GPIO87_GPIO, /* SNP_INT_IN */ -}; -#endif - -#if defined(CONFIG_MACH_EZX_A1200) || defined(CONFIG_MACH_EZX_A910) || \ - defined(CONFIG_MACH_EZX_E2) || defined(CONFIG_MACH_EZX_E6) -static unsigned long gen2_pin_config[] __initdata = { - /* flip / lockswitch */ - GPIO15_GPIO | WAKEUP_ON_EDGE_BOTH, - - /* EOC */ - GPIO10_GPIO | WAKEUP_ON_EDGE_RISE, - - /* bluetooth (bcm2045) */ - GPIO13_GPIO | WAKEUP_ON_EDGE_RISE, /* HOSTWAKE */ - GPIO37_GPIO, /* RESET */ - GPIO57_GPIO, /* WAKEUP */ - - /* Neptune handshake */ - GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* BP_RDY */ - GPIO96_GPIO | MFP_LPM_DRIVE_HIGH, /* AP_RDY */ - GPIO3_GPIO | WAKEUP_ON_EDGE_FALL, /* WDI */ - GPIO116_GPIO | MFP_LPM_DRIVE_HIGH, /* RESET */ - GPIO41_GPIO, /* BP_FLASH */ - - /* sound */ - GPIO52_SSP3_SCLK, - GPIO83_SSP3_SFRM, - GPIO81_SSP3_TXD, - GPIO82_SSP3_RXD, - - /* ssp2 pins to in */ - GPIO22_GPIO, /* SSP2_SCLK */ - GPIO14_GPIO, /* SSP2_SFRM */ - GPIO38_GPIO, /* SSP2_TXD */ - GPIO88_GPIO, /* SSP2_RXD */ - - /* camera */ - GPIO23_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO85_CIF_LV, - GPIO84_CIF_FV, - GPIO27_CIF_DD_0, - GPIO114_CIF_DD_1, - GPIO51_CIF_DD_2, - GPIO115_CIF_DD_3, - GPIO95_CIF_DD_4, - GPIO48_CIF_DD_5, - GPIO93_CIF_DD_6, - GPIO12_CIF_DD_7, - GPIO50_GPIO | MFP_LPM_DRIVE_HIGH, /* CAM_EN */ - GPIO28_GPIO | MFP_LPM_DRIVE_HIGH, /* CAM_RST */ - GPIO17_GPIO, /* CAM_FLASH */ -}; -#endif - -#ifdef CONFIG_MACH_EZX_A780 -static unsigned long a780_pin_config[] __initdata = { - /* keypad */ - GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - - /* attenuate sound */ - GPIO96_GPIO, -}; -#endif - -#ifdef CONFIG_MACH_EZX_E680 -static unsigned long e680_pin_config[] __initdata = { - /* keypad */ - GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO96_KP_DKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_DKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_DKIN_5 | WAKEUP_ON_LEVEL_HIGH, - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - - /* MIDI */ - GPIO79_GPIO, /* VA_SEL_BUL */ - GPIO80_GPIO, /* FLT_SEL_BUL */ - GPIO78_GPIO, /* MIDI_RESET */ - GPIO33_GPIO, /* MIDI_CS */ - GPIO15_GPIO, /* MIDI_IRQ */ - GPIO49_GPIO, /* MIDI_NPWE */ - GPIO18_GPIO, /* MIDI_RDY */ - - /* leds */ - GPIO46_GPIO, - GPIO47_GPIO, -}; -#endif - -#ifdef CONFIG_MACH_EZX_A1200 -static unsigned long a1200_pin_config[] __initdata = { - /* keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, -}; -#endif - -#ifdef CONFIG_MACH_EZX_A910 -static unsigned long a910_pin_config[] __initdata = { - /* keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, - - /* WLAN */ - GPIO89_GPIO, /* RESET */ - GPIO33_GPIO, /* WAKEUP */ - GPIO94_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */ - - /* MMC CS */ - GPIO20_GPIO, -}; -#endif - -#ifdef CONFIG_MACH_EZX_E2 -static unsigned long e2_pin_config[] __initdata = { - /* keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, -}; -#endif - -#ifdef CONFIG_MACH_EZX_E6 -static unsigned long e6_pin_config[] __initdata = { - /* keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, -}; -#endif - -/* KEYPAD */ -#ifdef CONFIG_MACH_EZX_A780 -static unsigned int a780_key_map[] = { - KEY(0, 0, KEY_SEND), - KEY(0, 1, KEY_BACK), - KEY(0, 2, KEY_END), - KEY(0, 3, KEY_PAGEUP), - KEY(0, 4, KEY_UP), - - KEY(1, 0, KEY_NUMERIC_1), - KEY(1, 1, KEY_NUMERIC_2), - KEY(1, 2, KEY_NUMERIC_3), - KEY(1, 3, KEY_SELECT), - KEY(1, 4, KEY_KPENTER), - - KEY(2, 0, KEY_NUMERIC_4), - KEY(2, 1, KEY_NUMERIC_5), - KEY(2, 2, KEY_NUMERIC_6), - KEY(2, 3, KEY_RECORD), - KEY(2, 4, KEY_LEFT), - - KEY(3, 0, KEY_NUMERIC_7), - KEY(3, 1, KEY_NUMERIC_8), - KEY(3, 2, KEY_NUMERIC_9), - KEY(3, 3, KEY_HOME), - KEY(3, 4, KEY_RIGHT), - - KEY(4, 0, KEY_NUMERIC_STAR), - KEY(4, 1, KEY_NUMERIC_0), - KEY(4, 2, KEY_NUMERIC_POUND), - KEY(4, 3, KEY_PAGEDOWN), - KEY(4, 4, KEY_DOWN), -}; - -static struct pxa27x_keypad_platform_data a780_keypad_platform_data = { - .matrix_key_rows = 5, - .matrix_key_cols = 5, - .matrix_key_map = a780_key_map, - .matrix_key_map_size = ARRAY_SIZE(a780_key_map), - - .direct_key_map = { KEY_CAMERA }, - .direct_key_num = 1, - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_A780 */ - -#ifdef CONFIG_MACH_EZX_E680 -static unsigned int e680_key_map[] = { - KEY(0, 0, KEY_UP), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_RESERVED), - KEY(0, 3, KEY_SEND), - - KEY(1, 0, KEY_DOWN), - KEY(1, 1, KEY_LEFT), - KEY(1, 2, KEY_PAGEUP), - KEY(1, 3, KEY_PAGEDOWN), - - KEY(2, 0, KEY_RESERVED), - KEY(2, 1, KEY_RESERVED), - KEY(2, 2, KEY_RESERVED), - KEY(2, 3, KEY_KPENTER), -}; - -static struct pxa27x_keypad_platform_data e680_keypad_platform_data = { - .matrix_key_rows = 3, - .matrix_key_cols = 4, - .matrix_key_map = e680_key_map, - .matrix_key_map_size = ARRAY_SIZE(e680_key_map), - - .direct_key_map = { - KEY_CAMERA, - KEY_RESERVED, - KEY_RESERVED, - KEY_F1, - KEY_CANCEL, - KEY_F2, - }, - .direct_key_num = 6, - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_E680 */ - -#ifdef CONFIG_MACH_EZX_A1200 -static unsigned int a1200_key_map[] = { - KEY(0, 0, KEY_RESERVED), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_PAGEDOWN), - KEY(0, 3, KEY_RESERVED), - KEY(0, 4, KEY_RESERVED), - KEY(0, 5, KEY_RESERVED), - - KEY(1, 0, KEY_RESERVED), - KEY(1, 1, KEY_DOWN), - KEY(1, 2, KEY_CAMERA), - KEY(1, 3, KEY_RESERVED), - KEY(1, 4, KEY_RESERVED), - KEY(1, 5, KEY_RESERVED), - - KEY(2, 0, KEY_RESERVED), - KEY(2, 1, KEY_KPENTER), - KEY(2, 2, KEY_RECORD), - KEY(2, 3, KEY_RESERVED), - KEY(2, 4, KEY_RESERVED), - KEY(2, 5, KEY_SELECT), - - KEY(3, 0, KEY_RESERVED), - KEY(3, 1, KEY_UP), - KEY(3, 2, KEY_SEND), - KEY(3, 3, KEY_RESERVED), - KEY(3, 4, KEY_RESERVED), - KEY(3, 5, KEY_RESERVED), - - KEY(4, 0, KEY_RESERVED), - KEY(4, 1, KEY_LEFT), - KEY(4, 2, KEY_PAGEUP), - KEY(4, 3, KEY_RESERVED), - KEY(4, 4, KEY_RESERVED), - KEY(4, 5, KEY_RESERVED), -}; - -static struct pxa27x_keypad_platform_data a1200_keypad_platform_data = { - .matrix_key_rows = 5, - .matrix_key_cols = 6, - .matrix_key_map = a1200_key_map, - .matrix_key_map_size = ARRAY_SIZE(a1200_key_map), - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_A1200 */ - -#ifdef CONFIG_MACH_EZX_E6 -static unsigned int e6_key_map[] = { - KEY(0, 0, KEY_RESERVED), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_PAGEDOWN), - KEY(0, 3, KEY_RESERVED), - KEY(0, 4, KEY_RESERVED), - KEY(0, 5, KEY_NEXTSONG), - - KEY(1, 0, KEY_RESERVED), - KEY(1, 1, KEY_DOWN), - KEY(1, 2, KEY_PROG1), - KEY(1, 3, KEY_RESERVED), - KEY(1, 4, KEY_RESERVED), - KEY(1, 5, KEY_RESERVED), - - KEY(2, 0, KEY_RESERVED), - KEY(2, 1, KEY_ENTER), - KEY(2, 2, KEY_CAMERA), - KEY(2, 3, KEY_RESERVED), - KEY(2, 4, KEY_RESERVED), - KEY(2, 5, KEY_WWW), - - KEY(3, 0, KEY_RESERVED), - KEY(3, 1, KEY_UP), - KEY(3, 2, KEY_SEND), - KEY(3, 3, KEY_RESERVED), - KEY(3, 4, KEY_RESERVED), - KEY(3, 5, KEY_PLAYPAUSE), - - KEY(4, 0, KEY_RESERVED), - KEY(4, 1, KEY_LEFT), - KEY(4, 2, KEY_PAGEUP), - KEY(4, 3, KEY_RESERVED), - KEY(4, 4, KEY_RESERVED), - KEY(4, 5, KEY_PREVIOUSSONG), -}; - -static struct pxa27x_keypad_platform_data e6_keypad_platform_data = { - .matrix_key_rows = 5, - .matrix_key_cols = 6, - .matrix_key_map = e6_key_map, - .matrix_key_map_size = ARRAY_SIZE(e6_key_map), - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_E6 */ - -#ifdef CONFIG_MACH_EZX_A910 -static unsigned int a910_key_map[] = { - KEY(0, 0, KEY_NUMERIC_6), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_PAGEDOWN), - KEY(0, 3, KEY_KPENTER), - KEY(0, 4, KEY_NUMERIC_5), - KEY(0, 5, KEY_CAMERA), - - KEY(1, 0, KEY_NUMERIC_8), - KEY(1, 1, KEY_DOWN), - KEY(1, 2, KEY_RESERVED), - KEY(1, 3, KEY_F1), /* Left SoftKey */ - KEY(1, 4, KEY_NUMERIC_STAR), - KEY(1, 5, KEY_RESERVED), - - KEY(2, 0, KEY_NUMERIC_7), - KEY(2, 1, KEY_NUMERIC_9), - KEY(2, 2, KEY_RECORD), - KEY(2, 3, KEY_F2), /* Right SoftKey */ - KEY(2, 4, KEY_BACK), - KEY(2, 5, KEY_SELECT), - - KEY(3, 0, KEY_NUMERIC_2), - KEY(3, 1, KEY_UP), - KEY(3, 2, KEY_SEND), - KEY(3, 3, KEY_NUMERIC_0), - KEY(3, 4, KEY_NUMERIC_1), - KEY(3, 5, KEY_RECORD), - - KEY(4, 0, KEY_NUMERIC_4), - KEY(4, 1, KEY_LEFT), - KEY(4, 2, KEY_PAGEUP), - KEY(4, 3, KEY_NUMERIC_POUND), - KEY(4, 4, KEY_NUMERIC_3), - KEY(4, 5, KEY_RESERVED), -}; - -static struct pxa27x_keypad_platform_data a910_keypad_platform_data = { - .matrix_key_rows = 5, - .matrix_key_cols = 6, - .matrix_key_map = a910_key_map, - .matrix_key_map_size = ARRAY_SIZE(a910_key_map), - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_A910 */ - -#ifdef CONFIG_MACH_EZX_E2 -static unsigned int e2_key_map[] = { - KEY(0, 0, KEY_NUMERIC_6), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_NUMERIC_9), - KEY(0, 3, KEY_NEXTSONG), - KEY(0, 4, KEY_NUMERIC_5), - KEY(0, 5, KEY_F1), /* Left SoftKey */ - - KEY(1, 0, KEY_NUMERIC_8), - KEY(1, 1, KEY_DOWN), - KEY(1, 2, KEY_RESERVED), - KEY(1, 3, KEY_PAGEUP), - KEY(1, 4, KEY_NUMERIC_STAR), - KEY(1, 5, KEY_F2), /* Right SoftKey */ - - KEY(2, 0, KEY_NUMERIC_7), - KEY(2, 1, KEY_KPENTER), - KEY(2, 2, KEY_RECORD), - KEY(2, 3, KEY_PAGEDOWN), - KEY(2, 4, KEY_BACK), - KEY(2, 5, KEY_NUMERIC_0), - - KEY(3, 0, KEY_NUMERIC_2), - KEY(3, 1, KEY_UP), - KEY(3, 2, KEY_SEND), - KEY(3, 3, KEY_PLAYPAUSE), - KEY(3, 4, KEY_NUMERIC_1), - KEY(3, 5, KEY_SOUND), /* Music SoftKey */ - - KEY(4, 0, KEY_NUMERIC_4), - KEY(4, 1, KEY_LEFT), - KEY(4, 2, KEY_NUMERIC_POUND), - KEY(4, 3, KEY_PREVIOUSSONG), - KEY(4, 4, KEY_NUMERIC_3), - KEY(4, 5, KEY_RESERVED), -}; - -static struct pxa27x_keypad_platform_data e2_keypad_platform_data = { - .matrix_key_rows = 5, - .matrix_key_cols = 6, - .matrix_key_map = e2_key_map, - .matrix_key_map_size = ARRAY_SIZE(e2_key_map), - - .debounce_interval = 30, -}; -#endif /* CONFIG_MACH_EZX_E2 */ - -#ifdef CONFIG_MACH_EZX_A780 -/* gpio_keys */ -static struct gpio_keys_button a780_buttons[] = { - [0] = { - .code = SW_LID, - .gpio = GPIO12_A780_FLIP_LID, - .active_low = 0, - .desc = "A780 flip lid", - .type = EV_SW, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data a780_gpio_keys_platform_data = { - .buttons = a780_buttons, - .nbuttons = ARRAY_SIZE(a780_buttons), -}; - -static struct platform_device a780_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &a780_gpio_keys_platform_data, - }, -}; - -/* camera */ -static int a780_camera_init(void) -{ - int err; - - /* - * GPIO50_nCAM_EN is active low - * GPIO19_GEN1_CAM_RST is active on rising edge - */ - err = gpio_request(GPIO50_nCAM_EN, "nCAM_EN"); - if (err) { - pr_err("%s: Failed to request nCAM_EN\n", __func__); - goto fail; - } - - err = gpio_request(GPIO19_GEN1_CAM_RST, "CAM_RST"); - if (err) { - pr_err("%s: Failed to request CAM_RST\n", __func__); - goto fail_gpio_cam_rst; - } - - gpio_direction_output(GPIO50_nCAM_EN, 1); - gpio_direction_output(GPIO19_GEN1_CAM_RST, 0); - - return 0; - -fail_gpio_cam_rst: - gpio_free(GPIO50_nCAM_EN); -fail: - return err; -} - -static int a780_camera_power(struct device *dev, int on) -{ - gpio_set_value(GPIO50_nCAM_EN, !on); - return 0; -} - -static int a780_camera_reset(struct device *dev) -{ - gpio_set_value(GPIO19_GEN1_CAM_RST, 0); - msleep(10); - gpio_set_value(GPIO19_GEN1_CAM_RST, 1); - - return 0; -} - -struct pxacamera_platform_data a780_pxacamera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN, - .mclk_10khz = 5000, -}; - -static struct i2c_board_info a780_camera_i2c_board_info = { - I2C_BOARD_INFO("mt9m111", 0x5d), -}; - -static struct soc_camera_link a780_iclink = { - .bus_id = 0, - .flags = SOCAM_SENSOR_INVERT_PCLK, - .i2c_adapter_id = 0, - .board_info = &a780_camera_i2c_board_info, - .power = a780_camera_power, - .reset = a780_camera_reset, -}; - -static struct platform_device a780_camera = { - .name = "soc-camera-pdrv", - .id = 0, - .dev = { - .platform_data = &a780_iclink, - }, -}; - -static struct platform_device *a780_devices[] __initdata = { - &a780_gpio_keys, -}; - -static void __init a780_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - - pxa_set_fb_info(NULL, &ezx_fb_info_1); - - pxa_set_keypad_info(&a780_keypad_platform_data); - - if (a780_camera_init() == 0) { - pxa_set_camera_info(&a780_pxacamera_platform_data); - platform_device_register(&a780_camera); - } - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(a780_devices)); -} - -MACHINE_START(EZX_A780, "Motorola EZX A780") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = a780_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_EZX_E680 -/* gpio_keys */ -static struct gpio_keys_button e680_buttons[] = { - [0] = { - .code = KEY_SCREENLOCK, - .gpio = GPIO12_E680_LOCK_SWITCH, - .active_low = 0, - .desc = "E680 lock switch", - .type = EV_KEY, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data e680_gpio_keys_platform_data = { - .buttons = e680_buttons, - .nbuttons = ARRAY_SIZE(e680_buttons), -}; - -static struct platform_device e680_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &e680_gpio_keys_platform_data, - }, -}; - -static struct i2c_board_info __initdata e680_i2c_board_info[] = { - { I2C_BOARD_INFO("tea5767", 0x81) }, -}; - -static struct platform_device *e680_devices[] __initdata = { - &e680_gpio_keys, -}; - -static void __init e680_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(e680_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(e680_i2c_board_info)); - - pxa_set_fb_info(NULL, &ezx_fb_info_1); - - pxa_set_keypad_info(&e680_keypad_platform_data); - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(e680_devices)); -} - -MACHINE_START(EZX_E680, "Motorola EZX E680") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = e680_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_EZX_A1200 -/* gpio_keys */ -static struct gpio_keys_button a1200_buttons[] = { - [0] = { - .code = SW_LID, - .gpio = GPIO15_A1200_FLIP_LID, - .active_low = 0, - .desc = "A1200 flip lid", - .type = EV_SW, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data a1200_gpio_keys_platform_data = { - .buttons = a1200_buttons, - .nbuttons = ARRAY_SIZE(a1200_buttons), -}; - -static struct platform_device a1200_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &a1200_gpio_keys_platform_data, - }, -}; - -static struct i2c_board_info __initdata a1200_i2c_board_info[] = { - { I2C_BOARD_INFO("tea5767", 0x81) }, -}; - -static struct platform_device *a1200_devices[] __initdata = { - &a1200_gpio_keys, -}; - -static void __init a1200_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(a1200_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(a1200_i2c_board_info)); - - pxa_set_fb_info(NULL, &ezx_fb_info_2); - - pxa_set_keypad_info(&a1200_keypad_platform_data); - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(a1200_devices)); -} - -MACHINE_START(EZX_A1200, "Motorola EZX A1200") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = a1200_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_EZX_A910 -/* gpio_keys */ -static struct gpio_keys_button a910_buttons[] = { - [0] = { - .code = SW_LID, - .gpio = GPIO15_A910_FLIP_LID, - .active_low = 0, - .desc = "A910 flip lid", - .type = EV_SW, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data a910_gpio_keys_platform_data = { - .buttons = a910_buttons, - .nbuttons = ARRAY_SIZE(a910_buttons), -}; - -static struct platform_device a910_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &a910_gpio_keys_platform_data, - }, -}; - -/* camera */ -static int a910_camera_init(void) -{ - int err; - - /* - * GPIO50_nCAM_EN is active low - * GPIO28_GEN2_CAM_RST is active on rising edge - */ - err = gpio_request(GPIO50_nCAM_EN, "nCAM_EN"); - if (err) { - pr_err("%s: Failed to request nCAM_EN\n", __func__); - goto fail; - } - - err = gpio_request(GPIO28_GEN2_CAM_RST, "CAM_RST"); - if (err) { - pr_err("%s: Failed to request CAM_RST\n", __func__); - goto fail_gpio_cam_rst; - } - - gpio_direction_output(GPIO50_nCAM_EN, 1); - gpio_direction_output(GPIO28_GEN2_CAM_RST, 0); - - return 0; - -fail_gpio_cam_rst: - gpio_free(GPIO50_nCAM_EN); -fail: - return err; -} - -static int a910_camera_power(struct device *dev, int on) -{ - gpio_set_value(GPIO50_nCAM_EN, !on); - return 0; -} - -static int a910_camera_reset(struct device *dev) -{ - gpio_set_value(GPIO28_GEN2_CAM_RST, 0); - msleep(10); - gpio_set_value(GPIO28_GEN2_CAM_RST, 1); - - return 0; -} - -struct pxacamera_platform_data a910_pxacamera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN, - .mclk_10khz = 5000, -}; - -static struct i2c_board_info a910_camera_i2c_board_info = { - I2C_BOARD_INFO("mt9m111", 0x5d), -}; - -static struct soc_camera_link a910_iclink = { - .bus_id = 0, - .i2c_adapter_id = 0, - .board_info = &a910_camera_i2c_board_info, - .power = a910_camera_power, - .reset = a910_camera_reset, -}; - -static struct platform_device a910_camera = { - .name = "soc-camera-pdrv", - .id = 0, - .dev = { - .platform_data = &a910_iclink, - }, -}; - -/* leds-lp3944 */ -static struct lp3944_platform_data a910_lp3944_leds = { - .leds_size = LP3944_LEDS_MAX, - .leds = { - [0] = { - .name = "a910:red:", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED, - }, - [1] = { - .name = "a910:green:", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED, - }, - [2] { - .name = "a910:blue:", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED, - }, - /* Leds 3 and 4 are used as display power switches */ - [3] = { - .name = "a910::cli_display", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED_INVERTED - }, - [4] = { - .name = "a910::main_display", - .status = LP3944_LED_STATUS_ON, - .type = LP3944_LED_TYPE_LED_INVERTED - }, - [5] = { .type = LP3944_LED_TYPE_NONE }, - [6] = { - .name = "a910::torch", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED, - }, - [7] = { - .name = "a910::flash", - .status = LP3944_LED_STATUS_OFF, - .type = LP3944_LED_TYPE_LED_INVERTED, - }, - }, -}; - -static struct i2c_board_info __initdata a910_i2c_board_info[] = { - { - I2C_BOARD_INFO("lp3944", 0x60), - .platform_data = &a910_lp3944_leds, - }, -}; - -static struct platform_device *a910_devices[] __initdata = { - &a910_gpio_keys, -}; - -static void __init a910_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(a910_i2c_board_info)); - - pxa_set_fb_info(NULL, &ezx_fb_info_2); - - pxa_set_keypad_info(&a910_keypad_platform_data); - - if (a910_camera_init() == 0) { - pxa_set_camera_info(&a910_pxacamera_platform_data); - platform_device_register(&a910_camera); - } - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(a910_devices)); -} - -MACHINE_START(EZX_A910, "Motorola EZX A910") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = a910_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_EZX_E6 -/* gpio_keys */ -static struct gpio_keys_button e6_buttons[] = { - [0] = { - .code = KEY_SCREENLOCK, - .gpio = GPIO15_E6_LOCK_SWITCH, - .active_low = 0, - .desc = "E6 lock switch", - .type = EV_KEY, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data e6_gpio_keys_platform_data = { - .buttons = e6_buttons, - .nbuttons = ARRAY_SIZE(e6_buttons), -}; - -static struct platform_device e6_gpio_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &e6_gpio_keys_platform_data, - }, -}; - -static struct i2c_board_info __initdata e6_i2c_board_info[] = { - { I2C_BOARD_INFO("tea5767", 0x81) }, -}; - -static struct platform_device *e6_devices[] __initdata = { - &e6_gpio_keys, -}; - -static void __init e6_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(e6_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(e6_i2c_board_info)); - - pxa_set_fb_info(NULL, &ezx_fb_info_2); - - pxa_set_keypad_info(&e6_keypad_platform_data); - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(e6_devices)); -} - -MACHINE_START(EZX_E6, "Motorola EZX E6") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = e6_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_EZX_E2 -static struct i2c_board_info __initdata e2_i2c_board_info[] = { - { I2C_BOARD_INFO("tea5767", 0x81) }, -}; - -static struct platform_device *e2_devices[] __initdata = { -}; - -static void __init e2_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); - pxa2xx_mfp_config(ARRAY_AND_SIZE(e2_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(e2_i2c_board_info)); - - pxa_set_fb_info(NULL, &ezx_fb_info_2); - - pxa_set_keypad_info(&e2_keypad_platform_data); - - platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); - platform_add_devices(ARRAY_AND_SIZE(e2_devices)); -} - -MACHINE_START(EZX_E2, "Motorola EZX E2") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = EZX_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = e2_init, - .restart = pxa_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/generic.c b/ANDROID_3.4.5/arch/arm/mach-pxa/generic.c deleted file mode 100644 index 42254175..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/generic.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/generic.c - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * Code common to all PXA machines. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Since this file should be linked before any other machine specific file, - * the __initcall() here will be executed first. This serves as default - * initialization stuff for PXA machines which can be overridden later if - * need be. - */ -#include <linux/gpio.h> -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> - -#include <mach/hardware.h> -#include <asm/mach/map.h> -#include <asm/mach-types.h> - -#include <mach/reset.h> -#include <mach/smemc.h> -#include <mach/pxa3xx-regs.h> - -#include "generic.h" - -void clear_reset_status(unsigned int mask) -{ - if (cpu_is_pxa2xx()) - pxa2xx_clear_reset_status(mask); - else { - /* RESET_STATUS_* has a 1:1 mapping with ARSR */ - ARSR = mask; - } -} - -unsigned long get_clock_tick_rate(void) -{ - unsigned long clock_tick_rate; - - if (cpu_is_pxa25x()) - clock_tick_rate = 3686400; - else if (machine_is_mainstone()) - clock_tick_rate = 3249600; - else - clock_tick_rate = 3250000; - - return clock_tick_rate; -} -EXPORT_SYMBOL(get_clock_tick_rate); - -/* - * 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) -{ - 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; -} -EXPORT_SYMBOL(get_clk_frequency_khz); - -/* - * Intel PXA2xx internal register mapping. - * - * Note: virtual 0xfffe0000-0xffffffff is reserved for the vector table - * and cache flush area. - */ -static struct map_desc common_io_desc[] __initdata = { - { /* Devs */ - .virtual = 0xf2000000, - .pfn = __phys_to_pfn(0x40000000), - .length = 0x02000000, - .type = MT_DEVICE - }, { /* UNCACHED_PHYS_0 */ - .virtual = 0xff000000, - .pfn = __phys_to_pfn(0x00000000), - .length = 0x00100000, - .type = MT_DEVICE - } -}; - -void __init pxa_map_io(void) -{ - iotable_init(ARRAY_AND_SIZE(common_io_desc)); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/generic.h b/ANDROID_3.4.5/arch/arm/mach-pxa/generic.h deleted file mode 100644 index 42d5cca6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/generic.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/generic.h - * - * Author: Nicolas Pitre - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -struct irq_data; -struct sys_timer; - -extern struct sys_timer pxa_timer; - -extern void __init pxa_map_io(void); - -extern unsigned int get_clk_frequency_khz(int info); - -#define SET_BANK(__nr,__start,__size) \ - mi->bank[__nr].start = (__start), \ - mi->bank[__nr].size = (__size) - -#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) - -#ifdef CONFIG_PXA25x -extern unsigned pxa25x_get_clk_frequency_khz(int); -#else -#define pxa25x_get_clk_frequency_khz(x) (0) -#endif - -#ifdef CONFIG_PXA27x -extern unsigned pxa27x_get_clk_frequency_khz(int); -#else -#define pxa27x_get_clk_frequency_khz(x) (0) -#endif - -#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) -extern void pxa2xx_clear_reset_status(unsigned int); -#else -static inline void pxa2xx_clear_reset_status(unsigned int mask) {} -#endif - -#ifdef CONFIG_PXA3xx -extern unsigned pxa3xx_get_clk_frequency_khz(int); -#else -#define pxa3xx_get_clk_frequency_khz(x) (0) -#endif - -extern struct syscore_ops pxa_irq_syscore_ops; -extern struct syscore_ops pxa2xx_mfp_syscore_ops; -extern struct syscore_ops pxa3xx_mfp_syscore_ops; - -void __init pxa_set_ffuart_info(void *info); -void __init pxa_set_btuart_info(void *info); -void __init pxa_set_stuart_info(void *info); -void __init pxa_set_hwuart_info(void *info); - -void pxa_restart(char, const char *); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/gumstix.c b/ANDROID_3.4.5/arch/arm/mach-pxa/gumstix.c deleted file mode 100644 index e529a35a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/gumstix.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/gumstix.c - * - * Support for the Gumstix motherboards. - * - * Original Author: Craig Hughes - * Created: Feb 14, 2008 - * Copyright: Craig Hughes - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Implemented based on lubbock.c by Nicolas Pitre and code from Craig - * Hughes - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/delay.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/gpio.h> -#include <linux/err.h> -#include <linux/clk.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa25x.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/gumstix.h> - -#include "generic.h" - -static struct resource flash_resource = { - .start = 0x00000000, - .end = SZ_64M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct mtd_partition gumstix_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE /* force read-only */ - } , { - .name = "rootfs", - .size = MTDPART_SIZ_FULL, - .offset = MTDPART_OFS_APPEND - } -}; - -static struct flash_platform_data gumstix_flash_data = { - .map_name = "cfi_probe", - .parts = gumstix_partitions, - .nr_parts = ARRAY_SIZE(gumstix_partitions), - .width = 2, -}; - -static struct platform_device gumstix_flash_device = { - .name = "pxa2xx-flash", - .id = 0, - .dev = { - .platform_data = &gumstix_flash_data, - }, - .resource = &flash_resource, - .num_resources = 1, -}; - -static struct platform_device *devices[] __initdata = { - &gumstix_flash_device, -}; - -#ifdef CONFIG_MMC_PXA -static struct pxamci_platform_data gumstix_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void __init gumstix_mmc_init(void) -{ - pxa_set_mci_info(&gumstix_mci_platform_data); -} -#else -static void __init gumstix_mmc_init(void) -{ - pr_debug("Gumstix mmc disabled\n"); -} -#endif - -#ifdef CONFIG_USB_PXA25X -static struct gpio_vbus_mach_info gumstix_udc_info = { - .gpio_vbus = GPIO_GUMSTIX_USB_GPIOn, - .gpio_pullup = GPIO_GUMSTIX_USB_GPIOx, -}; - -static struct platform_device gumstix_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &gumstix_udc_info, - }, -}; - -static void __init gumstix_udc_init(void) -{ - platform_device_register(&gumstix_gpio_vbus); -} -#else -static void gumstix_udc_init(void) -{ - pr_debug("Gumstix udc is disabled\n"); -} -#endif - -#ifdef CONFIG_BT -/* Normally, the bootloader would have enabled this 32kHz clock but many -** boards still have u-boot 1.1.4 so we check if it has been turned on and -** if not, we turn it on with a warning message. */ -static void gumstix_setup_bt_clock(void) -{ - int timeout = 500; - - if (!(OSCC & OSCC_OOK)) - pr_warning("32kHz clock was not on. Bootloader may need to " - "be updated\n"); - else - return; - - OSCC |= OSCC_OON; - do { - if (OSCC & OSCC_OOK) - break; - udelay(1); - } while (--timeout); - if (!timeout) - pr_err("Failed to start 32kHz clock\n"); -} - -static void __init gumstix_bluetooth_init(void) -{ - int err; - - gumstix_setup_bt_clock(); - - err = gpio_request(GPIO_GUMSTIX_BTRESET, "BTRST"); - if (err) { - pr_err("gumstix: failed request gpio for bluetooth reset\n"); - return; - } - - err = gpio_direction_output(GPIO_GUMSTIX_BTRESET, 1); - if (err) { - pr_err("gumstix: can't reset bluetooth\n"); - return; - } - gpio_set_value(GPIO_GUMSTIX_BTRESET, 0); - udelay(100); - gpio_set_value(GPIO_GUMSTIX_BTRESET, 1); -} -#else -static void gumstix_bluetooth_init(void) -{ - pr_debug("Gumstix Bluetooth is disabled\n"); -} -#endif - -static unsigned long gumstix_pin_config[] __initdata = { - GPIO12_32KHz, - /* BTUART */ - GPIO42_HWUART_RXD, - GPIO43_HWUART_TXD, - GPIO44_HWUART_CTS, - GPIO45_HWUART_RTS, - /* MMC */ - GPIO6_MMC_CLK, - GPIO53_MMC_CLK, - GPIO8_MMC_CS0, -}; - -int __attribute__((weak)) am200_init(void) -{ - return 0; -} - -int __attribute__((weak)) am300_init(void) -{ - return 0; -} - -static void __init carrier_board_init(void) -{ - /* - * put carrier/expansion board init here if - * they cannot be detected programatically - */ - am200_init(); - am300_init(); -} - -static void __init gumstix_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_hwuart_info(NULL); - - gumstix_bluetooth_init(); - gumstix_udc_init(); - gumstix_mmc_init(); - (void) platform_add_devices(devices, ARRAY_SIZE(devices)); - carrier_board_init(); -} - -MACHINE_START(GUMSTIX, "Gumstix") - .atag_offset = 0x100, /* match u-boot bi_boot_params */ - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = gumstix_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/h5000.c b/ANDROID_3.4.5/arch/arm/mach-pxa/h5000.c deleted file mode 100644 index e7dec589..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/h5000.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Hardware definitions for HP iPAQ h5xxx Handheld Computers - * - * Copyright 2000-2003 Hewlett-Packard Company. - * Copyright 2002 Jamey Hicks <jamey.hicks@hp.com> - * Copyright 2004-2005 Phil Blundell <pb@handhelds.org> - * Copyright 2007-2008 Anton Vorontsov <cbouatmailru@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, - * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS - * FITNESS FOR ANY PARTICULAR PURPOSE. - * - * Author: Jamey Hicks. - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/irq.h> - -#include <mach/pxa25x.h> -#include <mach/h5000.h> -#include <mach/udc.h> -#include <mach/smemc.h> - -#include "generic.h" - -/* - * Flash - */ - -static struct mtd_partition h5000_flash0_partitions[] = { - { - .name = "bootldr", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE, - }, - { - .name = "root", - .size = MTDPART_SIZ_FULL, - .offset = MTDPART_OFS_APPEND, - }, -}; - -static struct mtd_partition h5000_flash1_partitions[] = { - { - .name = "second root", - .size = SZ_16M - 0x00040000, - .offset = 0, - }, - { - .name = "asset", - .size = MTDPART_SIZ_FULL, - .offset = MTDPART_OFS_APPEND, - .mask_flags = MTD_WRITEABLE, - }, -}; - -static struct physmap_flash_data h5000_flash0_data = { - .width = 4, - .parts = h5000_flash0_partitions, - .nr_parts = ARRAY_SIZE(h5000_flash0_partitions), -}; - -static struct physmap_flash_data h5000_flash1_data = { - .width = 4, - .parts = h5000_flash1_partitions, - .nr_parts = ARRAY_SIZE(h5000_flash1_partitions), -}; - -static struct resource h5000_flash0_resources = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM | IORESOURCE_MEM_32BIT, -}; - -static struct resource h5000_flash1_resources = { - .start = PXA_CS0_PHYS + SZ_32M, - .end = PXA_CS0_PHYS + SZ_32M + SZ_16M - 1, - .flags = IORESOURCE_MEM | IORESOURCE_MEM_32BIT, -}; - -static struct platform_device h5000_flash[] = { - { - .name = "physmap-flash", - .id = 0, - .resource = &h5000_flash0_resources, - .num_resources = 1, - .dev = { - .platform_data = &h5000_flash0_data, - }, - }, - { - .name = "physmap-flash", - .id = 1, - .resource = &h5000_flash1_resources, - .num_resources = 1, - .dev = { - .platform_data = &h5000_flash1_data, - }, - }, -}; - -/* - * USB Device Controller - */ - -static struct pxa2xx_udc_mach_info h5000_udc_mach_info __initdata = { - .gpio_pullup = H5000_GPIO_USB_PULLUP, -}; - -/* - * GPIO setup - */ - -static unsigned long h5000_pin_config[] __initdata = { - /* Crystal and Clock Signals */ - GPIO12_32KHz, - - /* SDRAM and Static Memory I/O Signals */ - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO79_nCS_3, - GPIO80_nCS_4, - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO36_FFUART_DCD, - GPIO37_FFUART_DSR, - GPIO38_FFUART_RI, - GPIO39_FFUART_TXD, - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* SSP1 */ - GPIO23_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - GPIO32_I2S_SYSCLK, -}; - -/* - * Localbus setup: - * CS0: Flash; - * CS1: MediaQ chip, select 16-bit bus and vlio; - * CS5: SAMCOP. - */ - -static void fix_msc(void) -{ - __raw_writel(0x129c24f2, MSC0); - __raw_writel(0x7ff424fa, MSC1); - __raw_writel(0x7ff47ff4, MSC2); - - __raw_writel(__raw_readl(MDREFR) | 0x02080000, MDREFR); -} - -/* - * Platform devices - */ - -static struct platform_device *devices[] __initdata = { - &h5000_flash[0], - &h5000_flash[1], -}; - -static void __init h5000_init(void) -{ - fix_msc(); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(h5000_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_udc_info(&h5000_udc_mach_info); - platform_add_devices(ARRAY_AND_SIZE(devices)); -} - -MACHINE_START(H5400, "HP iPAQ H5000") - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = h5000_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/himalaya.c b/ANDROID_3.4.5/arch/arm/mach-pxa/himalaya.c deleted file mode 100644 index 2962de89..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/himalaya.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/himalaya.c - * - * Hardware definitions for the HTC Himalaya - * - * Based on 2.6.21-hh20's himalaya.c and himalaya_lcd.c - * - * Copyright (c) 2008 Zbynek Michl <Zbynek.Michl@seznam.cz> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/device.h> -#include <linux/fb.h> -#include <linux/platform_device.h> - -#include <video/w100fb.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa25x.h> - -#include "generic.h" - -/* ---------------------- Himalaya LCD definitions -------------------- */ - -static struct w100_gen_regs himalaya_lcd_regs = { - .lcd_format = 0x00000003, - .lcdd_cntl1 = 0x00000000, - .lcdd_cntl2 = 0x0003ffff, - .genlcd_cntl1 = 0x00fff003, - .genlcd_cntl2 = 0x00000003, - .genlcd_cntl3 = 0x000102aa, -}; - -static struct w100_mode himalaya4_lcd_mode = { - .xres = 240, - .yres = 320, - .left_margin = 0, - .right_margin = 31, - .upper_margin = 15, - .lower_margin = 0, - .crtc_ss = 0x80150014, - .crtc_ls = 0xa0fb00f7, - .crtc_gs = 0xc0080007, - .crtc_vpos_gs = 0x00080007, - .crtc_rev = 0x0000000a, - .crtc_dclk = 0x81700030, - .crtc_gclk = 0x8015010f, - .crtc_goe = 0x00000000, - .pll_freq = 80, - .pixclk_divider = 15, - .pixclk_divider_rotated = 15, - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .sysclk_src = CLK_SRC_PLL, -}; - -static struct w100_mode himalaya6_lcd_mode = { - .xres = 240, - .yres = 320, - .left_margin = 9, - .right_margin = 8, - .upper_margin = 5, - .lower_margin = 4, - .crtc_ss = 0x80150014, - .crtc_ls = 0xa0fb00f7, - .crtc_gs = 0xc0080007, - .crtc_vpos_gs = 0x00080007, - .crtc_rev = 0x0000000a, - .crtc_dclk = 0xa1700030, - .crtc_gclk = 0x8015010f, - .crtc_goe = 0x00000000, - .pll_freq = 95, - .pixclk_divider = 0xb, - .pixclk_divider_rotated = 4, - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 1, - .sysclk_src = CLK_SRC_PLL, -}; - -static struct w100_gpio_regs himalaya_w100_gpio_info = { - .init_data1 = 0xffff0000, /* GPIO_DATA */ - .gpio_dir1 = 0x00000000, /* GPIO_CNTL1 */ - .gpio_oe1 = 0x003c0000, /* GPIO_CNTL2 */ - .init_data2 = 0x00000000, /* GPIO_DATA2 */ - .gpio_dir2 = 0x00000000, /* GPIO_CNTL3 */ - .gpio_oe2 = 0x00000000, /* GPIO_CNTL4 */ -}; - -static struct w100fb_mach_info himalaya_fb_info = { - .num_modes = 1, - .regs = &himalaya_lcd_regs, - .gpio = &himalaya_w100_gpio_info, - .xtal_freq = 16000000, -}; - -static struct resource himalaya_fb_resources[] = { - [0] = { - .start = 0x08000000, - .end = 0x08ffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device himalaya_fb_device = { - .name = "w100fb", - .id = -1, - .dev = { - .platform_data = &himalaya_fb_info, - }, - .num_resources = ARRAY_SIZE(himalaya_fb_resources), - .resource = himalaya_fb_resources, -}; - -/* ----------------------------------------------------------------------- */ - -static struct platform_device *devices[] __initdata = { - &himalaya_fb_device, -}; - -static void __init himalaya_lcd_init(void) -{ - int himalaya_boardid; - - himalaya_boardid = 0x4; /* hardcoded (detection needs ASIC3 functions) */ - printk(KERN_INFO "himalaya LCD Driver init. boardid=%d\n", - himalaya_boardid); - - switch (himalaya_boardid) { - case 0x4: - himalaya_fb_info.modelist = &himalaya4_lcd_mode; - break; - case 0x6: - himalaya_fb_info.modelist = &himalaya6_lcd_mode; - break; - default: - printk(KERN_INFO "himalaya lcd_init: unknown boardid=%d. Using 0x4\n", - himalaya_boardid); - himalaya_fb_info.modelist = &himalaya4_lcd_mode; - } -} - -static void __init himalaya_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - himalaya_lcd_init(); - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - - -MACHINE_START(HIMALAYA, "HTC Himalaya") - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = himalaya_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/hx4700.c b/ANDROID_3.4.5/arch/arm/mach-pxa/hx4700.c deleted file mode 100644 index b83b95a2..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/hx4700.c +++ /dev/null @@ -1,895 +0,0 @@ -/* - * Support for HP iPAQ hx4700 PDAs. - * - * Copyright (c) 2008-2009 Philipp Zabel - * - * Based on code: - * Copyright (c) 2004 Hewlett-Packard Company. - * Copyright (c) 2005 SDG Systems, LLC - * Copyright (c) 2006 Anton Vorontsov <cbou@mail.ru> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/fb.h> -#include <linux/gpio.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/lcd.h> -#include <linux/mfd/htc-egpio.h> -#include <linux/mfd/asic3.h> -#include <linux/mtd/physmap.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/regulator/driver.h> -#include <linux/regulator/gpio-regulator.h> -#include <linux/regulator/machine.h> -#include <linux/regulator/max1586.h> -#include <linux/spi/ads7846.h> -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/i2c/pxa-i2c.h> - -#include <mach/hardware.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/hx4700.h> -#include <mach/irda.h> - -#include <sound/ak4641.h> -#include <video/platform_lcd.h> -#include <video/w100fb.h> - -#include "devices.h" -#include "generic.h" - -/* Physical address space information */ - -#define ATI_W3220_PHYS PXA_CS2_PHYS /* ATI Imageon 3220 Graphics */ -#define ASIC3_PHYS PXA_CS3_PHYS -#define ASIC3_SD_PHYS (PXA_CS3_PHYS + 0x02000000) - -static unsigned long hx4700_pin_config[] __initdata = { - - /* SDRAM and Static Memory I/O Signals */ - GPIO20_nSDCS_2, - GPIO21_nSDCS_3, - GPIO15_nCS_1, - GPIO78_nCS_2, /* W3220 */ - GPIO79_nCS_3, /* ASIC3 */ - GPIO80_nCS_4, - GPIO33_nCS_5, /* EGPIO, WLAN */ - - /* PC CARD */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO85_nPCE_1, - GPIO104_PSKTSEL, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* FFUART (RS-232) */ - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO36_FFUART_DCD, - GPIO37_FFUART_DSR, - GPIO38_FFUART_RI, - GPIO39_FFUART_TXD, - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD_LPM_LOW, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS_LPM_LOW, - - /* PWM 1 (Backlight) */ - GPIO17_PWM1_OUT, - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - GPIO113_I2S_SYSCLK, - - /* SSP 1 (NavPoint) */ - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* SSP 2 (TSC2046) */ - GPIO19_SSP2_SCLK, - GPIO86_SSP2_RXD, - GPIO87_SSP2_TXD, - GPIO88_GPIO, - - /* HX4700 specific input GPIOs */ - GPIO12_GPIO, /* ASIC3_IRQ */ - GPIO13_GPIO, /* W3220_IRQ */ - GPIO14_GPIO, /* nWLAN_IRQ */ - - GPIO10_GPIO, /* GSM_IRQ */ - GPIO13_GPIO, /* CPLD_IRQ */ - GPIO107_GPIO, /* DS1WM_IRQ */ - GPIO108_GPIO, /* GSM_READY */ - GPIO58_GPIO, /* TSC2046_nPENIRQ */ - GPIO66_GPIO, /* nSDIO_IRQ */ -}; - -/* - * IRDA - */ - -static struct pxaficp_platform_data ficp_info = { - .gpio_pwdown = GPIO105_HX4700_nIR_ON, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -/* - * GPIO Keys - */ - -#define INIT_KEY(_code, _gpio, _active_low, _desc) \ - { \ - .code = KEY_##_code, \ - .gpio = _gpio, \ - .active_low = _active_low, \ - .desc = _desc, \ - .type = EV_KEY, \ - .wakeup = 1, \ - } - -static struct gpio_keys_button gpio_keys_buttons[] = { - INIT_KEY(POWER, GPIO0_HX4700_nKEY_POWER, 1, "Power button"), - INIT_KEY(MAIL, GPIO94_HX4700_KEY_MAIL, 0, "Mail button"), - INIT_KEY(ADDRESSBOOK, GPIO99_HX4700_KEY_CONTACTS,0, "Contacts button"), - INIT_KEY(RECORD, GPIOD6_nKEY_RECORD, 1, "Record button"), - INIT_KEY(CALENDAR, GPIOD1_nKEY_CALENDAR, 1, "Calendar button"), - INIT_KEY(HOMEPAGE, GPIOD3_nKEY_HOME, 1, "Home button"), -}; - -static struct gpio_keys_platform_data gpio_keys_data = { - .buttons = gpio_keys_buttons, - .nbuttons = ARRAY_SIZE(gpio_keys_buttons), -}; - -static struct platform_device gpio_keys = { - .name = "gpio-keys", - .dev = { - .platform_data = &gpio_keys_data, - }, - .id = -1, -}; - -/* - * ASIC3 - */ - -static u16 asic3_gpio_config[] = { - /* ASIC3 GPIO banks A and B along with some of C and D - implement the buffering for the CF slot. */ - ASIC3_CONFIG_GPIO(0, 1, 1, 0), - ASIC3_CONFIG_GPIO(1, 1, 1, 0), - ASIC3_CONFIG_GPIO(2, 1, 1, 0), - ASIC3_CONFIG_GPIO(3, 1, 1, 0), - ASIC3_CONFIG_GPIO(4, 1, 1, 0), - ASIC3_CONFIG_GPIO(5, 1, 1, 0), - ASIC3_CONFIG_GPIO(6, 1, 1, 0), - ASIC3_CONFIG_GPIO(7, 1, 1, 0), - ASIC3_CONFIG_GPIO(8, 1, 1, 0), - ASIC3_CONFIG_GPIO(9, 1, 1, 0), - ASIC3_CONFIG_GPIO(10, 1, 1, 0), - ASIC3_CONFIG_GPIO(11, 1, 1, 0), - ASIC3_CONFIG_GPIO(12, 1, 1, 0), - ASIC3_CONFIG_GPIO(13, 1, 1, 0), - ASIC3_CONFIG_GPIO(14, 1, 1, 0), - ASIC3_CONFIG_GPIO(15, 1, 1, 0), - - ASIC3_CONFIG_GPIO(16, 1, 1, 0), - ASIC3_CONFIG_GPIO(17, 1, 1, 0), - ASIC3_CONFIG_GPIO(18, 1, 1, 0), - ASIC3_CONFIG_GPIO(19, 1, 1, 0), - ASIC3_CONFIG_GPIO(20, 1, 1, 0), - ASIC3_CONFIG_GPIO(21, 1, 1, 0), - ASIC3_CONFIG_GPIO(22, 1, 1, 0), - ASIC3_CONFIG_GPIO(23, 1, 1, 0), - ASIC3_CONFIG_GPIO(24, 1, 1, 0), - ASIC3_CONFIG_GPIO(25, 1, 1, 0), - ASIC3_CONFIG_GPIO(26, 1, 1, 0), - ASIC3_CONFIG_GPIO(27, 1, 1, 0), - ASIC3_CONFIG_GPIO(28, 1, 1, 0), - ASIC3_CONFIG_GPIO(29, 1, 1, 0), - ASIC3_CONFIG_GPIO(30, 1, 1, 0), - ASIC3_CONFIG_GPIO(31, 1, 1, 0), - - /* GPIOC - CF, LEDs, SD */ - ASIC3_GPIOC0_LED0, /* red */ - ASIC3_GPIOC1_LED1, /* green */ - ASIC3_GPIOC2_LED2, /* blue */ - ASIC3_GPIOC4_CF_nCD, - ASIC3_GPIOC5_nCIOW, - ASIC3_GPIOC6_nCIOR, - ASIC3_GPIOC7_nPCE_1, - ASIC3_GPIOC8_nPCE_2, - ASIC3_GPIOC9_nPOE, - ASIC3_GPIOC10_nPWE, - ASIC3_GPIOC11_PSKTSEL, - ASIC3_GPIOC12_nPREG, - ASIC3_GPIOC13_nPWAIT, - ASIC3_GPIOC14_nPIOIS16, - ASIC3_GPIOC15_nPIOR, - - /* GPIOD: input GPIOs, CF */ - ASIC3_GPIOD11_nCIOIS16, - ASIC3_GPIOD12_nCWAIT, - ASIC3_GPIOD15_nPIOW, -}; - -static struct asic3_led asic3_leds[ASIC3_NUM_LEDS] = { - [0] = { - .name = "hx4700:amber", - .default_trigger = "ds2760-battery.0-charging-blink-full-solid", - }, - [1] = { - .name = "hx4700:green", - .default_trigger = "unused", - }, - [2] = { - .name = "hx4700:blue", - .default_trigger = "hx4700-radio", - }, -}; - -static struct resource asic3_resources[] = { - /* GPIO part */ - [0] = { - .start = ASIC3_PHYS, - .end = ASIC3_PHYS + ASIC3_MAP_SIZE_16BIT - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(GPIO12_HX4700_ASIC3_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO12_HX4700_ASIC3_IRQ), - .flags = IORESOURCE_IRQ, - }, - /* SD part */ - [2] = { - .start = ASIC3_SD_PHYS, - .end = ASIC3_SD_PHYS + ASIC3_MAP_SIZE_16BIT - 1, - .flags = IORESOURCE_MEM, - }, - [3] = { - .start = PXA_GPIO_TO_IRQ(GPIO66_HX4700_ASIC3_nSDIO_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO66_HX4700_ASIC3_nSDIO_IRQ), - .flags = IORESOURCE_IRQ, - }, -}; - -static struct asic3_platform_data asic3_platform_data = { - .gpio_config = asic3_gpio_config, - .gpio_config_num = ARRAY_SIZE(asic3_gpio_config), - .irq_base = IRQ_BOARD_START, - .gpio_base = HX4700_ASIC3_GPIO_BASE, - .leds = asic3_leds, -}; - -static struct platform_device asic3 = { - .name = "asic3", - .id = -1, - .resource = asic3_resources, - .num_resources = ARRAY_SIZE(asic3_resources), - .dev = { - .platform_data = &asic3_platform_data, - }, -}; - -/* - * EGPIO - */ - -static struct resource egpio_resources[] = { - [0] = { - .start = PXA_CS5_PHYS, - .end = PXA_CS5_PHYS + 0x4 - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct htc_egpio_chip egpio_chips[] = { - [0] = { - .reg_start = 0, - .gpio_base = HX4700_EGPIO_BASE, - .num_gpios = 8, - .direction = HTC_EGPIO_OUTPUT, - }, -}; - -static struct htc_egpio_platform_data egpio_info = { - .reg_width = 16, - .bus_width = 16, - .chip = egpio_chips, - .num_chips = ARRAY_SIZE(egpio_chips), -}; - -static struct platform_device egpio = { - .name = "htc-egpio", - .id = -1, - .resource = egpio_resources, - .num_resources = ARRAY_SIZE(egpio_resources), - .dev = { - .platform_data = &egpio_info, - }, -}; - -/* - * LCD - Sony display connected to ATI Imageon w3220 - */ - -static void sony_lcd_init(void) -{ - gpio_set_value(GPIO84_HX4700_LCD_SQN, 1); - gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 0); - gpio_set_value(GPIO111_HX4700_LCD_AVDD_3V3_ON, 0); - gpio_set_value(GPIO70_HX4700_LCD_SLIN1, 0); - gpio_set_value(GPIO62_HX4700_LCD_nRESET, 0); - mdelay(10); - gpio_set_value(GPIO59_HX4700_LCD_PC1, 0); - gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 0); - mdelay(20); - - gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 1); - mdelay(5); - gpio_set_value(GPIO111_HX4700_LCD_AVDD_3V3_ON, 1); - - /* FIXME: init w3220 registers here */ - - mdelay(5); - gpio_set_value(GPIO70_HX4700_LCD_SLIN1, 1); - mdelay(10); - gpio_set_value(GPIO62_HX4700_LCD_nRESET, 1); - mdelay(10); - gpio_set_value(GPIO59_HX4700_LCD_PC1, 1); - mdelay(10); - gpio_set_value(GPIO112_HX4700_LCD_N2V7_7V3_ON, 1); -} - -static void sony_lcd_off(void) -{ - gpio_set_value(GPIO59_HX4700_LCD_PC1, 0); - gpio_set_value(GPIO62_HX4700_LCD_nRESET, 0); - mdelay(10); - gpio_set_value(GPIO112_HX4700_LCD_N2V7_7V3_ON, 0); - mdelay(10); - gpio_set_value(GPIO111_HX4700_LCD_AVDD_3V3_ON, 0); - mdelay(10); - gpio_set_value(GPIO110_HX4700_LCD_LVDD_3V3_ON, 0); -} - -#ifdef CONFIG_PM -static void w3220_lcd_suspend(struct w100fb_par *wfb) -{ - sony_lcd_off(); -} - -static void w3220_lcd_resume(struct w100fb_par *wfb) -{ - sony_lcd_init(); -} -#else -#define w3220_lcd_resume NULL -#define w3220_lcd_suspend NULL -#endif - -static struct w100_tg_info w3220_tg_info = { - .suspend = w3220_lcd_suspend, - .resume = w3220_lcd_resume, -}; - -/* W3220_VGA QVGA */ -static struct w100_gen_regs w3220_regs = { - .lcd_format = 0x00000003, - .lcdd_cntl1 = 0x00000000, - .lcdd_cntl2 = 0x0003ffff, - .genlcd_cntl1 = 0x00abf003, /* 0x00fff003 */ - .genlcd_cntl2 = 0x00000003, - .genlcd_cntl3 = 0x000102aa, -}; - -static struct w100_mode w3220_modes[] = { -{ - .xres = 480, - .yres = 640, - .left_margin = 15, - .right_margin = 16, - .upper_margin = 8, - .lower_margin = 7, - .crtc_ss = 0x00000000, - .crtc_ls = 0xa1ff01f9, /* 0x21ff01f9 */ - .crtc_gs = 0xc0000000, /* 0x40000000 */ - .crtc_vpos_gs = 0x0000028f, - .crtc_ps1_active = 0x00000000, /* 0x41060010 */ - .crtc_rev = 0, - .crtc_dclk = 0x80000000, - .crtc_gclk = 0x040a0104, - .crtc_goe = 0, - .pll_freq = 95, - .pixclk_divider = 4, - .pixclk_divider_rotated = 4, - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .sysclk_src = CLK_SRC_PLL, -}, -{ - .xres = 240, - .yres = 320, - .left_margin = 9, - .right_margin = 8, - .upper_margin = 5, - .lower_margin = 4, - .crtc_ss = 0x80150014, - .crtc_ls = 0xa0fb00f7, - .crtc_gs = 0xc0080007, - .crtc_vpos_gs = 0x00080007, - .crtc_rev = 0x0000000a, - .crtc_dclk = 0x81700030, - .crtc_gclk = 0x8015010f, - .crtc_goe = 0x00000000, - .pll_freq = 95, - .pixclk_divider = 4, - .pixclk_divider_rotated = 4, - .pixclk_src = CLK_SRC_PLL, - .sysclk_divider = 0, - .sysclk_src = CLK_SRC_PLL, -}, -}; - -struct w100_mem_info w3220_mem_info = { - .ext_cntl = 0x09640011, - .sdram_mode_reg = 0x00600021, - .ext_timing_cntl = 0x1a001545, /* 0x15001545 */ - .io_cntl = 0x7ddd7333, - .size = 0x1fffff, -}; - -struct w100_bm_mem_info w3220_bm_mem_info = { - .ext_mem_bw = 0x50413e01, - .offset = 0, - .ext_timing_ctl = 0x00043f7f, - .ext_cntl = 0x00000010, - .mode_reg = 0x00250000, - .io_cntl = 0x0fff0000, - .config = 0x08301480, -}; - -static struct w100_gpio_regs w3220_gpio_info = { - .init_data1 = 0xdfe00100, /* GPIO_DATA */ - .gpio_dir1 = 0xffff0000, /* GPIO_CNTL1 */ - .gpio_oe1 = 0x00000000, /* GPIO_CNTL2 */ - .init_data2 = 0x00000000, /* GPIO_DATA2 */ - .gpio_dir2 = 0x00000000, /* GPIO_CNTL3 */ - .gpio_oe2 = 0x00000000, /* GPIO_CNTL4 */ -}; - -static struct w100fb_mach_info w3220_info = { - .tg = &w3220_tg_info, - .mem = &w3220_mem_info, - .bm_mem = &w3220_bm_mem_info, - .gpio = &w3220_gpio_info, - .regs = &w3220_regs, - .modelist = w3220_modes, - .num_modes = 2, - .xtal_freq = 16000000, -}; - -static struct resource w3220_resources[] = { - [0] = { - .start = ATI_W3220_PHYS, - .end = ATI_W3220_PHYS + 0x00ffffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device w3220 = { - .name = "w100fb", - .id = -1, - .dev = { - .platform_data = &w3220_info, - }, - .num_resources = ARRAY_SIZE(w3220_resources), - .resource = w3220_resources, -}; - -static void hx4700_lcd_set_power(struct plat_lcd_data *pd, unsigned int power) -{ - if (power) - sony_lcd_init(); - else - sony_lcd_off(); -} - -static struct plat_lcd_data hx4700_lcd_data = { - .set_power = hx4700_lcd_set_power, -}; - -static struct platform_device hx4700_lcd = { - .name = "platform-lcd", - .id = -1, - .dev = { - .platform_data = &hx4700_lcd_data, - .parent = &w3220.dev, - }, -}; - -/* - * Backlight - */ - -static struct platform_pwm_backlight_data backlight_data = { - .pwm_id = 1, - .max_brightness = 200, - .dft_brightness = 100, - .pwm_period_ns = 30923, -}; - -static struct platform_device backlight = { - .name = "pwm-backlight", - .id = -1, - .dev = { - .parent = &pxa27x_device_pwm1.dev, - .platform_data = &backlight_data, - }, -}; - -/* - * USB "Transceiver" - */ - -static struct gpio_vbus_mach_info gpio_vbus_info = { - .gpio_pullup = GPIO76_HX4700_USBC_PUEN, - .gpio_vbus = GPIOD14_nUSBC_DETECT, - .gpio_vbus_inverted = 1, -}; - -static struct platform_device gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &gpio_vbus_info, - }, -}; - -/* - * Touchscreen - TSC2046 connected to SSP2 - */ - -static const struct ads7846_platform_data tsc2046_info = { - .model = 7846, - .vref_delay_usecs = 100, - .pressure_max = 1024, - .debounce_max = 10, - .debounce_tol = 3, - .debounce_rep = 1, - .gpio_pendown = GPIO58_HX4700_TSC2046_nPENIRQ, -}; - -static struct pxa2xx_spi_chip tsc2046_chip = { - .tx_threshold = 1, - .rx_threshold = 2, - .timeout = 64, - .gpio_cs = GPIO88_HX4700_TSC2046_CS, -}; - -static struct spi_board_info tsc2046_board_info[] __initdata = { - { - .modalias = "ads7846", - .bus_num = 2, - .max_speed_hz = 2600000, /* 100 kHz sample rate */ - .irq = PXA_GPIO_TO_IRQ(GPIO58_HX4700_TSC2046_nPENIRQ), - .platform_data = &tsc2046_info, - .controller_data = &tsc2046_chip, - }, -}; - -static struct pxa2xx_spi_master pxa_ssp2_master_info = { - .num_chipselect = 1, - .clock_enable = CKEN_SSP2, - .enable_dma = 1, -}; - -/* - * External power - */ - -static int power_supply_init(struct device *dev) -{ - return gpio_request(GPIOD9_nAC_IN, "AC charger detect"); -} - -static int hx4700_is_ac_online(void) -{ - return !gpio_get_value(GPIOD9_nAC_IN); -} - -static void power_supply_exit(struct device *dev) -{ - gpio_free(GPIOD9_nAC_IN); -} - -static char *hx4700_supplicants[] = { - "ds2760-battery.0", "backup-battery" -}; - -static struct pda_power_pdata power_supply_info = { - .init = power_supply_init, - .is_ac_online = hx4700_is_ac_online, - .exit = power_supply_exit, - .supplied_to = hx4700_supplicants, - .num_supplicants = ARRAY_SIZE(hx4700_supplicants), -}; - -static struct resource power_supply_resources[] = { - [0] = { - .name = "ac", - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - .start = PXA_GPIO_TO_IRQ(GPIOD9_nAC_IN), - .end = PXA_GPIO_TO_IRQ(GPIOD9_nAC_IN), - }, - [1] = { - .name = "usb", - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - .start = PXA_GPIO_TO_IRQ(GPIOD14_nUSBC_DETECT), - .end = PXA_GPIO_TO_IRQ(GPIOD14_nUSBC_DETECT), - }, -}; - -static struct platform_device power_supply = { - .name = "pda-power", - .id = -1, - .dev = { - .platform_data = &power_supply_info, - }, - .resource = power_supply_resources, - .num_resources = ARRAY_SIZE(power_supply_resources), -}; - -/* - * Battery charger - */ - -static struct regulator_consumer_supply bq24022_consumers[] = { - { - .supply = "vbus_draw", - }, - { - .supply = "ac_draw", - }, -}; - -static struct regulator_init_data bq24022_init_data = { - .constraints = { - .max_uA = 500000, - .valid_ops_mask = REGULATOR_CHANGE_CURRENT|REGULATOR_CHANGE_STATUS, - }, - .num_consumer_supplies = ARRAY_SIZE(bq24022_consumers), - .consumer_supplies = bq24022_consumers, -}; - -static struct gpio bq24022_gpios[] = { - { GPIO96_HX4700_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" }, -}; - -static struct gpio_regulator_state bq24022_states[] = { - { .value = 100000, .gpios = (0 << 0) }, - { .value = 500000, .gpios = (1 << 0) }, -}; - -static struct gpio_regulator_config bq24022_info = { - .supply_name = "bq24022", - - .enable_gpio = GPIO72_HX4700_BQ24022_nCHARGE_EN, - .enable_high = 0, - .enabled_at_boot = 0, - - .gpios = bq24022_gpios, - .nr_gpios = ARRAY_SIZE(bq24022_gpios), - - .states = bq24022_states, - .nr_states = ARRAY_SIZE(bq24022_states), - - .type = REGULATOR_CURRENT, - .init_data = &bq24022_init_data, -}; - -static struct platform_device bq24022 = { - .name = "gpio-regulator", - .id = -1, - .dev = { - .platform_data = &bq24022_info, - }, -}; - -/* - * StrataFlash - */ - -static void hx4700_set_vpp(struct platform_device *pdev, int vpp) -{ - gpio_set_value(GPIO91_HX4700_FLASH_VPEN, vpp); -} - -static struct resource strataflash_resource[] = { - [0] = DEFINE_RES_MEM(PXA_CS0_PHYS, SZ_64M), - [1] = DEFINE_RES_MEM(PXA_CS0_PHYS + SZ_64M, SZ_64M), -}; - -static struct physmap_flash_data strataflash_data = { - .width = 4, - .set_vpp = hx4700_set_vpp, -}; - -static struct platform_device strataflash = { - .name = "physmap-flash", - .id = -1, - .resource = strataflash_resource, - .num_resources = ARRAY_SIZE(strataflash_resource), - .dev = { - .platform_data = &strataflash_data, - }, -}; - -/* - * Maxim MAX1587A on PI2C - */ - -static struct regulator_consumer_supply max1587a_consumer = { - .supply = "vcc_core", -}; - -static struct regulator_init_data max1587a_v3_info = { - .constraints = { - .name = "vcc_core range", - .min_uV = 900000, - .max_uV = 1705000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .num_consumer_supplies = 1, - .consumer_supplies = &max1587a_consumer, -}; - -static struct max1586_subdev_data max1587a_subdev = { - .name = "vcc_core", - .id = MAX1586_V3, - .platform_data = &max1587a_v3_info, -}; - -static struct max1586_platform_data max1587a_info = { - .num_subdevs = 1, - .subdevs = &max1587a_subdev, - .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ -}; - -static struct i2c_board_info __initdata pi2c_board_info[] = { - { - I2C_BOARD_INFO("max1586", 0x14), - .platform_data = &max1587a_info, - }, -}; - -/* - * Asahi Kasei AK4641 on I2C - */ - -static struct ak4641_platform_data ak4641_info = { - .gpio_power = GPIO27_HX4700_CODEC_ON, - .gpio_npdn = GPIO109_HX4700_CODEC_nPDN, -}; - -static struct i2c_board_info i2c_board_info[] __initdata = { - { - I2C_BOARD_INFO("ak4641", 0x12), - .platform_data = &ak4641_info, - }, -}; - -static struct platform_device audio = { - .name = "hx4700-audio", - .id = -1, -}; - - -/* - * Platform devices - */ - -static struct platform_device *devices[] __initdata = { - &asic3, - &gpio_keys, - &backlight, - &w3220, - &hx4700_lcd, - &egpio, - &bq24022, - &gpio_vbus, - &power_supply, - &strataflash, - &audio, -}; - -static struct gpio global_gpios[] = { - { GPIO12_HX4700_ASIC3_IRQ, GPIOF_IN, "ASIC3_IRQ" }, - { GPIO13_HX4700_W3220_IRQ, GPIOF_IN, "W3220_IRQ" }, - { GPIO14_HX4700_nWLAN_IRQ, GPIOF_IN, "WLAN_IRQ" }, - { GPIO59_HX4700_LCD_PC1, GPIOF_OUT_INIT_HIGH, "LCD_PC1" }, - { GPIO62_HX4700_LCD_nRESET, GPIOF_OUT_INIT_HIGH, "LCD_RESET" }, - { GPIO70_HX4700_LCD_SLIN1, GPIOF_OUT_INIT_HIGH, "LCD_SLIN1" }, - { GPIO84_HX4700_LCD_SQN, GPIOF_OUT_INIT_HIGH, "LCD_SQN" }, - { GPIO110_HX4700_LCD_LVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_LVDD" }, - { GPIO111_HX4700_LCD_AVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_AVDD" }, - { GPIO32_HX4700_RS232_ON, GPIOF_OUT_INIT_HIGH, "RS232_ON" }, - { GPIO71_HX4700_ASIC3_nRESET, GPIOF_OUT_INIT_HIGH, "ASIC3_nRESET" }, - { GPIO82_HX4700_EUART_RESET, GPIOF_OUT_INIT_HIGH, "EUART_RESET" }, -}; - -static void __init hx4700_init(void) -{ - int ret; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); - ret = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); - if (ret) - pr_err ("hx4700: Failed to request GPIOs.\n"); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_add_devices(devices, ARRAY_SIZE(devices)); - - pxa_set_ficp_info(&ficp_info); - pxa27x_set_i2c_power_info(NULL); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(i2c_board_info)); - i2c_register_board_info(1, ARRAY_AND_SIZE(pi2c_board_info)); - pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); - spi_register_board_info(ARRAY_AND_SIZE(tsc2046_board_info)); - - gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 0); - mdelay(10); - gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1); - mdelay(10); -} - -MACHINE_START(H4700, "HP iPAQ HX4700") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = HX4700_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = hx4700_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/icontrol.c b/ANDROID_3.4.5/arch/arm/mach-pxa/icontrol.c deleted file mode 100644 index 1d02eabc..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/icontrol.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/icontrol.c - * - * Support for the iControl and SafeTcam platforms from TMT Services - * using the Embedian MXM-8x10 Computer on Module - * - * Copyright (C) 2009 TMT Services & Supplies (Pty) Ltd. - * - * 2010-01-21 Hennie van der Merve <hvdmerwe@tmtservies.co.za> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa320.h> -#include <mach/mxm8x10.h> - -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/can/platform/mcp251x.h> - -#include "generic.h" - -#define ICONTROL_MCP251x_nCS1 (15) -#define ICONTROL_MCP251x_nCS2 (16) -#define ICONTROL_MCP251x_nCS3 (17) -#define ICONTROL_MCP251x_nCS4 (24) - -#define ICONTROL_MCP251x_nIRQ1 (74) -#define ICONTROL_MCP251x_nIRQ2 (75) -#define ICONTROL_MCP251x_nIRQ3 (76) -#define ICONTROL_MCP251x_nIRQ4 (77) - -static struct pxa2xx_spi_chip mcp251x_chip_info1 = { - .tx_threshold = 8, - .rx_threshold = 128, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = ICONTROL_MCP251x_nCS1 -}; - -static struct pxa2xx_spi_chip mcp251x_chip_info2 = { - .tx_threshold = 8, - .rx_threshold = 128, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = ICONTROL_MCP251x_nCS2 -}; - -static struct pxa2xx_spi_chip mcp251x_chip_info3 = { - .tx_threshold = 8, - .rx_threshold = 128, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = ICONTROL_MCP251x_nCS3 -}; - -static struct pxa2xx_spi_chip mcp251x_chip_info4 = { - .tx_threshold = 8, - .rx_threshold = 128, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = ICONTROL_MCP251x_nCS4 -}; - -static struct mcp251x_platform_data mcp251x_info = { - .oscillator_frequency = 16E6, - .board_specific_setup = NULL, - .power_enable = NULL, - .transceiver_enable = NULL -}; - -static struct spi_board_info mcp251x_board_info[] = { - { - .modalias = "mcp2515", - .max_speed_hz = 6500000, - .bus_num = 3, - .chip_select = 0, - .platform_data = &mcp251x_info, - .controller_data = &mcp251x_chip_info1, - .irq = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ1) - }, - { - .modalias = "mcp2515", - .max_speed_hz = 6500000, - .bus_num = 3, - .chip_select = 1, - .platform_data = &mcp251x_info, - .controller_data = &mcp251x_chip_info2, - .irq = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ2) - }, - { - .modalias = "mcp2515", - .max_speed_hz = 6500000, - .bus_num = 4, - .chip_select = 0, - .platform_data = &mcp251x_info, - .controller_data = &mcp251x_chip_info3, - .irq = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ3) - }, - { - .modalias = "mcp2515", - .max_speed_hz = 6500000, - .bus_num = 4, - .chip_select = 1, - .platform_data = &mcp251x_info, - .controller_data = &mcp251x_chip_info4, - .irq = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ4) - } -}; - -static struct pxa2xx_spi_master pxa_ssp3_spi_master_info = { - .clock_enable = CKEN_SSP3, - .num_chipselect = 2, - .enable_dma = 1 -}; - -static struct pxa2xx_spi_master pxa_ssp4_spi_master_info = { - .clock_enable = CKEN_SSP4, - .num_chipselect = 2, - .enable_dma = 1 -}; - -struct platform_device pxa_spi_ssp3 = { - .name = "pxa2xx-spi", - .id = 3, - .dev = { - .platform_data = &pxa_ssp3_spi_master_info, - } -}; - -struct platform_device pxa_spi_ssp4 = { - .name = "pxa2xx-spi", - .id = 4, - .dev = { - .platform_data = &pxa_ssp4_spi_master_info, - } -}; - -static struct platform_device *icontrol_spi_devices[] __initdata = { - &pxa_spi_ssp3, - &pxa_spi_ssp4, -}; - -static mfp_cfg_t mfp_can_cfg[] __initdata = { - /* CAN CS lines */ - GPIO15_GPIO, - GPIO16_GPIO, - GPIO17_GPIO, - GPIO24_GPIO, - - /* SPI (SSP3) lines */ - GPIO89_SSP3_SCLK, - GPIO91_SSP3_TXD, - GPIO92_SSP3_RXD, - - /* SPI (SSP4) lines */ - GPIO93_SSP4_SCLK, - GPIO95_SSP4_TXD, - GPIO96_SSP4_RXD, - - /* CAN nIRQ lines */ - GPIO74_GPIO | MFP_LPM_EDGE_RISE, - GPIO75_GPIO | MFP_LPM_EDGE_RISE, - GPIO76_GPIO | MFP_LPM_EDGE_RISE, - GPIO77_GPIO | MFP_LPM_EDGE_RISE -}; - -static void __init icontrol_can_init(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(mfp_can_cfg)); - platform_add_devices(ARRAY_AND_SIZE(icontrol_spi_devices)); - spi_register_board_info(ARRAY_AND_SIZE(mcp251x_board_info)); -} - -static void __init icontrol_init(void) -{ - mxm_8x10_barebones_init(); - mxm_8x10_usb_host_init(); - mxm_8x10_mmc_init(); - - icontrol_can_init(); -} - -MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = icontrol_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/idp.c b/ANDROID_3.4.5/arch/arm/mach-pxa/idp.c deleted file mode 100644 index 6ff466bd..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/idp.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/idp.c - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Copyright (c) 2001 Cliff Brake, Accelent Systems Inc. - * - * 2001-09-13: Cliff Brake <cbrake@accelent.com> - * Initial code - * - * 2005-02-15: Cliff Brake <cliff.brake@gmail.com> - * <http://www.vibren.com> <http://bec-systems.com> - * Updated for 2.6 kernel - * - */ - -#include <linux/init.h> -#include <linux/interrupt.h> -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/fb.h> - -#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> -#include <asm/mach/map.h> - -#include <mach/pxa25x.h> -#include <mach/idp.h> -#include <mach/pxafb.h> -#include <mach/bitfield.h> -#include <mach/mmc.h> - -#include "generic.h" -#include "devices.h" - -/* TODO: - * - add pxa2xx_audio_ops_t device structure - * - Ethernet interrupt - */ - -static unsigned long idp_pin_config[] __initdata = { - /* LCD */ - GPIOxx_LCD_DSTN_16BPP, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - - /* Ethernet */ - GPIO33_nCS_5, /* Ethernet CS */ - GPIO4_GPIO, /* Ethernet IRQ */ -}; - -static struct resource smc91x_resources[] = { - [0] = { - .start = (IDP_ETH_PHYS + 0x300), - .end = (IDP_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(4), - .end = PXA_GPIO_TO_IRQ(4), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, -}; - -static void idp_backlight_power(int on) -{ - if (on) { - IDP_CPLD_LCD |= (1<<1); - } else { - IDP_CPLD_LCD &= ~(1<<1); - } -} - -static void idp_vlcd(int on) -{ - if (on) { - IDP_CPLD_LCD |= (1<<2); - } else { - IDP_CPLD_LCD &= ~(1<<2); - } -} - -static void idp_lcd_power(int on, struct fb_var_screeninfo *var) -{ - if (on) { - IDP_CPLD_LCD |= (1<<0); - } else { - IDP_CPLD_LCD &= ~(1<<0); - } - - /* call idp_vlcd for now as core driver does not support - * both power and vlcd hooks. Note, this is not technically - * the correct sequence, but seems to work. Disclaimer: - * this may eventually damage the display. - */ - - idp_vlcd(on); -} - -static struct pxafb_mode_info sharp_lm8v31_mode = { - .pixclock = 270000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 1, - .left_margin = 3, - .right_margin = 3, - .vsync_len = 1, - .upper_margin = 0, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info sharp_lm8v31 = { - .modes = &sharp_lm8v31_mode, - .num_modes = 1, - .cmap_inverse = 0, - .cmap_static = 0, - .lcd_conn = LCD_COLOR_DSTN_16BPP | LCD_PCLK_EDGE_FALL | - LCD_AC_BIAS_FREQ(255), - .pxafb_backlight_power = &idp_backlight_power, - .pxafb_lcd_power = &idp_lcd_power -}; - -static struct pxamci_platform_data idp_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void __init idp_init(void) -{ - printk("idp_init()\n"); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(idp_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_device_register(&smc91x_device); - //platform_device_register(&mst_audio_device); - pxa_set_fb_info(NULL, &sharp_lm8v31); - pxa_set_mci_info(&idp_mci_platform_data); -} - -static struct map_desc idp_io_desc[] __initdata = { - { - .virtual = IDP_COREVOLT_VIRT, - .pfn = __phys_to_pfn(IDP_COREVOLT_PHYS), - .length = IDP_COREVOLT_SIZE, - .type = MT_DEVICE - }, { - .virtual = IDP_CPLD_VIRT, - .pfn = __phys_to_pfn(IDP_CPLD_PHYS), - .length = IDP_CPLD_SIZE, - .type = MT_DEVICE - } -}; - -static void __init idp_map_io(void) -{ - pxa25x_map_io(); - iotable_init(idp_io_desc, ARRAY_SIZE(idp_io_desc)); -} - - -MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") - /* Maintainer: Vibren Technologies */ - .map_io = idp_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = idp_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/addr-map.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/addr-map.h deleted file mode 100644 index bbf9df37..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/addr-map.h +++ /dev/null @@ -1,48 +0,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 - -/* - * 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/arcom-pcmcia.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/arcom-pcmcia.h deleted file mode 100644 index d428be4d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/arcom-pcmcia.h +++ /dev/null @@ -1,11 +0,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 diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/audio.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/audio.h deleted file mode 100644 index a3449e35..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/audio.h +++ /dev/null @@ -1,30 +0,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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/balloon3.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/balloon3.h deleted file mode 100644 index 954641e6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/balloon3.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 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 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef ASM_ARCH_BALLOON3_H -#define ASM_ARCH_BALLOON3_H - -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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/bitfield.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/bitfield.h deleted file mode 100644 index f1f0e338..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/bitfield.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * FILE bitfield.h - * - * Version 1.1 - * Author Copyright (c) Marc A. Viredaz, 1998 - * DEC Western Research Laboratory, Palo Alto, CA - * Date April 1998 (April 1997) - * System Advanced RISC Machine (ARM) - * Language C or ARM Assembly - * Purpose Definition of macros to operate on bit fields. - */ - - - -#ifndef __BITFIELD_H -#define __BITFIELD_H - -#ifndef __ASSEMBLY__ -#define UData(Data) ((unsigned long) (Data)) -#else -#define UData(Data) (Data) -#endif - - -/* - * MACRO: Fld - * - * Purpose - * The macro "Fld" encodes a bit field, given its size and its shift value - * with respect to bit 0. - * - * Note - * A more intuitive way to encode bit fields would have been to use their - * mask. However, extracting size and shift value information from a bit - * field's mask is cumbersome and might break the assembler (255-character - * line-size limit). - * - * Input - * Size Size of the bit field, in number of bits. - * Shft Shift value of the bit field with respect to bit 0. - * - * Output - * Fld Encoded bit field. - */ - -#define Fld(Size, Shft) (((Size) << 16) + (Shft)) - - -/* - * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit - * - * Purpose - * The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return - * the size, shift value, mask, aligned mask, and first bit of a - * bit field. - * - * Input - * Field Encoded bit field (using the macro "Fld"). - * - * Output - * FSize Size of the bit field, in number of bits. - * FShft Shift value of the bit field with respect to bit 0. - * FMsk Mask for the bit field. - * FAlnMsk Mask for the bit field, aligned on bit 0. - * F1stBit First bit of the bit field. - */ - -#define FSize(Field) ((Field) >> 16) -#define FShft(Field) ((Field) & 0x0000FFFF) -#define FMsk(Field) (((UData (1) << FSize (Field)) - 1) << FShft (Field)) -#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1) -#define F1stBit(Field) (UData (1) << FShft (Field)) - - -/* - * MACRO: FInsrt - * - * Purpose - * The macro "FInsrt" inserts a value into a bit field by shifting the - * former appropriately. - * - * Input - * Value Bit-field value. - * Field Encoded bit field (using the macro "Fld"). - * - * Output - * FInsrt Bit-field value positioned appropriately. - */ - -#define FInsrt(Value, Field) \ - (UData (Value) << FShft (Field)) - - -/* - * MACRO: FExtr - * - * Purpose - * The macro "FExtr" extracts the value of a bit field by masking and - * shifting it appropriately. - * - * Input - * Data Data containing the bit-field to be extracted. - * Field Encoded bit field (using the macro "Fld"). - * - * Output - * FExtr Bit-field value. - */ - -#define FExtr(Data, Field) \ - ((UData (Data) >> FShft (Field)) & FAlnMsk (Field)) - - -#endif /* __BITFIELD_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/camera.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/camera.h deleted file mode 100644 index 6709b1cd..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/camera.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - camera.h - PXA camera driver header file - - Copyright (C) 2003, Intel Corporation - Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __ASM_ARCH_CAMERA_H_ -#define __ASM_ARCH_CAMERA_H_ - -#define PXA_CAMERA_MASTER 1 -#define PXA_CAMERA_DATAWIDTH_4 2 -#define PXA_CAMERA_DATAWIDTH_5 4 -#define PXA_CAMERA_DATAWIDTH_8 8 -#define PXA_CAMERA_DATAWIDTH_9 0x10 -#define PXA_CAMERA_DATAWIDTH_10 0x20 -#define PXA_CAMERA_PCLK_EN 0x40 -#define PXA_CAMERA_MCLK_EN 0x80 -#define PXA_CAMERA_PCP 0x100 -#define PXA_CAMERA_HSP 0x200 -#define PXA_CAMERA_VSP 0x400 - -struct pxacamera_platform_data { - unsigned long flags; - unsigned long mclk_10khz; -}; - -extern void pxa_set_camera_info(struct pxacamera_platform_data *); - -#endif /* __ASM_ARCH_CAMERA_H_ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/colibri.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/colibri.h deleted file mode 100644 index cb4236e9..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/colibri.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef _COLIBRI_H_ -#define _COLIBRI_H_ - -#include <net/ax88796.h> -#include <mach/mfp.h> - -/* - * base board glue for PXA270 module - */ - -enum { - COLIBRI_EVALBOARD = 0, - COLIBRI_PXA270_INCOME, -}; - -#if defined(CONFIG_MACH_COLIBRI_EVALBOARD) -extern void colibri_evalboard_init(void); -#else -static inline void colibri_evalboard_init(void) {} -#endif - -#if defined(CONFIG_MACH_COLIBRI_PXA270_INCOME) -extern void colibri_pxa270_income_boardinit(void); -#else -static inline void colibri_pxa270_income_boardinit(void) {} -#endif - -/* - * common settings for all modules - */ - -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -extern void colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin); -#else -static inline void colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin) {} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -extern void colibri_pxa3xx_init_lcd(int bl_pin); -#else -static inline void colibri_pxa3xx_init_lcd(int bl_pin) {} -#endif - -#if defined(CONFIG_AX88796) -extern void colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data); -#endif - -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -extern void colibri_pxa3xx_init_nand(void); -#else -static inline void colibri_pxa3xx_init_nand(void) {} -#endif - -/* physical memory regions */ -#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */ - -/* GPIO definitions for Colibri PXA270 */ -#define GPIO114_COLIBRI_PXA270_ETH_IRQ 114 -#define GPIO0_COLIBRI_PXA270_SD_DETECT 0 -#define GPIO113_COLIBRI_PXA270_TS_IRQ 113 - -/* GPIO definitions for Colibri PXA300/310 */ -#define GPIO13_COLIBRI_PXA300_SD_DETECT 13 - -/* GPIO definitions for Colibri PXA320 */ -#define GPIO28_COLIBRI_PXA320_SD_DETECT 28 - -#endif /* _COLIBRI_H_ */ - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/corgi.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/corgi.h deleted file mode 100644 index f3c3493b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/corgi.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Hardware specific definitions for SL-C7xx series of PDAs - * - * Copyright (c) 2004-2005 Richard Purdie - * - * Based on Sharp's 2.4 kernel patches - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef __ASM_ARCH_CORGI_H -#define __ASM_ARCH_CORGI_H 1 - - -/* - * 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/csb726.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/csb726.h deleted file mode 100644 index 2628e7b7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/csb726.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Support for Cogent CSB726 - * - * Copyright (c) 2008 Dmitry Baryshkov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef CSB726_H -#define CSB726_H - -#define CSB726_GPIO_IRQ_LAN 52 -#define CSB726_GPIO_IRQ_SM501 53 -#define CSB726_GPIO_MMC_DETECT 100 -#define CSB726_GPIO_MMC_RO 101 - -#define CSB726_FLASH_SIZE (64 * 1024 * 1024) -#define CSB726_FLASH_uMON (8 * 1024 * 1024) - -#define CSB726_IRQ_LAN PXA_GPIO_TO_IRQ(CSB726_GPIO_IRQ_LAN) -#define CSB726_IRQ_SM501 PXA_GPIO_TO_IRQ(CSB726_GPIO_IRQ_SM501) - -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/debug-macro.S b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/debug-macro.S deleted file mode 100644 index 70b112e8..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/debug-macro.S +++ /dev/null @@ -1,23 +0,0 @@ -/* arch/arm/mach-pxa/include/mach/debug-macro.S - * - * Debugging macro include header - * - * Copyright (C) 1994-1999 Russell King - * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * -*/ - -#include "hardware.h" - - .macro addruart, rp, rv, tmp - mov \rp, #0x00100000 - orr \rv, \rp, #io_p2v(0x40000000) @ virtual - orr \rp, \rp, #0x40000000 @ physical - .endm - -#define UART_SHIFT 2 -#include <asm/hardware/debug-8250.S> diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/dma.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/dma.h deleted file mode 100644 index 5bd55894..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/dma.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/dma.h - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#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) - -#include <plat/dma.h> -#endif /* _ASM_ARCH_DMA_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-gpio.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-gpio.h deleted file mode 100644 index f3e55098..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-gpio.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * eseries-gpio.h - * - * Copyright (C) Ian Molton <spyro@f2s.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -/* 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-irq.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-irq.h deleted file mode 100644 index de292b26..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/eseries-irq.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * eseries-irq.h - * - * Copyright (C) Ian Molton <spyro@f2s.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#define ANGELX_IRQ_BASE (IRQ_BOARD_START+8) -#define IRQ_ANGELX(n) (ANGELX_IRQ_BASE + (n)) - -#define ANGELX_RDY0_IRQ IRQ_ANGELX(0) -#define ANGELX_ST0_IRQ IRQ_ANGELX(1) -#define ANGELX_CD0_IRQ IRQ_ANGELX(2) -#define ANGELX_RDY1_IRQ IRQ_ANGELX(3) -#define ANGELX_ST1_IRQ IRQ_ANGELX(4) -#define ANGELX_CD1_IRQ IRQ_ANGELX(5) - -#define TMIO_IRQ_BASE (IRQ_BOARD_START+0) -#define IRQ_TMIO(n) (TMIO_IRQ_BASE + (n)) - -#define TMIO_SD_IRQ IRQ_TMIO(1) -#define TMIO_USB_IRQ IRQ_TMIO(2) - -#define ESERIES_NR_IRQS (IRQ_BOARD_START + 16) diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gpio.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gpio.h deleted file mode 100644 index 0248e433..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gpio.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/gpio.h - * - * PXA GPIO wrappers for arch-neutral GPIO calls - * - * Written by Philipp Zabel <philipp.zabel@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef __ASM_ARCH_PXA_GPIO_H -#define __ASM_ARCH_PXA_GPIO_H - -#include <asm-generic/gpio.h> - -#include <mach/irqs.h> -#include <mach/hardware.h> - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gumstix.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gumstix.h deleted file mode 100644 index dba14b65..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/gumstix.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/gumstix.h - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - - -/* BTRESET - Reset line to Bluetooth module, active low signal. */ -#define GPIO_GUMSTIX_BTRESET 7 -#define GPIO_GUMSTIX_BTRESET_MD (GPIO_GUMSTIX_BTRESET | GPIO_OUT) - - -/* -GPIOn - Input from MAX823 (or equiv), normalizing USB +5V into a clean -interrupt signal for determining cable presence. On the gumstix F, -this moves to GPIO17 and GPIO37. */ - -/* GPIOx - Connects to USB D+ and used as a pull-up after GPIOn -has detected a cable insertion; driven low otherwise. */ - -#define GPIO_GUMSTIX_USB_GPIOn 35 -#define GPIO_GUMSTIX_USB_GPIOx 41 - -/* usb state change */ -#define GUMSTIX_USB_INTR_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_USB_GPIOn) - -#define GPIO_GUMSTIX_USB_GPIOn_MD (GPIO_GUMSTIX_USB_GPIOn | GPIO_IN) -#define GPIO_GUMSTIX_USB_GPIOx_CON_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_OUT) -#define GPIO_GUMSTIX_USB_GPIOx_DIS_MD (GPIO_GUMSTIX_USB_GPIOx | GPIO_IN) - -/* - * SD/MMC definitions - */ -#define GUMSTIX_GPIO_nSD_WP 22 /* SD Write Protect */ -#define GUMSTIX_GPIO_nSD_DETECT 11 /* MMC/SD Card Detect */ -#define GUMSTIX_IRQ_GPIO_nSD_DETECT PXA_GPIO_TO_IRQ(GUMSTIX_GPIO_nSD_DETECT) - -/* - * SMC Ethernet definitions - * ETH_RST provides a hardware reset line to the ethernet chip - * ETH is the IRQ line in from the ethernet chip to the PXA - */ -#define GPIO_GUMSTIX_ETH0_RST 80 -#define GPIO_GUMSTIX_ETH0_RST_MD (GPIO_GUMSTIX_ETH0_RST | GPIO_OUT) -#define GPIO_GUMSTIX_ETH1_RST 52 -#define GPIO_GUMSTIX_ETH1_RST_MD (GPIO_GUMSTIX_ETH1_RST | GPIO_OUT) - -#define GPIO_GUMSTIX_ETH0 36 -#define GPIO_GUMSTIX_ETH0_MD (GPIO_GUMSTIX_ETH0 | GPIO_IN) -#define GUMSTIX_ETH0_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH0) -#define GPIO_GUMSTIX_ETH1 27 -#define GPIO_GUMSTIX_ETH1_MD (GPIO_GUMSTIX_ETH1 | GPIO_IN) -#define GUMSTIX_ETH1_IRQ PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH1) - - -/* CF reset line */ -#define GPIO8_RESET 8 - -/* CF slot 0 */ -#define GPIO4_nBVD1 4 -#define GPIO4_nSTSCHG GPIO4_nBVD1 -#define GPIO11_nCD 11 -#define GPIO26_PRDY_nBSY 26 -#define GUMSTIX_S0_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO4_nSTSCHG) -#define GUMSTIX_S0_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO11_nCD) -#define GUMSTIX_S0_PRDY_nBSY_IRQ PXA_GPIO_TO_IRQ(GPIO26_PRDY_nBSY) - -/* CF slot 1 */ -#define GPIO18_nBVD1 18 -#define GPIO18_nSTSCHG GPIO18_nBVD1 -#define GPIO36_nCD 36 -#define GPIO27_PRDY_nBSY 27 -#define GUMSTIX_S1_nSTSCHG_IRQ PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG) -#define GUMSTIX_S1_nCD_IRQ PXA_GPIO_TO_IRQ(GPIO36_nCD) -#define GUMSTIX_S1_PRDY_nBSY_IRQ PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY) - -/* CF GPIO line modes */ -#define GPIO4_nSTSCHG_MD (GPIO4_nSTSCHG | GPIO_IN) -#define GPIO8_RESET_MD (GPIO8_RESET | GPIO_OUT) -#define GPIO11_nCD_MD (GPIO11_nCD | GPIO_IN) -#define GPIO18_nSTSCHG_MD (GPIO18_nSTSCHG | GPIO_IN) -#define GPIO26_PRDY_nBSY_MD (GPIO26_PRDY_nBSY | GPIO_IN) -#define GPIO27_PRDY_nBSY_MD (GPIO27_PRDY_nBSY | GPIO_IN) -#define GPIO36_nCD_MD (GPIO36_nCD | GPIO_IN) - -/* for expansion boards that can't be programatically detected */ -extern int am200_init(void); -extern int am300_init(void); - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/h5000.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/h5000.h deleted file mode 100644 index 2a5ae380..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/h5000.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Hardware definitions for HP iPAQ h5xxx Handheld Computers - * - * Copyright(20)02 Hewlett-Packard Company. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, - * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS - * FITNESS FOR ANY PARTICULAR PURPOSE. - * - * Author: Jamey Hicks - */ - -#ifndef __ASM_ARCH_H5000_H -#define __ASM_ARCH_H5000_H - -#include <mach/mfp-pxa25x.h> - -/* - * CPU GPIOs - */ - -#define H5000_GPIO_POWER_BUTTON (0) -#define H5000_GPIO_RESET_BUTTON_N (1) -#define H5000_GPIO_OPT_INT (2) -#define H5000_GPIO_BACKUP_POWER (3) -#define H5000_GPIO_ACTION_BUTTON (4) -#define H5000_GPIO_COM_DCD_SOMETHING (5) /* what is this really ? */ -/* 6 not connected */ -#define H5000_GPIO_RESET_BUTTON_AGAIN_N (7) /* connected to gpio 1 as well */ -/* 8 not connected */ -#define H5000_GPIO_RSO_N (9) /* reset output from max1702 which regulates 3.3 and 2.5 */ -#define H5000_GPIO_ASIC_INT_N (10) /* from companion asic */ -#define H5000_GPIO_BT_ENV_0 (11) /* to LMX9814, set to 1 according to regdump */ -/*(12) not connected */ -#define H5000_GPIO_BT_ENV_1 (13) /* to LMX9814, set to 1 according to regdump */ -#define H5000_GPIO_BT_WU (14) /* from LMX9814, Defined as HOST_WAKEUP in the LMX9820 data sheet */ -/*(15) is CS1# */ -/*(16) not connected */ -/*(17) not connected */ -/*(18) is pcmcia ready */ -/*(19) is dreq1 */ -/*(20) is dreq0 */ -#define H5000_GPIO_OE_RD_NWR (21) /* output enable on rd/nwr signal to companion asic */ -/*(22) is not connected */ -#define H5000_GPIO_OPT_SPI_CLK (23) /* to extension pack */ -#define H5000_GPIO_OPT_SPI_CS_N (24) /* to extension pack */ -#define H5000_GPIO_OPT_SPI_DOUT (25) /* to extension pack */ -#define H5000_GPIO_OPT_SPI_DIN (26) /* to extension pack */ -/*(27) not connected */ -#define H5000_GPIO_I2S_BITCLK (28) /* connected to AC97 codec */ -#define H5000_GPIO_I2S_DATAOUT (29) /* connected to AC97 codec */ -#define H5000_GPIO_I2S_DATAIN (30) /* connected to AC97 codec */ -#define H5000_GPIO_I2S_LRCLK (31) /* connected to AC97 codec */ -#define H5000_GPIO_I2S_SYSCLK (32) /* connected to AC97 codec */ -/*(33) is CS5# */ -#define H5000_GPIO_COM_RXD (34) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_CTS (35) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_DCD (36) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_DSR (37) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_RI (38) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_TXD (39) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_DTR (40) /* connected to cradle/cable connector */ -#define H5000_GPIO_COM_RTS (41) /* connected to cradle/cable connector */ - -#define H5000_GPIO_BT_RXD (42) /* connected to BT (LMX9814) */ -#define H5000_GPIO_BT_TXD (43) /* connected to BT (LMX9814) */ -#define H5000_GPIO_BT_CTS (44) /* connected to BT (LMX9814) */ -#define H5000_GPIO_BT_RTS (45) /* connected to BT (LMX9814) */ - -#define H5000_GPIO_IRDA_RXD (46) -#define H5000_GPIO_IRDA_TXD (47) - -#define H5000_GPIO_POE_N (48) /* used for pcmcia */ -#define H5000_GPIO_PWE_N (49) /* used for pcmcia */ -#define H5000_GPIO_PIOR_N (50) /* used for pcmcia */ -#define H5000_GPIO_PIOW_N (51) /* used for pcmcia */ -#define H5000_GPIO_PCE1_N (52) /* used for pcmcia */ -#define H5000_GPIO_PCE2_N (53) /* used for pcmcia */ -#define H5000_GPIO_PSKTSEL (54) /* used for pcmcia */ -#define H5000_GPIO_PREG_N (55) /* used for pcmcia */ -#define H5000_GPIO_PWAIT_N (56) /* used for pcmcia */ -#define H5000_GPIO_IOIS16_N (57) /* used for pcmcia */ - -#define H5000_GPIO_IRDA_SD (58) /* to hsdl3002 sd */ -/*(59) not connected */ -#define H5000_GPIO_POWER_SD_N (60) /* controls power to SD */ -#define H5000_GPIO_POWER_RS232_N (61) /* inverted FORCEON to rs232 transceiver */ -#define H5000_GPIO_POWER_ACCEL_N (62) /* controls power to accel */ -/*(63) is not connected */ -#define H5000_GPIO_OPT_NVRAM (64) /* controls power to expansion pack */ -#define H5000_GPIO_CHG_EN (65) /* to sc801 en */ -#define H5000_GPIO_USB_PULLUP (66) /* USB d+ pullup via 1.5K resistor */ -#define H5000_GPIO_BT_2V8_N (67) /* 2.8V used by bluetooth */ -#define H5000_GPIO_EXT_CHG_RATE (68) /* enables external charging rate */ -/*(69) is not connected */ -#define H5000_GPIO_CIR_RESET (70) /* consumer IR reset */ -#define H5000_GPIO_POWER_LIGHT_SENSOR_N (71) -#define H5000_GPIO_BT_M_RESET (72) -#define H5000_GPIO_STD_CHG_RATE (73) -#define H5000_GPIO_SD_WP_N (74) -#define H5000_GPIO_MOTOR_ON_N (75) /* external pullup on this */ -#define H5000_GPIO_HEADPHONE_DETECT (76) -#define H5000_GPIO_USB_CHG_RATE (77) /* select rate for charging via usb */ -/*(78) is CS2# */ -/*(79) is CS3# */ -/*(80) is CS4# */ - -#endif /* __ASM_ARCH_H5000_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hardware.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hardware.h deleted file mode 100644 index 56d92e5c..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hardware.h +++ /dev/null @@ -1,338 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/hardware.h - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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 0xff000000 -#define UNCACHED_ADDR UNCACHED_PHYS_0 - -/* - * 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 - -#ifdef CONFIG_CPU_PXA955 -#define __cpu_is_pxa955(id) \ - ({ \ - unsigned int _id = (id) >> 4 & 0xfff; \ - _id == 0x581 || _id == 0xc08 \ - || _id == 0xb76; \ - }) -#else -#define __cpu_is_pxa955(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()); \ - }) - -#define cpu_is_pxa955() \ - ({ \ - __cpu_is_pxa955(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 - -#ifdef CONFIG_PXA95x -#define __cpu_is_pxa95x(id) \ - ({ \ - __cpu_is_pxa955(id); \ - }) -#else -#define __cpu_is_pxa95x(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()); \ - }) - -#define cpu_is_pxa95x() \ - ({ \ - __cpu_is_pxa95x(read_cpuid_id()); \ - }) - -/* - * return current memory and LCD clock frequency in units of 10kHz - */ -extern unsigned int get_memclk_frequency_10khz(void); - -/* return the clock tick rate of the OS timer */ -extern unsigned long get_clock_tick_rate(void); -#endif - -#endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hx4700.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hx4700.h deleted file mode 100644 index 8bc02913..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/hx4700.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * GPIO and IRQ definitions for HP iPAQ hx4700 - * - * Copyright (c) 2008 Philipp Zabel - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _HX4700_H_ -#define _HX4700_H_ - -#include <linux/gpio.h> -#include <linux/mfd/asic3.h> - -#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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/idp.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/idp.h deleted file mode 100644 index 22a96f87..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/idp.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/idp.h - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Copyright (c) 2001 Cliff Brake, Accelent Systems Inc. - * - * 2001-09-13: Cliff Brake <cbrake@accelent.com> - * Initial code - * - * 2005-02-15: Cliff Brake <cliff.brake@gmail.com> - * <http://www.vibren.com> <http://bec-systems.com> - * Changes for 2.6 kernel. - */ - - -/* - * Note: this file must be safe to include in assembly files - * - * Support for the Vibren PXA255 IDP requires rev04 or later - * IDP hardware. - */ - - -#define IDP_FLASH_PHYS (PXA_CS0_PHYS) -#define IDP_ALT_FLASH_PHYS (PXA_CS1_PHYS) -#define IDP_MEDIAQ_PHYS (PXA_CS3_PHYS) -#define IDP_IDE_PHYS (PXA_CS5_PHYS + 0x03000000) -#define IDP_ETH_PHYS (PXA_CS5_PHYS + 0x03400000) -#define IDP_COREVOLT_PHYS (PXA_CS5_PHYS + 0x03800000) -#define IDP_CPLD_PHYS (PXA_CS5_PHYS + 0x03C00000) - - -/* - * virtual memory map - */ - -#define IDP_COREVOLT_VIRT (0xf0000000) -#define IDP_COREVOLT_SIZE (1*1024*1024) - -#define IDP_CPLD_VIRT (IDP_COREVOLT_VIRT + IDP_COREVOLT_SIZE) -#define IDP_CPLD_SIZE (1*1024*1024) - -#if (IDP_CPLD_VIRT + IDP_CPLD_SIZE) > 0xfc000000 -#error Your custom IO space is getting a bit large !! -#endif - -#define CPLD_P2V(x) ((x) - IDP_CPLD_PHYS + IDP_CPLD_VIRT) -#define CPLD_V2P(x) ((x) - IDP_CPLD_VIRT + IDP_CPLD_PHYS) - -#ifndef __ASSEMBLY__ -# define __CPLD_REG(x) (*((volatile unsigned long *)CPLD_P2V(x))) -#else -# define __CPLD_REG(x) CPLD_P2V(x) -#endif - -/* board level registers in the CPLD: (offsets from CPLD_VIRT) */ - -#define _IDP_CPLD_REV (IDP_CPLD_PHYS + 0x00) -#define _IDP_CPLD_PERIPH_PWR (IDP_CPLD_PHYS + 0x04) -#define _IDP_CPLD_LED_CONTROL (IDP_CPLD_PHYS + 0x08) -#define _IDP_CPLD_KB_COL_HIGH (IDP_CPLD_PHYS + 0x0C) -#define _IDP_CPLD_KB_COL_LOW (IDP_CPLD_PHYS + 0x10) -#define _IDP_CPLD_PCCARD_EN (IDP_CPLD_PHYS + 0x14) -#define _IDP_CPLD_GPIOH_DIR (IDP_CPLD_PHYS + 0x18) -#define _IDP_CPLD_GPIOH_VALUE (IDP_CPLD_PHYS + 0x1C) -#define _IDP_CPLD_GPIOL_DIR (IDP_CPLD_PHYS + 0x20) -#define _IDP_CPLD_GPIOL_VALUE (IDP_CPLD_PHYS + 0x24) -#define _IDP_CPLD_PCCARD_PWR (IDP_CPLD_PHYS + 0x28) -#define _IDP_CPLD_MISC_CTRL (IDP_CPLD_PHYS + 0x2C) -#define _IDP_CPLD_LCD (IDP_CPLD_PHYS + 0x30) -#define _IDP_CPLD_FLASH_WE (IDP_CPLD_PHYS + 0x34) - -#define _IDP_CPLD_KB_ROW (IDP_CPLD_PHYS + 0x50) -#define _IDP_CPLD_PCCARD0_STATUS (IDP_CPLD_PHYS + 0x54) -#define _IDP_CPLD_PCCARD1_STATUS (IDP_CPLD_PHYS + 0x58) -#define _IDP_CPLD_MISC_STATUS (IDP_CPLD_PHYS + 0x5C) - -/* FPGA register virtual addresses */ - -#define IDP_CPLD_REV __CPLD_REG(_IDP_CPLD_REV) -#define IDP_CPLD_PERIPH_PWR __CPLD_REG(_IDP_CPLD_PERIPH_PWR) -#define IDP_CPLD_LED_CONTROL __CPLD_REG(_IDP_CPLD_LED_CONTROL) -#define IDP_CPLD_KB_COL_HIGH __CPLD_REG(_IDP_CPLD_KB_COL_HIGH) -#define IDP_CPLD_KB_COL_LOW __CPLD_REG(_IDP_CPLD_KB_COL_LOW) -#define IDP_CPLD_PCCARD_EN __CPLD_REG(_IDP_CPLD_PCCARD_EN) -#define IDP_CPLD_GPIOH_DIR __CPLD_REG(_IDP_CPLD_GPIOH_DIR) -#define IDP_CPLD_GPIOH_VALUE __CPLD_REG(_IDP_CPLD_GPIOH_VALUE) -#define IDP_CPLD_GPIOL_DIR __CPLD_REG(_IDP_CPLD_GPIOL_DIR) -#define IDP_CPLD_GPIOL_VALUE __CPLD_REG(_IDP_CPLD_GPIOL_VALUE) -#define IDP_CPLD_PCCARD_PWR __CPLD_REG(_IDP_CPLD_PCCARD_PWR) -#define IDP_CPLD_MISC_CTRL __CPLD_REG(_IDP_CPLD_MISC_CTRL) -#define IDP_CPLD_LCD __CPLD_REG(_IDP_CPLD_LCD) -#define IDP_CPLD_FLASH_WE __CPLD_REG(_IDP_CPLD_FLASH_WE) - -#define IDP_CPLD_KB_ROW __CPLD_REG(_IDP_CPLD_KB_ROW) -#define IDP_CPLD_PCCARD0_STATUS __CPLD_REG(_IDP_CPLD_PCCARD0_STATUS) -#define IDP_CPLD_PCCARD1_STATUS __CPLD_REG(_IDP_CPLD_PCCARD1_STATUS) -#define IDP_CPLD_MISC_STATUS __CPLD_REG(_IDP_CPLD_MISC_STATUS) - - -/* - * Bit masks for various registers - */ - -// IDP_CPLD_PCCARD_PWR -#define PCC0_PWR0 (1 << 0) -#define PCC0_PWR1 (1 << 1) -#define PCC0_PWR2 (1 << 2) -#define PCC0_PWR3 (1 << 3) -#define PCC1_PWR0 (1 << 4) -#define PCC1_PWR1 (1 << 5) -#define PCC1_PWR2 (1 << 6) -#define PCC1_PWR3 (1 << 7) - -// IDP_CPLD_PCCARD_EN -#define PCC0_RESET (1 << 6) -#define PCC1_RESET (1 << 7) -#define PCC0_ENABLE (1 << 0) -#define PCC1_ENABLE (1 << 1) - -// IDP_CPLD_PCCARDx_STATUS -#define _PCC_WRPROT (1 << 7) // 7-4 read as low true -#define _PCC_RESET (1 << 6) -#define _PCC_IRQ (1 << 5) -#define _PCC_INPACK (1 << 4) -#define PCC_BVD2 (1 << 3) -#define PCC_BVD1 (1 << 2) -#define PCC_VS2 (1 << 1) -#define PCC_VS1 (1 << 0) - -/* A listing of interrupts used by external hardware devices */ - -#define TOUCH_PANEL_IRQ PXA_GPIO_TO_IRQ(5) -#define IDE_IRQ PXA_GPIO_TO_IRQ(21) - -#define TOUCH_PANEL_IRQ_EDGE IRQ_TYPE_EDGE_FALLING - -#define ETHERNET_IRQ PXA_GPIO_TO_IRQ(4) -#define ETHERNET_IRQ_EDGE IRQ_TYPE_EDGE_RISING - -#define IDE_IRQ_EDGE IRQ_TYPE_EDGE_RISING - -#define PCMCIA_S0_CD_VALID PXA_GPIO_TO_IRQ(7) -#define PCMCIA_S0_CD_VALID_EDGE IRQ_TYPE_EDGE_BOTH - -#define PCMCIA_S1_CD_VALID PXA_GPIO_TO_IRQ(8) -#define PCMCIA_S1_CD_VALID_EDGE IRQ_TYPE_EDGE_BOTH - -#define PCMCIA_S0_RDYINT PXA_GPIO_TO_IRQ(19) -#define PCMCIA_S1_RDYINT PXA_GPIO_TO_IRQ(22) - - -/* - * Macros for LED Driver - */ - -/* leds 0 = ON */ -#define IDP_HB_LED (1<<5) -#define IDP_BUSY_LED (1<<6) - -#define IDP_LEDS_MASK (IDP_HB_LED | IDP_BUSY_LED) - -/* - * macros for MTD driver - */ - -#define FLASH_WRITE_PROTECT_DISABLE() ((IDP_CPLD_FLASH_WE) &= ~(0x1)) -#define FLASH_WRITE_PROTECT_ENABLE() ((IDP_CPLD_FLASH_WE) |= (0x1)) - -/* - * macros for matrix keyboard driver - */ - -#define KEYBD_MATRIX_NUMBER_INPUTS 7 -#define KEYBD_MATRIX_NUMBER_OUTPUTS 14 - -#define KEYBD_MATRIX_INVERT_OUTPUT_LOGIC FALSE -#define KEYBD_MATRIX_INVERT_INPUT_LOGIC FALSE - -#define KEYBD_MATRIX_SETTLING_TIME_US 100 -#define KEYBD_MATRIX_KEYSTATE_DEBOUNCE_CONSTANT 2 - -#define KEYBD_MATRIX_SET_OUTPUTS(outputs) \ -{\ - IDP_CPLD_KB_COL_LOW = outputs;\ - IDP_CPLD_KB_COL_HIGH = outputs >> 7;\ -} - -#define KEYBD_MATRIX_GET_INPUTS(inputs) \ -{\ - inputs = (IDP_CPLD_KB_ROW & 0x7f);\ -} - - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/io.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/io.h deleted file mode 100644 index cd78b7fe..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/io.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/io.h - * - * Copied from asm/arch/sa1100/io.h - */ -#ifndef __ASM_ARM_ARCH_IO_H -#define __ASM_ARM_ARCH_IO_H - -#define IO_SPACE_LIMIT 0xffffffff - -/* - * We don't actually have real ISA nor PCI buses, but there is so many - * drivers out there that might just work if we fake them... - */ -#define __io(a) __typesafe_io(a) - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irda.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irda.h deleted file mode 100644 index 3cd41f77..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irda.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef ASMARM_ARCH_IRDA_H -#define ASMARM_ARCH_IRDA_H - -/* board specific transceiver capabilities */ - -#define IR_OFF 1 -#define IR_SIRMODE 2 -#define IR_FIRMODE 4 - -struct pxaficp_platform_data { - int transceiver_cap; - void (*transceiver_mode)(struct device *dev, int mode); - int (*startup)(struct device *dev); - void (*shutdown)(struct device *dev); - int gpio_pwdown; /* powerdown GPIO for the IrDA chip */ - bool gpio_pwdown_inverted; /* gpio_pwdown is inverted */ -}; - -extern void pxa_set_ficp_info(struct pxaficp_platform_data *info); - -#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) -void pxa2xx_transceiver_mode(struct device *dev, int mode); -#endif - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irqs.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irqs.h deleted file mode 100644 index 8765782d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/irqs.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/irqs.h - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#ifndef __ASM_MACH_IRQS_H -#define __ASM_MACH_IRQS_H - -#ifdef CONFIG_PXA_HAVE_ISA_IRQS -#define PXA_ISA_IRQ(x) (x) -#define PXA_ISA_IRQ_NUM (16) -#else -#define PXA_ISA_IRQ_NUM (0) -#endif - -#define PXA_IRQ(x) (PXA_ISA_IRQ_NUM + (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_PXA955_MMC3 PXA_IRQ(75) /* MMC3 Controller (PXA955) */ -#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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/littleton.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/littleton.h deleted file mode 100644 index 8066be54..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/littleton.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef __ASM_ARCH_LITTLETON_H -#define __ASM_ARCH_LITTLETON_H - -#define LITTLETON_ETH_PHYS 0x30000000 - -#define LITTLETON_GPIO_LCD_CS (17) - -#define EXT0_GPIO_BASE (PXA_NR_BUILTIN_GPIO) -#define EXT0_GPIO(x) (EXT0_GPIO_BASE + (x)) - -#define LITTLETON_NR_IRQS (IRQ_BOARD_START + 8) - -#endif /* __ASM_ARCH_LITTLETON_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lpd270.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lpd270.h deleted file mode 100644 index 4edc712a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lpd270.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/lpd270.h - * - * Author: Lennert Buytenhek - * Created: Feb 10, 2006 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_LPD270_H -#define __ASM_ARCH_LPD270_H - -#define LPD270_CPLD_PHYS PXA_CS2_PHYS -#define LPD270_CPLD_VIRT IOMEM(0xf0000000) -#define LPD270_CPLD_SIZE 0x00100000 - -#define LPD270_ETH_PHYS (PXA_CS2_PHYS + 0x01000000) - -/* CPLD registers */ -#define LPD270_CPLD_REG(x) (LPD270_CPLD_VIRT + (x)) -#define LPD270_CONTROL LPD270_CPLD_REG(0x00) -#define LPD270_PERIPHERAL0 LPD270_CPLD_REG(0x04) -#define LPD270_PERIPHERAL1 LPD270_CPLD_REG(0x08) -#define LPD270_CPLD_REVISION LPD270_CPLD_REG(0x14) -#define LPD270_EEPROM_SPI_ITF LPD270_CPLD_REG(0x20) -#define LPD270_MODE_PINS LPD270_CPLD_REG(0x24) -#define LPD270_EGPIO LPD270_CPLD_REG(0x30) -#define LPD270_INT_MASK LPD270_CPLD_REG(0x40) -#define LPD270_INT_STATUS LPD270_CPLD_REG(0x50) - -#define LPD270_INT_AC97 (1 << 4) /* AC'97 CODEC IRQ */ -#define LPD270_INT_ETHERNET (1 << 3) /* Ethernet controller IRQ */ -#define LPD270_INT_USBC (1 << 2) /* USB client cable detection IRQ */ - -#define LPD270_IRQ(x) (IRQ_BOARD_START + (x)) -#define LPD270_USBC_IRQ LPD270_IRQ(2) -#define LPD270_ETHERNET_IRQ LPD270_IRQ(3) -#define LPD270_AC97_IRQ LPD270_IRQ(4) -#define LPD270_NR_IRQS (IRQ_BOARD_START + 5) - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lubbock.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lubbock.h deleted file mode 100644 index 2a086e83..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/lubbock.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/lubbock.h - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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_IRQ(x) (IRQ_BOARD_START + (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 (IRQ_BOARD_START + 16) -#define LUBBOCK_NR_IRQS (IRQ_BOARD_START + 16 + 55) - -#ifndef __ASSEMBLY__ -extern void lubbock_set_misc_wr(unsigned int mask, unsigned int set); -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/magician.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/magician.h deleted file mode 100644 index ba6a6e1d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/magician.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * GPIO and IRQ definitions for HTC Magician PDA phones - * - * Copyright (c) 2007 Philipp Zabel - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#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 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_POWER_1 104 -#define GPIO105_MAGICIAN_LCD_POWER_2 105 -#define GPIO106_MAGICIAN_LCD_POWER_3 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_UNKNOWN_WAVEDEV_DLL 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_GSM_POWER MAGICIAN_EGPIO(2, 7) - -/* input */ - -#define EGPIO_MAGICIAN_CABLE_STATE_AC MAGICIAN_EGPIO(4, 0) -#define EGPIO_MAGICIAN_CABLE_STATE_USB 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) - -#endif /* _MAGICIAN_H_ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mainstone.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mainstone.h deleted file mode 100644 index 1bfc4e82..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mainstone.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/mainstone.h - * - * Author: Nicolas Pitre - * Created: Nov 14, 2002 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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 */ - -/* board specific IRQs */ -#define MAINSTONE_IRQ(x) (IRQ_BOARD_START + (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) - -#define MAINSTONE_NR_IRQS (IRQ_BOARD_START + 16) - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h deleted file mode 100644 index cafadc33..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h +++ /dev/null @@ -1,225 +0,0 @@ -#ifndef __ASM_ARCH_MFP_PXA25X_H -#define __ASM_ARCH_MFP_PXA25X_H - -#include <mach/mfp-pxa2xx.h> - -/* GPIO */ -#define GPIO2_GPIO MFP_CFG_IN(GPIO2, AF0) -#define GPIO3_GPIO MFP_CFG_IN(GPIO3, AF0) -#define GPIO4_GPIO MFP_CFG_IN(GPIO4, AF0) -#define GPIO5_GPIO MFP_CFG_IN(GPIO5, AF0) -#define GPIO6_GPIO MFP_CFG_IN(GPIO6, AF0) -#define GPIO7_GPIO MFP_CFG_IN(GPIO7, AF0) -#define GPIO8_GPIO MFP_CFG_IN(GPIO8, AF0) - -#define GPIO1_RST MFP_CFG_IN(GPIO1, AF1) - -/* Crystal and Clock Signals */ -#define GPIO10_RTCCLK MFP_CFG_OUT(GPIO10, AF1, DRIVE_LOW) -#define GPIO70_RTCCLK MFP_CFG_OUT(GPIO70, AF1, DRIVE_LOW) -#define GPIO7_48MHz MFP_CFG_OUT(GPIO7, AF1, DRIVE_LOW) -#define GPIO11_3_6MHz MFP_CFG_OUT(GPIO11, AF1, DRIVE_LOW) -#define GPIO71_3_6MHz MFP_CFG_OUT(GPIO71, AF1, DRIVE_LOW) -#define GPIO12_32KHz MFP_CFG_OUT(GPIO12, AF1, DRIVE_LOW) -#define GPIO72_32kHz MFP_CFG_OUT(GPIO72, AF1, DRIVE_LOW) - -/* SDRAM and Static Memory I/O Signals */ -#define GPIO15_nCS_1 MFP_CFG_OUT(GPIO15, AF2, DRIVE_HIGH) -#define GPIO78_nCS_2 MFP_CFG_OUT(GPIO78, AF2, DRIVE_HIGH) -#define GPIO79_nCS_3 MFP_CFG_OUT(GPIO79, AF2, DRIVE_HIGH) -#define GPIO80_nCS_4 MFP_CFG_OUT(GPIO80, AF2, DRIVE_HIGH) -#define GPIO33_nCS_5 MFP_CFG_OUT(GPIO33, AF2, DRIVE_HIGH) - -/* Miscellaneous I/O and DMA Signals */ -#define GPIO18_RDY MFP_CFG_IN(GPIO18, AF1) -#define GPIO20_DREQ_0 MFP_CFG_IN(GPIO20, AF1) -#define GPIO19_DREQ_1 MFP_CFG_IN(GPIO19, AF1) - -/* Alternate Bus Master Mode I/O Signals */ -#define GPIO13_MBGNT MFP_CFG_OUT(GPIO13, AF2, DRIVE_LOW) -#define GPIO73_MBGNT MFP_CFG_OUT(GPIO73, AF1, DRIVE_LOW) -#define GPIO14_MBREQ MFP_CFG_IN(GPIO14, AF1) -#define GPIO66_MBREQ MFP_CFG_IN(GPIO66, AF1) - -/* PC CARD */ -#define GPIO52_nPCE_1 MFP_CFG_OUT(GPIO52, AF2, DRIVE_HIGH) -#define GPIO53_nPCE_2 MFP_CFG_OUT(GPIO53, AF2, DRIVE_HIGH) -#define GPIO55_nPREG MFP_CFG_OUT(GPIO55, AF2, DRIVE_HIGH) -#define GPIO50_nPIOR MFP_CFG_OUT(GPIO50, AF2, DRIVE_HIGH) -#define GPIO51_nPIOW MFP_CFG_OUT(GPIO51, AF2, DRIVE_HIGH) -#define GPIO49_nPWE MFP_CFG_OUT(GPIO49, AF2, DRIVE_HIGH) -#define GPIO48_nPOE MFP_CFG_OUT(GPIO48, AF2, DRIVE_HIGH) -#define GPIO57_nIOIS16 MFP_CFG_IN(GPIO57, AF1) -#define GPIO56_nPWAIT MFP_CFG_IN(GPIO56, AF1) -#define GPIO54_nPSKTSEL MFP_CFG_OUT(GPIO54, AF2, DRIVE_HIGH) - -/* FFUART */ -#define GPIO34_FFUART_RXD MFP_CFG_IN(GPIO34, AF1) -#define GPIO35_FFUART_CTS MFP_CFG_IN(GPIO35, AF1) -#define GPIO36_FFUART_DCD MFP_CFG_IN(GPIO36, AF1) -#define GPIO37_FFUART_DSR MFP_CFG_IN(GPIO37, AF1) -#define GPIO38_FFUART_RI MFP_CFG_IN(GPIO38, AF1) -#define GPIO39_FFUART_TXD MFP_CFG_OUT(GPIO39, AF2, DRIVE_HIGH) -#define GPIO40_FFUART_DTR MFP_CFG_OUT(GPIO40, AF2, DRIVE_HIGH) -#define GPIO41_FFUART_RTS MFP_CFG_OUT(GPIO41, AF2, DRIVE_HIGH) - -/* BTUART */ -#define GPIO42_BTUART_RXD MFP_CFG_IN(GPIO42, AF1) -#define GPIO43_BTUART_TXD MFP_CFG_OUT(GPIO43, AF2, DRIVE_HIGH) -#define GPIO44_BTUART_CTS MFP_CFG_IN(GPIO44, AF1) -#define GPIO45_BTUART_RTS MFP_CFG_OUT(GPIO45, AF2, DRIVE_HIGH) - -/* STUART */ -#define GPIO46_STUART_RXD MFP_CFG_IN(GPIO46, AF2) -#define GPIO47_STUART_TXD MFP_CFG_OUT(GPIO47, AF1, DRIVE_HIGH) - -/* HWUART */ -#define GPIO42_HWUART_RXD MFP_CFG_IN(GPIO42, AF3) -#define GPIO43_HWUART_TXD MFP_CFG_OUT(GPIO43, AF3, DRIVE_HIGH) -#define GPIO44_HWUART_CTS MFP_CFG_IN(GPIO44, AF3) -#define GPIO45_HWUART_RTS MFP_CFG_OUT(GPIO45, AF3, DRIVE_HIGH) -#define GPIO48_HWUART_TXD MFP_CFG_OUT(GPIO48, AF1, DRIVE_HIGH) -#define GPIO49_HWUART_RXD MFP_CFG_IN(GPIO49, AF1) -#define GPIO50_HWUART_CTS MFP_CFG_IN(GPIO50, AF1) -#define GPIO51_HWUART_RTS MFP_CFG_OUT(GPIO51, AF1, DRIVE_HIGH) - -/* FICP */ -#define GPIO46_FICP_RXD MFP_CFG_IN(GPIO46, AF1) -#define GPIO47_FICP_TXD MFP_CFG_OUT(GPIO47, AF2, DRIVE_HIGH) - -/* PWM 0/1 */ -#define GPIO16_PWM0_OUT MFP_CFG_OUT(GPIO16, AF2, DRIVE_LOW) -#define GPIO17_PWM1_OUT MFP_CFG_OUT(GPIO17, AF2, DRIVE_LOW) - -/* AC97 */ -#define GPIO28_AC97_BITCLK MFP_CFG_IN(GPIO28, AF1) -#define GPIO29_AC97_SDATA_IN_0 MFP_CFG_IN(GPIO29, AF1) -#define GPIO30_AC97_SDATA_OUT MFP_CFG_OUT(GPIO30, AF2, DRIVE_LOW) -#define GPIO31_AC97_SYNC MFP_CFG_OUT(GPIO31, AF2, DRIVE_LOW) -#define GPIO32_AC97_SDATA_IN_1 MFP_CFG_IN(GPIO32, AF1) - -/* I2S */ -#define GPIO28_I2S_BITCLK_IN MFP_CFG_IN(GPIO28, AF2) -#define GPIO28_I2S_BITCLK_OUT MFP_CFG_OUT(GPIO28, AF1, DRIVE_LOW) -#define GPIO29_I2S_SDATA_IN MFP_CFG_IN(GPIO29, AF2) -#define GPIO30_I2S_SDATA_OUT MFP_CFG_OUT(GPIO30, AF1, DRIVE_LOW) -#define GPIO31_I2S_SYNC MFP_CFG_OUT(GPIO31, AF1, DRIVE_LOW) -#define GPIO32_I2S_SYSCLK MFP_CFG_OUT(GPIO32, AF1, DRIVE_LOW) - -/* SSP 1 */ -#define GPIO23_SSP1_SCLK MFP_CFG_OUT(GPIO23, AF2, DRIVE_LOW) -#define GPIO24_SSP1_SFRM MFP_CFG_OUT(GPIO24, AF2, DRIVE_LOW) -#define GPIO25_SSP1_TXD MFP_CFG_OUT(GPIO25, AF2, DRIVE_LOW) -#define GPIO26_SSP1_RXD MFP_CFG_IN(GPIO26, AF1) -#define GPIO27_SSP1_EXTCLK MFP_CFG_IN(GPIO27, AF1) - -/* SSP 2 - NSSP */ -#define GPIO81_SSP2_CLK_OUT MFP_CFG_OUT(GPIO81, AF1, DRIVE_LOW) -#define GPIO81_SSP2_CLK_IN MFP_CFG_IN(GPIO81, AF1) -#define GPIO82_SSP2_FRM_OUT MFP_CFG_OUT(GPIO82, AF1, DRIVE_LOW) -#define GPIO82_SSP2_FRM_IN MFP_CFG_IN(GPIO82, AF1) -#define GPIO83_SSP2_TXD MFP_CFG_OUT(GPIO83, AF1, DRIVE_LOW) -#define GPIO83_SSP2_RXD MFP_CFG_IN(GPIO83, AF2) -#define GPIO84_SSP2_TXD MFP_CFG_OUT(GPIO84, AF1, DRIVE_LOW) -#define GPIO84_SSP2_RXD MFP_CFG_IN(GPIO84, AF2) - -/* MMC */ -#define GPIO6_MMC_CLK MFP_CFG_OUT(GPIO6, AF1, DRIVE_LOW) -#define GPIO8_MMC_CS0 MFP_CFG_OUT(GPIO8, AF1, DRIVE_LOW) -#define GPIO9_MMC_CS1 MFP_CFG_OUT(GPIO9, AF1, DRIVE_LOW) -#define GPIO34_MMC_CS0 MFP_CFG_OUT(GPIO34, AF2, DRIVE_LOW) -#define GPIO39_MMC_CS1 MFP_CFG_OUT(GPIO39, AF1, DRIVE_LOW) -#define GPIO53_MMC_CLK MFP_CFG_OUT(GPIO53, AF1, DRIVE_LOW) -#define GPIO54_MMC_CLK MFP_CFG_OUT(GPIO54, AF1, DRIVE_LOW) -#define GPIO69_MMC_CLK MFP_CFG_OUT(GPIO69, AF1, DRIVE_LOW) -#define GPIO67_MMC_CS0 MFP_CFG_OUT(GPIO67, AF1, DRIVE_LOW) -#define GPIO68_MMC_CS1 MFP_CFG_OUT(GPIO68, AF1, DRIVE_LOW) - -/* LCD */ -#define GPIO58_LCD_LDD_0 MFP_CFG_OUT(GPIO58, AF2, DRIVE_LOW) -#define GPIO59_LCD_LDD_1 MFP_CFG_OUT(GPIO59, AF2, DRIVE_LOW) -#define GPIO60_LCD_LDD_2 MFP_CFG_OUT(GPIO60, AF2, DRIVE_LOW) -#define GPIO61_LCD_LDD_3 MFP_CFG_OUT(GPIO61, AF2, DRIVE_LOW) -#define GPIO62_LCD_LDD_4 MFP_CFG_OUT(GPIO62, AF2, DRIVE_LOW) -#define GPIO63_LCD_LDD_5 MFP_CFG_OUT(GPIO63, AF2, DRIVE_LOW) -#define GPIO64_LCD_LDD_6 MFP_CFG_OUT(GPIO64, AF2, DRIVE_LOW) -#define GPIO65_LCD_LDD_7 MFP_CFG_OUT(GPIO65, AF2, DRIVE_LOW) -#define GPIO66_LCD_LDD_8 MFP_CFG_OUT(GPIO66, AF2, DRIVE_LOW) -#define GPIO67_LCD_LDD_9 MFP_CFG_OUT(GPIO67, AF2, DRIVE_LOW) -#define GPIO68_LCD_LDD_10 MFP_CFG_OUT(GPIO68, AF2, DRIVE_LOW) -#define GPIO69_LCD_LDD_11 MFP_CFG_OUT(GPIO69, AF2, DRIVE_LOW) -#define GPIO70_LCD_LDD_12 MFP_CFG_OUT(GPIO70, AF2, DRIVE_LOW) -#define GPIO71_LCD_LDD_13 MFP_CFG_OUT(GPIO71, AF2, DRIVE_LOW) -#define GPIO72_LCD_LDD_14 MFP_CFG_OUT(GPIO72, AF2, DRIVE_LOW) -#define GPIO73_LCD_LDD_15 MFP_CFG_OUT(GPIO73, AF2, DRIVE_LOW) -#define GPIO74_LCD_FCLK MFP_CFG_OUT(GPIO74, AF2, DRIVE_LOW) -#define GPIO75_LCD_LCLK MFP_CFG_OUT(GPIO75, AF2, DRIVE_LOW) -#define GPIO76_LCD_PCLK MFP_CFG_OUT(GPIO76, AF2, DRIVE_LOW) -#define GPIO77_LCD_BIAS MFP_CFG_OUT(GPIO77, AF2, DRIVE_LOW) - -#ifdef CONFIG_CPU_PXA26x -/* GPIO */ -#define GPIO85_GPIO MFP_CFG_IN(GPIO85, AF0) -#define GPIO86_GPIO MFP_CFG_IN(GPIO86, AF1) -#define GPIO87_GPIO MFP_CFG_IN(GPIO87, AF1) -#define GPIO88_GPIO MFP_CFG_IN(GPIO88, AF1) -#define GPIO89_GPIO MFP_CFG_IN(GPIO89, AF1) - -/* SDRAM */ -#define GPIO86_nSDCS2 MFP_CFG_OUT(GPIO86, AF0, DRIVE_HIGH) -#define GPIO87_nSDCS3 MFP_CFG_OUT(GPIO87, AF0, DRIVE_HIGH) -#define GPIO88_RDnWR MFP_CFG_OUT(GPIO88, AF0, DRIVE_HIGH) - -/* USB */ -#define GPIO9_USB_RCV MFP_CFG_IN(GPIO9, AF1) -#define GPIO32_USB_VP MFP_CFG_IN(GPIO32, AF2) -#define GPIO34_USB_VM MFP_CFG_IN(GPIO34, AF2) -#define GPIO39_USB_VPO MFP_CFG_OUT(GPIO39, AF3, DRIVE_LOW) -#define GPIO56_USB_VMO MFP_CFG_OUT(GPIO56, AF1, DRIVE_LOW) -#define GPIO57_USB_nOE MFP_CFG_OUT(GPIO57, AF1, DRIVE_HIGH) - -/* ASSP */ -#define GPIO28_ASSP_BITCLK_IN MFP_CFG_IN(GPIO28, AF3) -#define GPIO28_ASSP_BITCLK_OUT MFP_CFG_OUT(GPIO28, AF3, DRIVE_LOW) -#define GPIO29_ASSP_RXD MFP_CFG_IN(GPIO29, AF3) -#define GPIO30_ASSP_TXD MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW) -#define GPIO31_ASSP_SFRM_IN MFP_CFG_IN(GPIO31, AF1) -#define GPIO31_ASSP_SFRM_OUT MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW) - -/* AC97 */ -#define GPIO89_AC97_nRESET MFP_CFG_OUT(GPIO89, AF0, DRIVE_HIGH) -#endif /* CONFIG_CPU_PXA26x */ - -/* commonly used pin configurations */ -#define GPIOxx_LCD_16BPP \ - GPIO58_LCD_LDD_0, \ - GPIO59_LCD_LDD_1, \ - GPIO60_LCD_LDD_2, \ - GPIO61_LCD_LDD_3, \ - GPIO62_LCD_LDD_4, \ - GPIO63_LCD_LDD_5, \ - GPIO64_LCD_LDD_6, \ - GPIO65_LCD_LDD_7, \ - GPIO66_LCD_LDD_8, \ - GPIO67_LCD_LDD_9, \ - GPIO68_LCD_LDD_10, \ - GPIO69_LCD_LDD_11, \ - GPIO70_LCD_LDD_12, \ - GPIO71_LCD_LDD_13, \ - GPIO72_LCD_LDD_14, \ - GPIO73_LCD_LDD_15 - -#define GPIOxx_LCD_DSTN_16BPP \ - GPIOxx_LCD_16BPP, \ - GPIO74_LCD_FCLK, \ - GPIO75_LCD_LCLK, \ - GPIO76_LCD_PCLK - -#define GPIOxx_LCD_TFT_16BPP \ - GPIOxx_LCD_16BPP, \ - GPIO74_LCD_FCLK, \ - GPIO75_LCD_LCLK, \ - GPIO76_LCD_PCLK, \ - GPIO77_LCD_BIAS - -#endif /* __ASM_ARCH_MFP_PXA25X_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h deleted file mode 100644 index a6586720..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +++ /dev/null @@ -1,467 +0,0 @@ -#ifndef __ASM_ARCH_MFP_PXA27X_H -#define __ASM_ARCH_MFP_PXA27X_H - -/* - * NOTE: for those special-function bidirectional GPIOs, as described - * in the "PXA27x Developer's Manual" Section 24.4.2.1, only its input - * alternative is preserved, the direction is actually selected by the - * specific controller, and this should work in most cases. - */ - -#include <mach/mfp-pxa2xx.h> - -/* Note: GPIO3/GPIO4 will be driven by Power I2C when PCFR/PI2C_EN - * bit is set, regardless of the GPIO configuration - */ -#define GPIO3_GPIO MFP_CFG_IN(GPIO3, AF0) -#define GPIO4_GPIO MFP_CFG_IN(GPIO4, AF0) - -/* GPIO */ -#define GPIO85_GPIO MFP_CFG_IN(GPIO85, AF0) -#define GPIO86_GPIO MFP_CFG_IN(GPIO86, AF0) -#define GPIO87_GPIO MFP_CFG_IN(GPIO87, AF0) -#define GPIO88_GPIO MFP_CFG_IN(GPIO88, AF0) -#define GPIO89_GPIO MFP_CFG_IN(GPIO89, AF0) -#define GPIO90_GPIO MFP_CFG_IN(GPIO90, AF0) -#define GPIO91_GPIO MFP_CFG_IN(GPIO91, AF0) -#define GPIO92_GPIO MFP_CFG_IN(GPIO92, AF0) -#define GPIO93_GPIO MFP_CFG_IN(GPIO93, AF0) -#define GPIO94_GPIO MFP_CFG_IN(GPIO94, AF0) -#define GPIO95_GPIO MFP_CFG_IN(GPIO95, AF0) -#define GPIO96_GPIO MFP_CFG_IN(GPIO96, AF0) -#define GPIO97_GPIO MFP_CFG_IN(GPIO97, AF0) -#define GPIO98_GPIO MFP_CFG_IN(GPIO98, AF0) -#define GPIO99_GPIO MFP_CFG_IN(GPIO99, AF0) -#define GPIO100_GPIO MFP_CFG_IN(GPIO100, AF0) -#define GPIO101_GPIO MFP_CFG_IN(GPIO101, AF0) -#define GPIO102_GPIO MFP_CFG_IN(GPIO102, AF0) -#define GPIO103_GPIO MFP_CFG_IN(GPIO103, AF0) -#define GPIO104_GPIO MFP_CFG_IN(GPIO104, AF0) -#define GPIO105_GPIO MFP_CFG_IN(GPIO105, AF0) -#define GPIO106_GPIO MFP_CFG_IN(GPIO106, AF0) -#define GPIO107_GPIO MFP_CFG_IN(GPIO107, AF0) -#define GPIO108_GPIO MFP_CFG_IN(GPIO108, AF0) -#define GPIO109_GPIO MFP_CFG_IN(GPIO109, AF0) -#define GPIO110_GPIO MFP_CFG_IN(GPIO110, AF0) -#define GPIO111_GPIO MFP_CFG_IN(GPIO111, AF0) -#define GPIO112_GPIO MFP_CFG_IN(GPIO112, AF0) -#define GPIO113_GPIO MFP_CFG_IN(GPIO113, AF0) -#define GPIO114_GPIO MFP_CFG_IN(GPIO114, AF0) -#define GPIO115_GPIO MFP_CFG_IN(GPIO115, AF0) -#define GPIO116_GPIO MFP_CFG_IN(GPIO116, AF0) -#define GPIO117_GPIO MFP_CFG_IN(GPIO117, AF0) -#define GPIO118_GPIO MFP_CFG_IN(GPIO118, AF0) -#define GPIO119_GPIO MFP_CFG_IN(GPIO119, AF0) -#define GPIO120_GPIO MFP_CFG_IN(GPIO120, AF0) - -/* Crystal and Clock Signals */ -#define GPIO9_HZ_CLK MFP_CFG_OUT(GPIO9, AF1, DRIVE_LOW) -#define GPIO10_HZ_CLK MFP_CFG_OUT(GPIO10, AF1, DRIVE_LOW) -#define GPIO11_48_MHz MFP_CFG_OUT(GPIO11, AF3, DRIVE_LOW) -#define GPIO12_48_MHz MFP_CFG_OUT(GPIO12, AF3, DRIVE_LOW) -#define GPIO13_CLK_EXT MFP_CFG_IN(GPIO13, AF1) - -/* OS Timer Signals */ -#define GPIO11_EXT_SYNC_0 MFP_CFG_IN(GPIO11, AF1) -#define GPIO12_EXT_SYNC_1 MFP_CFG_IN(GPIO12, AF1) -#define GPIO9_CHOUT_0 MFP_CFG_OUT(GPIO9, AF3, DRIVE_LOW) -#define GPIO10_CHOUT_1 MFP_CFG_OUT(GPIO10, AF3, DRIVE_LOW) -#define GPIO11_CHOUT_0 MFP_CFG_OUT(GPIO11, AF1, DRIVE_LOW) -#define GPIO12_CHOUT_1 MFP_CFG_OUT(GPIO12, AF1, DRIVE_LOW) - -/* SDRAM and Static Memory I/O Signals */ -#define GPIO20_nSDCS_2 MFP_CFG_OUT(GPIO20, AF1, DRIVE_HIGH) -#define GPIO21_nSDCS_3 MFP_CFG_OUT(GPIO21, AF1, DRIVE_HIGH) -#define GPIO15_nCS_1 MFP_CFG_OUT(GPIO15, AF2, DRIVE_HIGH) -#define GPIO78_nCS_2 MFP_CFG_OUT(GPIO78, AF2, DRIVE_HIGH) -#define GPIO79_nCS_3 MFP_CFG_OUT(GPIO79, AF2, DRIVE_HIGH) -#define GPIO80_nCS_4 MFP_CFG_OUT(GPIO80, AF2, DRIVE_HIGH) -#define GPIO33_nCS_5 MFP_CFG_OUT(GPIO33, AF2, DRIVE_HIGH) - -/* Miscellaneous I/O and DMA Signals */ -#define GPIO21_DVAL_0 MFP_CFG_OUT(GPIO21, AF2, DRIVE_HIGH) -#define GPIO116_DVAL_0 MFP_CFG_OUT(GPIO116, AF1, DRIVE_HIGH) -#define GPIO33_DVAL_1 MFP_CFG_OUT(GPIO33, AF1, DRIVE_HIGH) -#define GPIO96_DVAL_1 MFP_CFG_OUT(GPIO96, AF2, DRIVE_HIGH) -#define GPIO18_RDY MFP_CFG_IN(GPIO18, AF1) -#define GPIO20_DREQ_0 MFP_CFG_IN(GPIO20, AF1) -#define GPIO115_DREQ_0 MFP_CFG_IN(GPIO115, AF1) -#define GPIO80_DREQ_1 MFP_CFG_IN(GPIO80, AF1) -#define GPIO97_DREQ_1 MFP_CFG_IN(GPIO97, AF2) -#define GPIO85_DREQ_2 MFP_CFG_IN(GPIO85, AF2) -#define GPIO100_DREQ_2 MFP_CFG_IN(GPIO100, AF2) - -/* Alternate Bus Master Mode I/O Signals */ -#define GPIO20_MBREQ MFP_CFG_IN(GPIO20, AF2) -#define GPIO80_MBREQ MFP_CFG_IN(GPIO80, AF2) -#define GPIO96_MBREQ MFP_CFG_IN(GPIO96, AF2) -#define GPIO115_MBREQ MFP_CFG_IN(GPIO115, AF3) -#define GPIO21_MBGNT MFP_CFG_OUT(GPIO21, AF3, DRIVE_LOW) -#define GPIO33_MBGNT MFP_CFG_OUT(GPIO33, AF3, DRIVE_LOW) -#define GPIO97_MBGNT MFP_CFG_OUT(GPIO97, AF2, DRIVE_LOW) -#define GPIO116_MBGNT MFP_CFG_OUT(GPIO116, AF3, DRIVE_LOW) - -/* PC CARD */ -#define GPIO15_nPCE_1 MFP_CFG_OUT(GPIO15, AF1, DRIVE_HIGH) -#define GPIO85_nPCE_1 MFP_CFG_OUT(GPIO85, AF1, DRIVE_HIGH) -#define GPIO86_nPCE_1 MFP_CFG_OUT(GPIO86, AF1, DRIVE_HIGH) -#define GPIO102_nPCE_1 MFP_CFG_OUT(GPIO102, AF1, DRIVE_HIGH) -#define GPIO54_nPCE_2 MFP_CFG_OUT(GPIO54, AF2, DRIVE_HIGH) -#define GPIO78_nPCE_2 MFP_CFG_OUT(GPIO78, AF1, DRIVE_HIGH) -#define GPIO87_nPCE_2 MFP_CFG_IN(GPIO87, AF1) -#define GPIO55_nPREG MFP_CFG_OUT(GPIO55, AF2, DRIVE_HIGH) -#define GPIO50_nPIOR MFP_CFG_OUT(GPIO50, AF2, DRIVE_HIGH) -#define GPIO51_nPIOW MFP_CFG_OUT(GPIO51, AF2, DRIVE_HIGH) -#define GPIO49_nPWE MFP_CFG_OUT(GPIO49, AF2, DRIVE_HIGH) -#define GPIO48_nPOE MFP_CFG_OUT(GPIO48, AF2, DRIVE_HIGH) -#define GPIO57_nIOIS16 MFP_CFG_IN(GPIO57, AF1) -#define GPIO56_nPWAIT MFP_CFG_IN(GPIO56, AF1) -#define GPIO79_PSKTSEL MFP_CFG_OUT(GPIO79, AF1, DRIVE_HIGH) -#define GPIO104_PSKTSEL MFP_CFG_OUT(GPIO104, AF1, DRIVE_HIGH) - -/* I2C */ -#define GPIO117_I2C_SCL MFP_CFG_IN(GPIO117, AF1) -#define GPIO118_I2C_SDA MFP_CFG_IN(GPIO118, AF1) - -/* FFUART */ -#define GPIO9_FFUART_CTS MFP_CFG_IN(GPIO9, AF3) -#define GPIO26_FFUART_CTS MFP_CFG_IN(GPIO26, AF3) -#define GPIO35_FFUART_CTS MFP_CFG_IN(GPIO35, AF1) -#define GPIO100_FFUART_CTS MFP_CFG_IN(GPIO100, AF3) -#define GPIO10_FFUART_DCD MFP_CFG_IN(GPIO10, AF1) -#define GPIO36_FFUART_DCD MFP_CFG_IN(GPIO36, AF1) -#define GPIO33_FFUART_DSR MFP_CFG_IN(GPIO33, AF2) -#define GPIO37_FFUART_DSR MFP_CFG_IN(GPIO37, AF1) -#define GPIO38_FFUART_RI MFP_CFG_IN(GPIO38, AF1) -#define GPIO89_FFUART_RI MFP_CFG_IN(GPIO89, AF3) -#define GPIO19_FFUART_RXD MFP_CFG_IN(GPIO19, AF3) -#define GPIO33_FFUART_RXD MFP_CFG_IN(GPIO33, AF1) -#define GPIO34_FFUART_RXD MFP_CFG_IN(GPIO34, AF1) -#define GPIO41_FFUART_RXD MFP_CFG_IN(GPIO41, AF1) -#define GPIO53_FFUART_RXD MFP_CFG_IN(GPIO53, AF1) -#define GPIO85_FFUART_RXD MFP_CFG_IN(GPIO85, AF1) -#define GPIO96_FFUART_RXD MFP_CFG_IN(GPIO96, AF3) -#define GPIO102_FFUART_RXD MFP_CFG_IN(GPIO102, AF3) -#define GPIO16_FFUART_TXD MFP_CFG_OUT(GPIO16, AF3, DRIVE_HIGH) -#define GPIO37_FFUART_TXD MFP_CFG_OUT(GPIO37, AF3, DRIVE_HIGH) -#define GPIO39_FFUART_TXD MFP_CFG_OUT(GPIO39, AF2, DRIVE_HIGH) -#define GPIO83_FFUART_TXD MFP_CFG_OUT(GPIO83, AF2, DRIVE_HIGH) -#define GPIO99_FFUART_TXD MFP_CFG_OUT(GPIO99, AF3, DRIVE_HIGH) -#define GPIO27_FFUART_RTS MFP_CFG_OUT(GPIO27, AF3, DRIVE_HIGH) -#define GPIO41_FFUART_RTS MFP_CFG_OUT(GPIO41, AF2, DRIVE_HIGH) -#define GPIO83_FFUART_RTS MFP_CFG_OUT(GPIO83, AF3, DRIVE_HIGH) -#define GPIO98_FFUART_RTS MFP_CFG_OUT(GPIO98, AF3, DRIVE_HIGH) -#define GPIO40_FFUART_DTR MFP_CFG_OUT(GPIO40, AF2, DRIVE_HIGH) -#define GPIO82_FFUART_DTR MFP_CFG_OUT(GPIO82, AF3, DRIVE_HIGH) - -/* BTUART */ -#define GPIO44_BTUART_CTS MFP_CFG_IN(GPIO44, AF1) -#define GPIO42_BTUART_RXD MFP_CFG_IN(GPIO42, AF1) -#define GPIO45_BTUART_RTS MFP_CFG_OUT(GPIO45, AF2, DRIVE_HIGH) -#define GPIO45_BTUART_RTS_LPM_LOW MFP_CFG_OUT(GPIO45, AF2, DRIVE_LOW) -#define GPIO43_BTUART_TXD MFP_CFG_OUT(GPIO43, AF2, DRIVE_HIGH) -#define GPIO43_BTUART_TXD_LPM_LOW MFP_CFG_OUT(GPIO43, AF2, DRIVE_LOW) - -/* STUART */ -#define GPIO46_STUART_RXD MFP_CFG_IN(GPIO46, AF2) -#define GPIO47_STUART_TXD MFP_CFG_OUT(GPIO47, AF1, DRIVE_HIGH) - -/* FICP */ -#define GPIO42_FICP_RXD MFP_CFG_IN(GPIO42, AF2) -#define GPIO46_FICP_RXD MFP_CFG_IN(GPIO46, AF1) -#define GPIO43_FICP_TXD MFP_CFG_OUT(GPIO43, AF1, DRIVE_HIGH) -#define GPIO47_FICP_TXD MFP_CFG_OUT(GPIO47, AF2, DRIVE_HIGH) - -/* PWM 0/1/2/3 */ -#define GPIO11_PWM2_OUT MFP_CFG_OUT(GPIO11, AF2, DRIVE_LOW) -#define GPIO12_PWM3_OUT MFP_CFG_OUT(GPIO12, AF2, DRIVE_LOW) -#define GPIO16_PWM0_OUT MFP_CFG_OUT(GPIO16, AF2, DRIVE_LOW) -#define GPIO17_PWM1_OUT MFP_CFG_OUT(GPIO17, AF2, DRIVE_LOW) -#define GPIO38_PWM1_OUT MFP_CFG_OUT(GPIO38, AF3, DRIVE_LOW) -#define GPIO46_PWM2_OUT MFP_CFG_OUT(GPIO46, AF2, DRIVE_LOW) -#define GPIO47_PWM3_OUT MFP_CFG_OUT(GPIO47, AF3, DRIVE_LOW) -#define GPIO79_PWM2_OUT MFP_CFG_OUT(GPIO79, AF3, DRIVE_LOW) -#define GPIO80_PWM3_OUT MFP_CFG_OUT(GPIO80, AF3, DRIVE_LOW) -#define GPIO115_PWM1_OUT MFP_CFG_OUT(GPIO115, AF3, DRIVE_LOW) - -/* AC97 */ -#define GPIO31_AC97_SYNC MFP_CFG_OUT(GPIO31, AF2, DRIVE_LOW) -#define GPIO94_AC97_SYNC MFP_CFG_OUT(GPIO94, AF1, DRIVE_LOW) -#define GPIO30_AC97_SDATA_OUT MFP_CFG_OUT(GPIO30, AF2, DRIVE_LOW) -#define GPIO93_AC97_SDATA_OUT MFP_CFG_OUT(GPIO93, AF1, DRIVE_LOW) -#define GPIO45_AC97_SYSCLK MFP_CFG_OUT(GPIO45, AF1, DRIVE_LOW) -#define GPIO89_AC97_SYSCLK MFP_CFG_OUT(GPIO89, AF1, DRIVE_LOW) -#define GPIO98_AC97_SYSCLK MFP_CFG_OUT(GPIO98, AF1, DRIVE_LOW) -#define GPIO95_AC97_nRESET MFP_CFG_OUT(GPIO95, AF1, DRIVE_LOW) -#define GPIO113_AC97_nRESET MFP_CFG_OUT(GPIO113, AF2, DRIVE_LOW) -#define GPIO28_AC97_BITCLK MFP_CFG_IN(GPIO28, AF1) -#define GPIO29_AC97_SDATA_IN_0 MFP_CFG_IN(GPIO29, AF1) -#define GPIO116_AC97_SDATA_IN_0 MFP_CFG_IN(GPIO116, AF2) -#define GPIO99_AC97_SDATA_IN_1 MFP_CFG_IN(GPIO99, AF2) - -/* I2S */ -#define GPIO28_I2S_BITCLK_IN MFP_CFG_IN(GPIO28, AF2) -#define GPIO28_I2S_BITCLK_OUT MFP_CFG_OUT(GPIO28, AF1, DRIVE_LOW) -#define GPIO29_I2S_SDATA_IN MFP_CFG_IN(GPIO29, AF2) -#define GPIO30_I2S_SDATA_OUT MFP_CFG_OUT(GPIO30, AF1, DRIVE_LOW) -#define GPIO31_I2S_SYNC MFP_CFG_OUT(GPIO31, AF1, DRIVE_LOW) -#define GPIO113_I2S_SYSCLK MFP_CFG_OUT(GPIO113, AF1, DRIVE_LOW) - -/* SSP 1 */ -#define GPIO23_SSP1_SCLK MFP_CFG_OUT(GPIO23, AF2, DRIVE_LOW) -#define GPIO29_SSP1_SCLK MFP_CFG_IN(GPIO29, AF3) -#define GPIO27_SSP1_SYSCLK MFP_CFG_OUT(GPIO27, AF1, DRIVE_LOW) -#define GPIO53_SSP1_SYSCLK MFP_CFG_OUT(GPIO53, AF3, DRIVE_LOW) -#define GPIO24_SSP1_SFRM MFP_CFG_IN(GPIO24, AF2) -#define GPIO28_SSP1_SFRM MFP_CFG_IN(GPIO28, AF3) -#define GPIO25_SSP1_TXD MFP_CFG_OUT(GPIO25, AF2, DRIVE_LOW) -#define GPIO57_SSP1_TXD MFP_CFG_OUT(GPIO57, AF3, DRIVE_LOW) -#define GPIO26_SSP1_RXD MFP_CFG_IN(GPIO26, AF1) -#define GPIO27_SSP1_SCLKEN MFP_CFG_IN(GPIO27, AF2) - -/* SSP 2 */ -#define GPIO19_SSP2_SCLK MFP_CFG_IN(GPIO19, AF1) -#define GPIO22_SSP2_SCLK MFP_CFG_IN(GPIO22, AF3) -#define GPIO29_SSP2_SCLK MFP_CFG_OUT(GPIO29, AF3, DRIVE_LOW) -#define GPIO36_SSP2_SCLK MFP_CFG_IN(GPIO36, AF2) -#define GPIO50_SSP2_SCLK MFP_CFG_IN(GPIO50, AF3) -#define GPIO22_SSP2_SYSCLK MFP_CFG_OUT(GPIO22, AF2, DRIVE_LOW) -#define GPIO14_SSP2_SFRM MFP_CFG_IN(GPIO14, AF2) -#define GPIO37_SSP2_SFRM MFP_CFG_IN(GPIO37, AF2) -#define GPIO87_SSP2_SFRM MFP_CFG_OUT(GPIO87, AF3, DRIVE_LOW) -#define GPIO88_SSP2_SFRM MFP_CFG_IN(GPIO88, AF3) -#define GPIO13_SSP2_TXD MFP_CFG_OUT(GPIO13, AF1, DRIVE_LOW) -#define GPIO38_SSP2_TXD MFP_CFG_OUT(GPIO38, AF2, DRIVE_LOW) -#define GPIO87_SSP2_TXD MFP_CFG_OUT(GPIO87, AF1, DRIVE_LOW) -#define GPIO89_SSP2_TXD MFP_CFG_OUT(GPIO89, AF3, DRIVE_LOW) -#define GPIO11_SSP2_RXD MFP_CFG_IN(GPIO11, AF2) -#define GPIO29_SSP2_RXD MFP_CFG_OUT(GPIO29, AF1, DRIVE_LOW) -#define GPIO40_SSP2_RXD MFP_CFG_IN(GPIO40, AF1) -#define GPIO86_SSP2_RXD MFP_CFG_IN(GPIO86, AF1) -#define GPIO88_SSP2_RXD MFP_CFG_IN(GPIO88, AF2) -#define GPIO22_SSP2_EXTCLK MFP_CFG_IN(GPIO22, AF1) -#define GPIO27_SSP2_EXTCLK MFP_CFG_IN(GPIO27, AF1) -#define GPIO22_SSP2_SCLKEN MFP_CFG_IN(GPIO22, AF2) -#define GPIO23_SSP2_SCLKEN MFP_CFG_IN(GPIO23, AF2) - -/* SSP 3 */ -#define GPIO34_SSP3_SCLK MFP_CFG_IN(GPIO34, AF3) -#define GPIO40_SSP3_SCLK MFP_CFG_OUT(GPIO40, AF3, DRIVE_LOW) -#define GPIO52_SSP3_SCLK MFP_CFG_IN(GPIO52, AF2) -#define GPIO84_SSP3_SCLK MFP_CFG_IN(GPIO84, AF1) -#define GPIO45_SSP3_SYSCLK MFP_CFG_OUT(GPIO45, AF3, DRIVE_LOW) -#define GPIO35_SSP3_SFRM MFP_CFG_IN(GPIO35, AF3) -#define GPIO39_SSP3_SFRM MFP_CFG_IN(GPIO39, AF3) -#define GPIO83_SSP3_SFRM MFP_CFG_IN(GPIO83, AF1) -#define GPIO35_SSP3_TXD MFP_CFG_OUT(GPIO35, AF3, DRIVE_LOW) -#define GPIO38_SSP3_TXD MFP_CFG_OUT(GPIO38, AF1, DRIVE_LOW) -#define GPIO81_SSP3_TXD MFP_CFG_OUT(GPIO81, AF1, DRIVE_LOW) -#define GPIO41_SSP3_RXD MFP_CFG_IN(GPIO41, AF3) -#define GPIO82_SSP3_RXD MFP_CFG_IN(GPIO82, AF1) -#define GPIO89_SSP3_RXD MFP_CFG_IN(GPIO89, AF1) - -/* MMC */ -#define GPIO32_MMC_CLK MFP_CFG_OUT(GPIO32, AF2, DRIVE_LOW) -#define GPIO92_MMC_DAT_0 MFP_CFG_IN(GPIO92, AF1) -#define GPIO109_MMC_DAT_1 MFP_CFG_IN(GPIO109, AF1) -#define GPIO110_MMC_DAT_2 MFP_CFG_IN(GPIO110, AF1) -#define GPIO111_MMC_DAT_3 MFP_CFG_IN(GPIO111, AF1) -#define GPIO112_MMC_CMD MFP_CFG_IN(GPIO112, AF1) - -/* LCD */ -#define GPIO58_LCD_LDD_0 MFP_CFG_OUT(GPIO58, AF2, DRIVE_LOW) -#define GPIO59_LCD_LDD_1 MFP_CFG_OUT(GPIO59, AF2, DRIVE_LOW) -#define GPIO60_LCD_LDD_2 MFP_CFG_OUT(GPIO60, AF2, DRIVE_LOW) -#define GPIO61_LCD_LDD_3 MFP_CFG_OUT(GPIO61, AF2, DRIVE_LOW) -#define GPIO62_LCD_LDD_4 MFP_CFG_OUT(GPIO62, AF2, DRIVE_LOW) -#define GPIO63_LCD_LDD_5 MFP_CFG_OUT(GPIO63, AF2, DRIVE_LOW) -#define GPIO64_LCD_LDD_6 MFP_CFG_OUT(GPIO64, AF2, DRIVE_LOW) -#define GPIO65_LCD_LDD_7 MFP_CFG_OUT(GPIO65, AF2, DRIVE_LOW) -#define GPIO66_LCD_LDD_8 MFP_CFG_OUT(GPIO66, AF2, DRIVE_LOW) -#define GPIO67_LCD_LDD_9 MFP_CFG_OUT(GPIO67, AF2, DRIVE_LOW) -#define GPIO68_LCD_LDD_10 MFP_CFG_OUT(GPIO68, AF2, DRIVE_LOW) -#define GPIO69_LCD_LDD_11 MFP_CFG_OUT(GPIO69, AF2, DRIVE_LOW) -#define GPIO70_LCD_LDD_12 MFP_CFG_OUT(GPIO70, AF2, DRIVE_LOW) -#define GPIO71_LCD_LDD_13 MFP_CFG_OUT(GPIO71, AF2, DRIVE_LOW) -#define GPIO72_LCD_LDD_14 MFP_CFG_OUT(GPIO72, AF2, DRIVE_LOW) -#define GPIO73_LCD_LDD_15 MFP_CFG_OUT(GPIO73, AF2, DRIVE_LOW) -#define GPIO86_LCD_LDD_16 MFP_CFG_OUT(GPIO86, AF2, DRIVE_LOW) -#define GPIO87_LCD_LDD_17 MFP_CFG_OUT(GPIO87, AF2, DRIVE_LOW) -#define GPIO74_LCD_FCLK MFP_CFG_OUT(GPIO74, AF2, DRIVE_LOW) -#define GPIO75_LCD_LCLK MFP_CFG_OUT(GPIO75, AF2, DRIVE_LOW) -#define GPIO76_LCD_PCLK MFP_CFG_OUT(GPIO76, AF2, DRIVE_LOW) -#define GPIO77_LCD_BIAS MFP_CFG_OUT(GPIO77, AF2, DRIVE_LOW) -#define GPIO14_LCD_VSYNC MFP_CFG_IN(GPIO14, AF1) -#define GPIO19_LCD_CS MFP_CFG_OUT(GPIO19, AF2, DRIVE_LOW) - -/* Keypad */ -#define GPIO93_KP_DKIN_0 MFP_CFG_IN(GPIO93, AF1) -#define GPIO94_KP_DKIN_1 MFP_CFG_IN(GPIO94, AF1) -#define GPIO95_KP_DKIN_2 MFP_CFG_IN(GPIO95, AF1) -#define GPIO96_KP_DKIN_3 MFP_CFG_IN(GPIO96, AF1) -#define GPIO97_KP_DKIN_4 MFP_CFG_IN(GPIO97, AF1) -#define GPIO98_KP_DKIN_5 MFP_CFG_IN(GPIO98, AF1) -#define GPIO99_KP_DKIN_6 MFP_CFG_IN(GPIO99, AF1) -#define GPIO13_KP_KDIN_7 MFP_CFG_IN(GPIO13, AF2) -#define GPIO100_KP_MKIN_0 MFP_CFG_IN(GPIO100, AF1) -#define GPIO101_KP_MKIN_1 MFP_CFG_IN(GPIO101, AF1) -#define GPIO102_KP_MKIN_2 MFP_CFG_IN(GPIO102, AF1) -#define GPIO34_KP_MKIN_3 MFP_CFG_IN(GPIO34, AF2) -#define GPIO37_KP_MKIN_3 MFP_CFG_IN(GPIO37, AF3) -#define GPIO97_KP_MKIN_3 MFP_CFG_IN(GPIO97, AF3) -#define GPIO98_KP_MKIN_4 MFP_CFG_IN(GPIO98, AF3) -#define GPIO38_KP_MKIN_4 MFP_CFG_IN(GPIO38, AF2) -#define GPIO39_KP_MKIN_4 MFP_CFG_IN(GPIO39, AF1) -#define GPIO16_KP_MKIN_5 MFP_CFG_IN(GPIO16, AF1) -#define GPIO90_KP_MKIN_5 MFP_CFG_IN(GPIO90, AF1) -#define GPIO99_KP_MKIN_5 MFP_CFG_IN(GPIO99, AF3) -#define GPIO17_KP_MKIN_6 MFP_CFG_IN(GPIO17, AF1) -#define GPIO91_KP_MKIN_6 MFP_CFG_IN(GPIO91, AF1) -#define GPIO95_KP_MKIN_6 MFP_CFG_IN(GPIO95, AF3) -#define GPIO13_KP_MKIN_7 MFP_CFG_IN(GPIO13, AF3) -#define GPIO36_KP_MKIN_7 MFP_CFG_IN(GPIO36, AF3) -#define GPIO103_KP_MKOUT_0 MFP_CFG_OUT(GPIO103, AF2, DRIVE_HIGH) -#define GPIO104_KP_MKOUT_1 MFP_CFG_OUT(GPIO104, AF2, DRIVE_HIGH) -#define GPIO105_KP_MKOUT_2 MFP_CFG_OUT(GPIO105, AF2, DRIVE_HIGH) -#define GPIO106_KP_MKOUT_3 MFP_CFG_OUT(GPIO106, AF2, DRIVE_HIGH) -#define GPIO107_KP_MKOUT_4 MFP_CFG_OUT(GPIO107, AF2, DRIVE_HIGH) -#define GPIO108_KP_MKOUT_5 MFP_CFG_OUT(GPIO108, AF2, DRIVE_HIGH) -#define GPIO35_KP_MKOUT_6 MFP_CFG_OUT(GPIO35, AF2, DRIVE_HIGH) -#define GPIO22_KP_MKOUT_7 MFP_CFG_OUT(GPIO22, AF1, DRIVE_HIGH) -#define GPIO40_KP_MKOUT_6 MFP_CFG_OUT(GPIO40, AF1, DRIVE_HIGH) -#define GPIO41_KP_MKOUT_7 MFP_CFG_OUT(GPIO41, AF1, DRIVE_HIGH) -#define GPIO96_KP_MKOUT_6 MFP_CFG_OUT(GPIO96, AF3, DRIVE_HIGH) - -/* USB P3 */ -#define GPIO10_USB_P3_5 MFP_CFG_IN(GPIO10, AF3) -#define GPIO11_USB_P3_1 MFP_CFG_IN(GPIO11, AF3) -#define GPIO30_USB_P3_2 MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW) -#define GPIO31_USB_P3_6 MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW) -#define GPIO56_USB_P3_4 MFP_CFG_OUT(GPIO56, AF1, DRIVE_LOW) -#define GPIO86_USB_P3_5 MFP_CFG_IN(GPIO86, AF3) -#define GPIO87_USB_P3_1 MFP_CFG_IN(GPIO87, AF3) -#define GPIO90_USB_P3_5 MFP_CFG_IN(GPIO90, AF2) -#define GPIO91_USB_P3_1 MFP_CFG_IN(GPIO91, AF2) -#define GPIO113_USB_P3_3 MFP_CFG_IN(GPIO113, AF3) - -/* USB P2 */ -#define GPIO34_USB_P2_2 MFP_CFG_OUT(GPIO34, AF1, DRIVE_LOW) -#define GPIO35_USB_P2_1 MFP_CFG_IN(GPIO35, AF2) -#define GPIO36_USB_P2_4 MFP_CFG_OUT(GPIO36, AF1, DRIVE_LOW) -#define GPIO37_USB_P2_8 MFP_CFG_OUT(GPIO37, AF1, DRIVE_LOW) -#define GPIO38_USB_P2_3 MFP_CFG_IN(GPIO38, AF3) -#define GPIO39_USB_P2_6 MFP_CFG_OUT(GPIO39, AF1, DRIVE_LOW) -#define GPIO40_USB_P2_5 MFP_CFG_IN(GPIO40, AF3) -#define GPIO41_USB_P2_7 MFP_CFG_IN(GPIO41, AF2) -#define GPIO53_USB_P2_3 MFP_CFG_IN(GPIO53, AF2) - -/* USB Host Port 1/2 */ -#define GPIO88_USBH1_PWR MFP_CFG_IN(GPIO88, AF1) -#define GPIO89_USBH1_PEN MFP_CFG_OUT(GPIO89, AF2, DRIVE_LOW) -#define GPIO119_USBH2_PWR MFP_CFG_IN(GPIO119, AF1) -#define GPIO120_USBH2_PEN MFP_CFG_OUT(GPIO120, AF2, DRIVE_LOW) - -/* QCI - default to Master Mode: CIF_FV/CIF_LV Direction In */ -#define GPIO115_CIF_DD_3 MFP_CFG_IN(GPIO115, AF2) -#define GPIO116_CIF_DD_2 MFP_CFG_IN(GPIO116, AF1) -#define GPIO12_CIF_DD_7 MFP_CFG_IN(GPIO12, AF2) -#define GPIO17_CIF_DD_6 MFP_CFG_IN(GPIO17, AF2) -#define GPIO23_CIF_MCLK MFP_CFG_OUT(GPIO23, AF1, DRIVE_LOW) -#define GPIO24_CIF_FV MFP_CFG_IN(GPIO24, AF1) -#define GPIO25_CIF_LV MFP_CFG_IN(GPIO25, AF1) -#define GPIO26_CIF_PCLK MFP_CFG_IN(GPIO26, AF2) -#define GPIO27_CIF_DD_0 MFP_CFG_IN(GPIO27, AF3) -#define GPIO42_CIF_MCLK MFP_CFG_OUT(GPIO42, AF3, DRIVE_LOW) -#define GPIO43_CIF_FV MFP_CFG_IN(GPIO43, AF3) -#define GPIO44_CIF_LV MFP_CFG_IN(GPIO44, AF3) -#define GPIO45_CIF_PCLK MFP_CFG_IN(GPIO45, AF3) -#define GPIO47_CIF_DD_0 MFP_CFG_IN(GPIO47, AF1) -#define GPIO48_CIF_DD_5 MFP_CFG_IN(GPIO48, AF1) -#define GPIO50_CIF_DD_3 MFP_CFG_IN(GPIO50, AF1) -#define GPIO51_CIF_DD_2 MFP_CFG_IN(GPIO51, AF1) -#define GPIO52_CIF_DD_4 MFP_CFG_IN(GPIO52, AF1) -#define GPIO53_CIF_MCLK MFP_CFG_OUT(GPIO53, AF2, DRIVE_LOW) -#define GPIO54_CIF_PCLK MFP_CFG_IN(GPIO54, AF3) -#define GPIO55_CIF_DD_1 MFP_CFG_IN(GPIO55, AF1) -#define GPIO81_CIF_DD_0 MFP_CFG_IN(GPIO81, AF2) -#define GPIO82_CIF_DD_5 MFP_CFG_IN(GPIO82, AF3) -#define GPIO83_CIF_DD_4 MFP_CFG_IN(GPIO83, AF3) -#define GPIO84_CIF_FV MFP_CFG_IN(GPIO84, AF3) -#define GPIO85_CIF_LV MFP_CFG_IN(GPIO85, AF3) -#define GPIO90_CIF_DD_4 MFP_CFG_IN(GPIO90, AF3) -#define GPIO91_CIF_DD_5 MFP_CFG_IN(GPIO91, AF3) -#define GPIO93_CIF_DD_6 MFP_CFG_IN(GPIO93, AF2) -#define GPIO94_CIF_DD_5 MFP_CFG_IN(GPIO94, AF2) -#define GPIO95_CIF_DD_4 MFP_CFG_IN(GPIO95, AF2) -#define GPIO98_CIF_DD_0 MFP_CFG_IN(GPIO98, AF2) -#define GPIO103_CIF_DD_3 MFP_CFG_IN(GPIO103, AF1) -#define GPIO104_CIF_DD_2 MFP_CFG_IN(GPIO104, AF1) -#define GPIO105_CIF_DD_1 MFP_CFG_IN(GPIO105, AF1) -#define GPIO106_CIF_DD_9 MFP_CFG_IN(GPIO106, AF1) -#define GPIO107_CIF_DD_8 MFP_CFG_IN(GPIO107, AF1) -#define GPIO108_CIF_DD_7 MFP_CFG_IN(GPIO108, AF1) -#define GPIO114_CIF_DD_1 MFP_CFG_IN(GPIO114, AF1) - -/* Universal Subscriber ID Interface */ -#define GPIO114_UVS0 MFP_CFG_OUT(GPIO114, AF2, DRIVE_LOW) -#define GPIO115_nUVS1 MFP_CFG_OUT(GPIO115, AF2, DRIVE_LOW) -#define GPIO116_nUVS2 MFP_CFG_OUT(GPIO116, AF2, DRIVE_LOW) -#define GPIO14_UCLK MFP_CFG_OUT(GPIO14, AF3, DRIVE_LOW) -#define GPIO91_UCLK MFP_CFG_OUT(GPIO91, AF2, DRIVE_LOW) -#define GPIO19_nURST MFP_CFG_OUT(GPIO19, AF3, DRIVE_LOW) -#define GPIO90_nURST MFP_CFG_OUT(GPIO90, AF2, DRIVE_LOW) -#define GPIO116_UDET MFP_CFG_IN(GPIO116, AF3) -#define GPIO114_UEN MFP_CFG_OUT(GPIO114, AF1, DRIVE_LOW) -#define GPIO115_UEN MFP_CFG_OUT(GPIO115, AF1, DRIVE_LOW) - -/* Mobile Scalable Link (MSL) Interface */ -#define GPIO81_BB_OB_DAT_0 MFP_CFG_OUT(GPIO81, AF2, DRIVE_LOW) -#define GPIO48_BB_OB_DAT_1 MFP_CFG_OUT(GPIO48, AF1, DRIVE_LOW) -#define GPIO50_BB_OB_DAT_2 MFP_CFG_OUT(GPIO50, AF1, DRIVE_LOW) -#define GPIO51_BB_OB_DAT_3 MFP_CFG_OUT(GPIO51, AF1, DRIVE_LOW) -#define GPIO52_BB_OB_CLK MFP_CFG_OUT(GPIO52, AF1, DRIVE_LOW) -#define GPIO53_BB_OB_STB MFP_CFG_OUT(GPIO53, AF1, DRIVE_LOW) -#define GPIO54_BB_OB_WAIT MFP_CFG_IN(GPIO54, AF2) -#define GPIO82_BB_IB_DAT_0 MFP_CFG_IN(GPIO82, AF2) -#define GPIO55_BB_IB_DAT_1 MFP_CFG_IN(GPIO55, AF2) -#define GPIO56_BB_IB_DAT_2 MFP_CFG_IN(GPIO56, AF2) -#define GPIO57_BB_IB_DAT_3 MFP_CFG_IN(GPIO57, AF2) -#define GPIO83_BB_IB_CLK MFP_CFG_IN(GPIO83, AF2) -#define GPIO84_BB_IB_STB MFP_CFG_IN(GPIO84, AF2) -#define GPIO85_BB_IB_WAIT MFP_CFG_OUT(GPIO85, AF2, DRIVE_LOW) - -/* Memory Stick Host Controller */ -#define GPIO92_MSBS MFP_CFG_OUT(GPIO92, AF2, DRIVE_LOW) -#define GPIO109_MSSDIO MFP_CFG_IN(GPIO109, AF2) -#define GPIO112_nMSINS MFP_CFG_IN(GPIO112, AF2) -#define GPIO32_MSSCLK MFP_CFG_OUT(GPIO32, AF1, DRIVE_LOW) - -/* commonly used pin configurations */ -#define GPIOxx_LCD_16BPP \ - GPIO58_LCD_LDD_0, \ - GPIO59_LCD_LDD_1, \ - GPIO60_LCD_LDD_2, \ - GPIO61_LCD_LDD_3, \ - GPIO62_LCD_LDD_4, \ - GPIO63_LCD_LDD_5, \ - GPIO64_LCD_LDD_6, \ - GPIO65_LCD_LDD_7, \ - GPIO66_LCD_LDD_8, \ - GPIO67_LCD_LDD_9, \ - GPIO68_LCD_LDD_10, \ - GPIO69_LCD_LDD_11, \ - GPIO70_LCD_LDD_12, \ - GPIO71_LCD_LDD_13, \ - GPIO72_LCD_LDD_14, \ - GPIO73_LCD_LDD_15 - -#define GPIOxx_LCD_TFT_16BPP \ - GPIOxx_LCD_16BPP, \ - GPIO74_LCD_FCLK, \ - GPIO75_LCD_LCLK, \ - GPIO76_LCD_PCLK, \ - GPIO77_LCD_BIAS - - -extern int keypad_set_wake(unsigned int on); -#endif /* __ASM_ARCH_MFP_PXA27X_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h deleted file mode 100644 index cbf51ae8..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h +++ /dev/null @@ -1,142 +0,0 @@ -#ifndef __ASM_ARCH_MFP_PXA2XX_H -#define __ASM_ARCH_MFP_PXA2XX_H - -#include <plat/mfp.h> - -/* - * the following MFP_xxx bit definitions in mfp.h are re-used for pxa2xx: - * - * MFP_PIN(x) - * MFP_AFx - * MFP_LPM_DRIVE_{LOW, HIGH} - * MFP_LPM_EDGE_x - * - * other MFP_x bit definitions will be ignored - * - * and adds the below two bits specifically for pxa2xx: - * - * bit 23 - Input/Output (PXA2xx specific) - * bit 24 - Wakeup Enable(PXA2xx specific) - * bit 25 - Keep Output (PXA2xx specific) - */ - -#define MFP_DIR_IN (0x0 << 23) -#define MFP_DIR_OUT (0x1 << 23) -#define MFP_DIR_MASK (0x1 << 23) -#define MFP_DIR(x) (((x) >> 23) & 0x1) - -#define MFP_LPM_CAN_WAKEUP (0x1 << 24) - -/* - * MFP_LPM_KEEP_OUTPUT must be specified for pins that need to - * retain their last output level (low or high). - * Note: MFP_LPM_KEEP_OUTPUT has no effect on pins configured for input. - */ -#define MFP_LPM_KEEP_OUTPUT (0x1 << 25) - -#define WAKEUP_ON_EDGE_RISE (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_RISE) -#define WAKEUP_ON_EDGE_FALL (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_FALL) -#define WAKEUP_ON_EDGE_BOTH (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_BOTH) - -/* specifically for enabling wakeup on keypad GPIOs */ -#define WAKEUP_ON_LEVEL_HIGH (MFP_LPM_CAN_WAKEUP) - -#define MFP_CFG_IN(pin, af) \ - ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK)) |\ - (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DIR_IN)) - -/* NOTE: pins configured as output _must_ provide a low power state, - * and this state should help to minimize the power dissipation. - */ -#define MFP_CFG_OUT(pin, af, state) \ - ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK | MFP_LPM_STATE_MASK)) |\ - (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DIR_OUT | MFP_LPM_##state)) - -/* Common configurations for pxa25x and pxa27x - * - * Note: pins configured as GPIO are always initialized to input - * so not to cause any side effect - */ -#define GPIO0_GPIO MFP_CFG_IN(GPIO0, AF0) -#define GPIO1_GPIO MFP_CFG_IN(GPIO1, AF0) -#define GPIO9_GPIO MFP_CFG_IN(GPIO9, AF0) -#define GPIO10_GPIO MFP_CFG_IN(GPIO10, AF0) -#define GPIO11_GPIO MFP_CFG_IN(GPIO11, AF0) -#define GPIO12_GPIO MFP_CFG_IN(GPIO12, AF0) -#define GPIO13_GPIO MFP_CFG_IN(GPIO13, AF0) -#define GPIO14_GPIO MFP_CFG_IN(GPIO14, AF0) -#define GPIO15_GPIO MFP_CFG_IN(GPIO15, AF0) -#define GPIO16_GPIO MFP_CFG_IN(GPIO16, AF0) -#define GPIO17_GPIO MFP_CFG_IN(GPIO17, AF0) -#define GPIO18_GPIO MFP_CFG_IN(GPIO18, AF0) -#define GPIO19_GPIO MFP_CFG_IN(GPIO19, AF0) -#define GPIO20_GPIO MFP_CFG_IN(GPIO20, AF0) -#define GPIO21_GPIO MFP_CFG_IN(GPIO21, AF0) -#define GPIO22_GPIO MFP_CFG_IN(GPIO22, AF0) -#define GPIO23_GPIO MFP_CFG_IN(GPIO23, AF0) -#define GPIO24_GPIO MFP_CFG_IN(GPIO24, AF0) -#define GPIO25_GPIO MFP_CFG_IN(GPIO25, AF0) -#define GPIO26_GPIO MFP_CFG_IN(GPIO26, AF0) -#define GPIO27_GPIO MFP_CFG_IN(GPIO27, AF0) -#define GPIO28_GPIO MFP_CFG_IN(GPIO28, AF0) -#define GPIO29_GPIO MFP_CFG_IN(GPIO29, AF0) -#define GPIO30_GPIO MFP_CFG_IN(GPIO30, AF0) -#define GPIO31_GPIO MFP_CFG_IN(GPIO31, AF0) -#define GPIO32_GPIO MFP_CFG_IN(GPIO32, AF0) -#define GPIO33_GPIO MFP_CFG_IN(GPIO33, AF0) -#define GPIO34_GPIO MFP_CFG_IN(GPIO34, AF0) -#define GPIO35_GPIO MFP_CFG_IN(GPIO35, AF0) -#define GPIO36_GPIO MFP_CFG_IN(GPIO36, AF0) -#define GPIO37_GPIO MFP_CFG_IN(GPIO37, AF0) -#define GPIO38_GPIO MFP_CFG_IN(GPIO38, AF0) -#define GPIO39_GPIO MFP_CFG_IN(GPIO39, AF0) -#define GPIO40_GPIO MFP_CFG_IN(GPIO40, AF0) -#define GPIO41_GPIO MFP_CFG_IN(GPIO41, AF0) -#define GPIO42_GPIO MFP_CFG_IN(GPIO42, AF0) -#define GPIO43_GPIO MFP_CFG_IN(GPIO43, AF0) -#define GPIO44_GPIO MFP_CFG_IN(GPIO44, AF0) -#define GPIO45_GPIO MFP_CFG_IN(GPIO45, AF0) -#define GPIO46_GPIO MFP_CFG_IN(GPIO46, AF0) -#define GPIO47_GPIO MFP_CFG_IN(GPIO47, AF0) -#define GPIO48_GPIO MFP_CFG_IN(GPIO48, AF0) -#define GPIO49_GPIO MFP_CFG_IN(GPIO49, AF0) -#define GPIO50_GPIO MFP_CFG_IN(GPIO50, AF0) -#define GPIO51_GPIO MFP_CFG_IN(GPIO51, AF0) -#define GPIO52_GPIO MFP_CFG_IN(GPIO52, AF0) -#define GPIO53_GPIO MFP_CFG_IN(GPIO53, AF0) -#define GPIO54_GPIO MFP_CFG_IN(GPIO54, AF0) -#define GPIO55_GPIO MFP_CFG_IN(GPIO55, AF0) -#define GPIO56_GPIO MFP_CFG_IN(GPIO56, AF0) -#define GPIO57_GPIO MFP_CFG_IN(GPIO57, AF0) -#define GPIO58_GPIO MFP_CFG_IN(GPIO58, AF0) -#define GPIO59_GPIO MFP_CFG_IN(GPIO59, AF0) -#define GPIO60_GPIO MFP_CFG_IN(GPIO60, AF0) -#define GPIO61_GPIO MFP_CFG_IN(GPIO61, AF0) -#define GPIO62_GPIO MFP_CFG_IN(GPIO62, AF0) -#define GPIO63_GPIO MFP_CFG_IN(GPIO63, AF0) -#define GPIO64_GPIO MFP_CFG_IN(GPIO64, AF0) -#define GPIO65_GPIO MFP_CFG_IN(GPIO65, AF0) -#define GPIO66_GPIO MFP_CFG_IN(GPIO66, AF0) -#define GPIO67_GPIO MFP_CFG_IN(GPIO67, AF0) -#define GPIO68_GPIO MFP_CFG_IN(GPIO68, AF0) -#define GPIO69_GPIO MFP_CFG_IN(GPIO69, AF0) -#define GPIO70_GPIO MFP_CFG_IN(GPIO70, AF0) -#define GPIO71_GPIO MFP_CFG_IN(GPIO71, AF0) -#define GPIO72_GPIO MFP_CFG_IN(GPIO72, AF0) -#define GPIO73_GPIO MFP_CFG_IN(GPIO73, AF0) -#define GPIO74_GPIO MFP_CFG_IN(GPIO74, AF0) -#define GPIO75_GPIO MFP_CFG_IN(GPIO75, AF0) -#define GPIO76_GPIO MFP_CFG_IN(GPIO76, AF0) -#define GPIO77_GPIO MFP_CFG_IN(GPIO77, AF0) -#define GPIO78_GPIO MFP_CFG_IN(GPIO78, AF0) -#define GPIO79_GPIO MFP_CFG_IN(GPIO79, AF0) -#define GPIO80_GPIO MFP_CFG_IN(GPIO80, AF0) -#define GPIO81_GPIO MFP_CFG_IN(GPIO81, AF0) -#define GPIO82_GPIO MFP_CFG_IN(GPIO82, AF0) -#define GPIO83_GPIO MFP_CFG_IN(GPIO83, AF0) -#define GPIO84_GPIO MFP_CFG_IN(GPIO84, AF0) - -extern void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num); -extern void pxa2xx_mfp_set_lpm(int mfp, unsigned long lpm); -extern int gpio_set_wake(unsigned int gpio, unsigned int on); -#endif /* __ASM_ARCH_MFP_PXA2XX_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa300.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa300.h deleted file mode 100644 index 4e128707..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa300.h +++ /dev/null @@ -1,575 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/mfp-pxa300.h - * - * PXA300/PXA310 specific MFP configuration definitions - * - * Copyright (C) 2007 Marvell International Ltd. - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_MFP_PXA300_H -#define __ASM_ARCH_MFP_PXA300_H - -#include <mach/mfp-pxa3xx.h> - -/* GPIO */ -#define GPIO46_GPIO MFP_CFG(GPIO46, AF1) -#define GPIO49_GPIO MFP_CFG(GPIO49, AF3) -#define GPIO50_GPIO MFP_CFG(GPIO50, AF2) -#define GPIO51_GPIO MFP_CFG(GPIO51, AF3) -#define GPIO52_GPIO MFP_CFG(GPIO52, AF3) -#define GPIO56_GPIO MFP_CFG(GPIO56, AF0) -#define GPIO58_GPIO MFP_CFG(GPIO58, AF0) -#define GPIO59_GPIO MFP_CFG(GPIO59, AF0) -#define GPIO60_GPIO MFP_CFG(GPIO60, AF0) -#define GPIO61_GPIO MFP_CFG(GPIO61, AF0) -#define GPIO62_GPIO MFP_CFG(GPIO62, AF0) - -#ifdef CONFIG_CPU_PXA310 -#define GPIO7_2_GPIO MFP_CFG(GPIO7_2, AF0) -#define GPIO8_2_GPIO MFP_CFG(GPIO8_2, AF0) -#define GPIO9_2_GPIO MFP_CFG(GPIO9_2, AF0) -#define GPIO10_2_GPIO MFP_CFG(GPIO10_2, AF0) -#define GPIO11_2_GPIO MFP_CFG(GPIO11_2, AF0) -#define GPIO12_2_GPIO MFP_CFG(GPIO12_2, AF0) -#endif - -/* Chip Select */ -#define GPIO1_nCS2 MFP_CFG(GPIO1, AF1) -#define GPIO2_nCS3 MFP_CFG(GPIO2, AF1) - -/* AC97 */ -#define GPIO23_AC97_nACRESET MFP_CFG(GPIO23, AF1) -#define GPIO24_AC97_SYSCLK MFP_CFG(GPIO24, AF1) -#define GPIO29_AC97_BITCLK MFP_CFG(GPIO29, AF1) -#define GPIO25_AC97_SDATA_IN_0 MFP_CFG(GPIO25, AF1) -#define GPIO26_AC97_SDATA_IN_1 MFP_CFG(GPIO26, AF1) -#define GPIO17_AC97_SDATA_IN_2 MFP_CFG(GPIO17, AF3) -#define GPIO21_AC97_SDATA_IN_2 MFP_CFG(GPIO21, AF2) -#define GPIO18_AC97_SDATA_IN_3 MFP_CFG(GPIO18, AF3) -#define GPIO22_AC97_SDATA_IN_3 MFP_CFG(GPIO22, AF2) -#define GPIO27_AC97_SDATA_OUT MFP_CFG(GPIO27, AF1) -#define GPIO28_AC97_SYNC MFP_CFG(GPIO28, AF1) - -/* I2C */ -#define GPIO21_I2C_SCL MFP_CFG_LPM(GPIO21, AF1, PULL_HIGH) -#define GPIO22_I2C_SDA MFP_CFG_LPM(GPIO22, AF1, PULL_HIGH) - -/* QCI */ -#define GPIO39_CI_DD_0 MFP_CFG_DRV(GPIO39, AF1, DS04X) -#define GPIO40_CI_DD_1 MFP_CFG_DRV(GPIO40, AF1, DS04X) -#define GPIO41_CI_DD_2 MFP_CFG_DRV(GPIO41, AF1, DS04X) -#define GPIO42_CI_DD_3 MFP_CFG_DRV(GPIO42, AF1, DS04X) -#define GPIO43_CI_DD_4 MFP_CFG_DRV(GPIO43, AF1, DS04X) -#define GPIO44_CI_DD_5 MFP_CFG_DRV(GPIO44, AF1, DS04X) -#define GPIO45_CI_DD_6 MFP_CFG_DRV(GPIO45, AF1, DS04X) -#define GPIO46_CI_DD_7 MFP_CFG_DRV(GPIO46, AF0, DS04X) -#define GPIO47_CI_DD_8 MFP_CFG_DRV(GPIO47, AF1, DS04X) -#define GPIO48_CI_DD_9 MFP_CFG_DRV(GPIO48, AF1, DS04X) -#define GPIO49_CI_MCLK MFP_CFG_DRV(GPIO49, AF0, DS04X) -#define GPIO50_CI_PCLK MFP_CFG_DRV(GPIO50, AF0, DS04X) -#define GPIO51_CI_HSYNC MFP_CFG_DRV(GPIO51, AF0, DS04X) -#define GPIO52_CI_VSYNC MFP_CFG_DRV(GPIO52, AF0, DS04X) - -/* KEYPAD */ -#define GPIO3_KP_DKIN_6 MFP_CFG_LPM(GPIO3, AF2, FLOAT) -#define GPIO4_KP_DKIN_7 MFP_CFG_LPM(GPIO4, AF2, FLOAT) -#define GPIO16_KP_DKIN_6 MFP_CFG_LPM(GPIO16, AF6, FLOAT) -#define GPIO83_KP_DKIN_2 MFP_CFG_LPM(GPIO83, AF5, FLOAT) -#define GPIO84_KP_DKIN_1 MFP_CFG_LPM(GPIO84, AF5, FLOAT) -#define GPIO85_KP_DKIN_0 MFP_CFG_LPM(GPIO85, AF3, FLOAT) -#define GPIO86_KP_DKIN_1 MFP_CFG_LPM(GPIO86, AF3, FLOAT) -#define GPIO87_KP_DKIN_2 MFP_CFG_LPM(GPIO87, AF3, FLOAT) -#define GPIO88_KP_DKIN_3 MFP_CFG_LPM(GPIO88, AF3, FLOAT) -#define GPIO89_KP_DKIN_3 MFP_CFG_LPM(GPIO89, AF3, FLOAT) -#define GPIO107_KP_DKIN_0 MFP_CFG_LPM(GPIO107, AF2, FLOAT) -#define GPIO108_KP_DKIN_1 MFP_CFG_LPM(GPIO108, AF2, FLOAT) -#define GPIO109_KP_DKIN_2 MFP_CFG_LPM(GPIO109, AF2, FLOAT) -#define GPIO110_KP_DKIN_3 MFP_CFG_LPM(GPIO110, AF2, FLOAT) -#define GPIO111_KP_DKIN_4 MFP_CFG_LPM(GPIO111, AF2, FLOAT) -#define GPIO112_KP_DKIN_5 MFP_CFG_LPM(GPIO112, AF2, FLOAT) -#define GPIO113_KP_DKIN_6 MFP_CFG_LPM(GPIO113, AF2, FLOAT) -#define GPIO114_KP_DKIN_7 MFP_CFG_LPM(GPIO114, AF2, FLOAT) -#define GPIO115_KP_DKIN_0 MFP_CFG_LPM(GPIO115, AF2, FLOAT) -#define GPIO116_KP_DKIN_1 MFP_CFG_LPM(GPIO116, AF2, FLOAT) -#define GPIO117_KP_DKIN_2 MFP_CFG_LPM(GPIO117, AF2, FLOAT) -#define GPIO118_KP_DKIN_3 MFP_CFG_LPM(GPIO118, AF2, FLOAT) -#define GPIO119_KP_DKIN_4 MFP_CFG_LPM(GPIO119, AF2, FLOAT) -#define GPIO120_KP_DKIN_5 MFP_CFG_LPM(GPIO120, AF2, FLOAT) -#define GPIO121_KP_DKIN_6 MFP_CFG_LPM(GPIO121, AF2, FLOAT) -#define GPIO122_KP_DKIN_5 MFP_CFG_LPM(GPIO122, AF2, FLOAT) -#define GPIO123_KP_DKIN_4 MFP_CFG_LPM(GPIO123, AF2, FLOAT) -#define GPIO124_KP_DKIN_3 MFP_CFG_LPM(GPIO124, AF2, FLOAT) -#define GPIO127_KP_DKIN_0 MFP_CFG_LPM(GPIO127, AF5, FLOAT) -#define GPIO0_2_KP_DKIN_0 MFP_CFG_LPM(GPIO0_2, AF2, FLOAT) -#define GPIO1_2_KP_DKIN_1 MFP_CFG_LPM(GPIO1_2, AF2, FLOAT) -#define GPIO2_2_KP_DKIN_6 MFP_CFG_LPM(GPIO2_2, AF2, FLOAT) -#define GPIO3_2_KP_DKIN_7 MFP_CFG_LPM(GPIO3_2, AF2, FLOAT) -#define GPIO4_2_KP_DKIN_1 MFP_CFG_LPM(GPIO4_2, AF2, FLOAT) -#define GPIO5_2_KP_DKIN_0 MFP_CFG_LPM(GPIO5_2, AF2, FLOAT) - -#define GPIO5_KP_MKIN_0 MFP_CFG_LPM(GPIO5, AF2, FLOAT) -#define GPIO6_KP_MKIN_1 MFP_CFG_LPM(GPIO6, AF2, FLOAT) -#define GPIO9_KP_MKIN_6 MFP_CFG_LPM(GPIO9, AF3, FLOAT) -#define GPIO10_KP_MKIN_7 MFP_CFG_LPM(GPIO10, AF3, FLOAT) -#define GPIO70_KP_MKIN_6 MFP_CFG_LPM(GPIO70, AF3, FLOAT) -#define GPIO71_KP_MKIN_7 MFP_CFG_LPM(GPIO71, AF3, FLOAT) -#define GPIO100_KP_MKIN_6 MFP_CFG_LPM(GPIO100, AF7, FLOAT) -#define GPIO101_KP_MKIN_7 MFP_CFG_LPM(GPIO101, AF7, FLOAT) -#define GPIO112_KP_MKIN_6 MFP_CFG_LPM(GPIO112, AF4, FLOAT) -#define GPIO113_KP_MKIN_7 MFP_CFG_LPM(GPIO113, AF4, FLOAT) -#define GPIO115_KP_MKIN_0 MFP_CFG_LPM(GPIO115, AF1, FLOAT) -#define GPIO116_KP_MKIN_1 MFP_CFG_LPM(GPIO116, AF1, FLOAT) -#define GPIO117_KP_MKIN_2 MFP_CFG_LPM(GPIO117, AF1, FLOAT) -#define GPIO118_KP_MKIN_3 MFP_CFG_LPM(GPIO118, AF1, FLOAT) -#define GPIO119_KP_MKIN_4 MFP_CFG_LPM(GPIO119, AF1, FLOAT) -#define GPIO120_KP_MKIN_5 MFP_CFG_LPM(GPIO120, AF1, FLOAT) -#define GPIO125_KP_MKIN_2 MFP_CFG_LPM(GPIO125, AF2, FLOAT) -#define GPIO2_2_KP_MKIN_6 MFP_CFG_LPM(GPIO2_2, AF1, FLOAT) -#define GPIO3_2_KP_MKIN_7 MFP_CFG_LPM(GPIO3_2, AF1, FLOAT) - -#define GPIO7_KP_MKOUT_5 MFP_CFG_LPM(GPIO7, AF1, DRIVE_HIGH) -#define GPIO11_KP_MKOUT_5 MFP_CFG_LPM(GPIO11, AF3, DRIVE_HIGH) -#define GPIO12_KP_MKOUT_6 MFP_CFG_LPM(GPIO12, AF3, DRIVE_HIGH) -#define GPIO13_KP_MKOUT_7 MFP_CFG_LPM(GPIO13, AF3, DRIVE_HIGH) -#define GPIO19_KP_MKOUT_4 MFP_CFG_LPM(GPIO19, AF3, DRIVE_HIGH) -#define GPIO20_KP_MKOUT_5 MFP_CFG_LPM(GPIO20, AF3, DRIVE_HIGH) -#define GPIO38_KP_MKOUT_5 MFP_CFG_LPM(GPIO38, AF5, DRIVE_HIGH) -#define GPIO53_KP_MKOUT_6 MFP_CFG_LPM(GPIO53, AF5, DRIVE_HIGH) -#define GPIO78_KP_MKOUT_7 MFP_CFG_LPM(GPIO78, AF5, DRIVE_HIGH) -#define GPIO85_KP_MKOUT_0 MFP_CFG_LPM(GPIO85, AF2, DRIVE_HIGH) -#define GPIO86_KP_MKOUT_1 MFP_CFG_LPM(GPIO86, AF2, DRIVE_HIGH) -#define GPIO87_KP_MKOUT_2 MFP_CFG_LPM(GPIO87, AF2, DRIVE_HIGH) -#define GPIO88_KP_MKOUT_3 MFP_CFG_LPM(GPIO88, AF2, DRIVE_HIGH) -#define GPIO104_KP_MKOUT_6 MFP_CFG_LPM(GPIO104, AF5, DRIVE_HIGH) -#define GPIO105_KP_MKOUT_7 MFP_CFG_LPM(GPIO105, AF5, DRIVE_HIGH) -#define GPIO121_KP_MKOUT_0 MFP_CFG_LPM(GPIO121, AF1, DRIVE_HIGH) -#define GPIO122_KP_MKOUT_1 MFP_CFG_LPM(GPIO122, AF1, DRIVE_HIGH) -#define GPIO123_KP_MKOUT_2 MFP_CFG_LPM(GPIO123, AF1, DRIVE_HIGH) -#define GPIO124_KP_MKOUT_3 MFP_CFG_LPM(GPIO124, AF1, DRIVE_HIGH) -#define GPIO125_KP_MKOUT_4 MFP_CFG_LPM(GPIO125, AF1, DRIVE_HIGH) -#define GPIO126_KP_MKOUT_7 MFP_CFG_LPM(GPIO126, AF4, DRIVE_HIGH) -#define GPIO5_2_KP_MKOUT_6 MFP_CFG_LPM(GPIO5_2, AF1, DRIVE_HIGH) -#define GPIO4_2_KP_MKOUT_5 MFP_CFG_LPM(GPIO4_2, AF1, DRIVE_HIGH) -#define GPIO6_2_KP_MKOUT_7 MFP_CFG_LPM(GPIO6_2, AF1, DRIVE_HIGH) - -/* LCD */ -#define GPIO54_LCD_LDD_0 MFP_CFG_DRV(GPIO54, AF1, DS01X) -#define GPIO55_LCD_LDD_1 MFP_CFG_DRV(GPIO55, AF1, DS01X) -#define GPIO56_LCD_LDD_2 MFP_CFG_DRV(GPIO56, AF1, DS01X) -#define GPIO57_LCD_LDD_3 MFP_CFG_DRV(GPIO57, AF1, DS01X) -#define GPIO58_LCD_LDD_4 MFP_CFG_DRV(GPIO58, AF1, DS01X) -#define GPIO59_LCD_LDD_5 MFP_CFG_DRV(GPIO59, AF1, DS01X) -#define GPIO60_LCD_LDD_6 MFP_CFG_DRV(GPIO60, AF1, DS01X) -#define GPIO61_LCD_LDD_7 MFP_CFG_DRV(GPIO61, AF1, DS01X) -#define GPIO62_LCD_LDD_8 MFP_CFG_DRV(GPIO62, AF1, DS01X) -#define GPIO63_LCD_LDD_9 MFP_CFG_DRV(GPIO63, AF1, DS01X) -#define GPIO64_LCD_LDD_10 MFP_CFG_DRV(GPIO64, AF1, DS01X) -#define GPIO65_LCD_LDD_11 MFP_CFG_DRV(GPIO65, AF1, DS01X) -#define GPIO66_LCD_LDD_12 MFP_CFG_DRV(GPIO66, AF1, DS01X) -#define GPIO67_LCD_LDD_13 MFP_CFG_DRV(GPIO67, AF1, DS01X) -#define GPIO68_LCD_LDD_14 MFP_CFG_DRV(GPIO68, AF1, DS01X) -#define GPIO69_LCD_LDD_15 MFP_CFG_DRV(GPIO69, AF1, DS01X) -#define GPIO70_LCD_LDD_16 MFP_CFG_DRV(GPIO70, AF1, DS01X) -#define GPIO71_LCD_LDD_17 MFP_CFG_DRV(GPIO71, AF1, DS01X) -#define GPIO62_LCD_CS_N MFP_CFG_DRV(GPIO62, AF2, DS01X) -#define GPIO72_LCD_FCLK MFP_CFG_DRV(GPIO72, AF1, DS01X) -#define GPIO73_LCD_LCLK MFP_CFG_DRV(GPIO73, AF1, DS01X) -#define GPIO74_LCD_PCLK MFP_CFG_DRV(GPIO74, AF1, DS02X) -#define GPIO75_LCD_BIAS MFP_CFG_DRV(GPIO75, AF1, DS01X) -#define GPIO76_LCD_VSYNC MFP_CFG_DRV(GPIO76, AF2, DS01X) - -#define GPIO15_LCD_CS_N MFP_CFG_DRV(GPIO15, AF2, DS01X) -#define GPIO127_LCD_CS_N MFP_CFG_DRV(GPIO127, AF1, DS01X) -#define GPIO63_LCD_VSYNC MFP_CFG_DRV(GPIO63, AF2, DS01X) - -/* Mini-LCD */ -#define GPIO72_MLCD_FCLK MFP_CFG_DRV(GPIO72, AF7, DS08X) -#define GPIO73_MLCD_LCLK MFP_CFG_DRV(GPIO73, AF7, DS08X) -#define GPIO54_MLCD_LDD_0 MFP_CFG_DRV(GPIO54, AF7, DS08X) -#define GPIO55_MLCD_LDD_1 MFP_CFG_DRV(GPIO55, AF7, DS08X) -#define GPIO56_MLCD_LDD_2 MFP_CFG_DRV(GPIO56, AF7, DS08X) -#define GPIO57_MLCD_LDD_3 MFP_CFG_DRV(GPIO57, AF7, DS08X) -#define GPIO58_MLCD_LDD_4 MFP_CFG_DRV(GPIO58, AF7, DS08X) -#define GPIO59_MLCD_LDD_5 MFP_CFG_DRV(GPIO59, AF7, DS08X) -#define GPIO60_MLCD_LDD_6 MFP_CFG_DRV(GPIO60, AF7, DS08X) -#define GPIO61_MLCD_LDD_7 MFP_CFG_DRV(GPIO61, AF7, DS08X) -#define GPIO62_MLCD_LDD_8 MFP_CFG_DRV(GPIO62, AF7, DS08X) -#define GPIO63_MLCD_LDD_9 MFP_CFG_DRV(GPIO63, AF7, DS08X) -#define GPIO64_MLCD_LDD_10 MFP_CFG_DRV(GPIO64, AF7, DS08X) -#define GPIO65_MLCD_LDD_11 MFP_CFG_DRV(GPIO65, AF7, DS08X) -#define GPIO66_MLCD_LDD_12 MFP_CFG_DRV(GPIO66, AF7, DS08X) -#define GPIO67_MLCD_LDD_13 MFP_CFG_DRV(GPIO67, AF7, DS08X) -#define GPIO68_MLCD_LDD_14 MFP_CFG_DRV(GPIO68, AF7, DS08X) -#define GPIO69_MLCD_LDD_15 MFP_CFG_DRV(GPIO69, AF7, DS08X) -#define GPIO74_MLCD_PCLK MFP_CFG_DRV(GPIO74, AF7, DS08X) -#define GPIO75_MLCD_BIAS MFP_CFG_DRV(GPIO75, AF2, DS08X) - -/* MMC1 */ -#define GPIO7_MMC1_CLK MFP_CFG_LPM(GPIO7, AF4, DRIVE_HIGH) -#define GPIO8_MMC1_CMD MFP_CFG_LPM(GPIO8, AF4, DRIVE_HIGH) -#define GPIO14_MMC1_CMD MFP_CFG_LPM(GPIO14, AF5, DRIVE_HIGH) -#define GPIO15_MMC1_CMD MFP_CFG_LPM(GPIO15, AF5, DRIVE_HIGH) -#define GPIO3_MMC1_DAT0 MFP_CFG_LPM(GPIO3, AF4, DRIVE_HIGH) -#define GPIO4_MMC1_DAT1 MFP_CFG_LPM(GPIO4, AF4, DRIVE_HIGH) -#define GPIO5_MMC1_DAT2 MFP_CFG_LPM(GPIO5, AF4, DRIVE_HIGH) -#define GPIO6_MMC1_DAT3 MFP_CFG_LPM(GPIO6, AF4, DRIVE_HIGH) - -/* MMC2 */ -#define GPIO9_MMC2_DAT0 MFP_CFG_LPM(GPIO9, AF4, PULL_HIGH) -#define GPIO10_MMC2_DAT1 MFP_CFG_LPM(GPIO10, AF4, PULL_HIGH) -#define GPIO11_MMC2_DAT2 MFP_CFG_LPM(GPIO11, AF4, PULL_HIGH) -#define GPIO12_MMC2_DAT3 MFP_CFG_LPM(GPIO12, AF4, PULL_HIGH) -#define GPIO13_MMC2_CLK MFP_CFG_LPM(GPIO13, AF4, PULL_HIGH) -#define GPIO14_MMC2_CMD MFP_CFG_LPM(GPIO14, AF4, PULL_HIGH) -#define GPIO77_MMC2_DAT0 MFP_CFG_LPM(GPIO77, AF4, PULL_HIGH) -#define GPIO78_MMC2_DAT1 MFP_CFG_LPM(GPIO78, AF4, PULL_HIGH) -#define GPIO79_MMC2_DAT2 MFP_CFG_LPM(GPIO79, AF4, PULL_HIGH) -#define GPIO80_MMC2_DAT3 MFP_CFG_LPM(GPIO80, AF4, PULL_HIGH) -#define GPIO81_MMC2_CLK MFP_CFG_LPM(GPIO81, AF4, PULL_HIGH) -#define GPIO82_MMC2_CMD MFP_CFG_LPM(GPIO82, AF4, PULL_HIGH) - -/* SSP1 */ -#define GPIO89_SSP1_EXTCLK MFP_CFG(GPIO89, AF1) -#define GPIO90_SSP1_SYSCLK MFP_CFG(GPIO90, AF1) -#define GPIO15_SSP1_SCLK MFP_CFG(GPIO15, AF6) -#define GPIO16_SSP1_FRM MFP_CFG(GPIO16, AF2) -#define GPIO33_SSP1_SCLK MFP_CFG(GPIO33, AF5) -#define GPIO34_SSP1_FRM MFP_CFG(GPIO34, AF5) -#define GPIO85_SSP1_SCLK MFP_CFG(GPIO85, AF1) -#define GPIO86_SSP1_FRM MFP_CFG(GPIO86, AF1) -#define GPIO18_SSP1_TXD MFP_CFG(GPIO18, AF7) -#define GPIO18_SSP1_RXD MFP_CFG(GPIO18, AF2) -#define GPIO20_SSP1_TXD MFP_CFG(GPIO20, AF2) -#define GPIO20_SSP1_RXD MFP_CFG(GPIO20, AF7) -#define GPIO35_SSP1_TXD MFP_CFG(GPIO35, AF5) -#define GPIO35_SSP1_RXD MFP_CFG(GPIO35, AF4) -#define GPIO36_SSP1_TXD MFP_CFG(GPIO36, AF5) -#define GPIO36_SSP1_RXD MFP_CFG(GPIO36, AF6) -#define GPIO87_SSP1_TXD MFP_CFG(GPIO87, AF1) -#define GPIO87_SSP1_RXD MFP_CFG(GPIO87, AF6) -#define GPIO88_SSP1_TXD MFP_CFG(GPIO88, AF6) -#define GPIO88_SSP1_RXD MFP_CFG(GPIO88, AF1) - -/* SSP2 */ -#define GPIO29_SSP2_EXTCLK MFP_CFG(GPIO29, AF2) -#define GPIO23_SSP2_SCLK MFP_CFG(GPIO23, AF2) -#define GPIO17_SSP2_FRM MFP_CFG(GPIO17, AF2) -#define GPIO25_SSP2_SCLK MFP_CFG(GPIO25, AF2) -#define GPIO26_SSP2_FRM MFP_CFG(GPIO26, AF2) -#define GPIO33_SSP2_SCLK MFP_CFG(GPIO33, AF6) -#define GPIO34_SSP2_FRM MFP_CFG(GPIO34, AF6) -#define GPIO64_SSP2_SCLK MFP_CFG(GPIO64, AF2) -#define GPIO65_SSP2_FRM MFP_CFG(GPIO65, AF2) -#define GPIO19_SSP2_TXD MFP_CFG(GPIO19, AF2) -#define GPIO19_SSP2_RXD MFP_CFG(GPIO19, AF7) -#define GPIO24_SSP2_TXD MFP_CFG(GPIO24, AF5) -#define GPIO24_SSP2_RXD MFP_CFG(GPIO24, AF4) -#define GPIO27_SSP2_TXD MFP_CFG(GPIO27, AF2) -#define GPIO27_SSP2_RXD MFP_CFG(GPIO27, AF5) -#define GPIO28_SSP2_TXD MFP_CFG(GPIO28, AF5) -#define GPIO28_SSP2_RXD MFP_CFG(GPIO28, AF2) -#define GPIO35_SSP2_TXD MFP_CFG(GPIO35, AF7) -#define GPIO35_SSP2_RXD MFP_CFG(GPIO35, AF6) -#define GPIO66_SSP2_TXD MFP_CFG(GPIO66, AF4) -#define GPIO66_SSP2_RXD MFP_CFG(GPIO66, AF2) -#define GPIO67_SSP2_TXD MFP_CFG(GPIO67, AF2) -#define GPIO67_SSP2_RXD MFP_CFG(GPIO67, AF4) -#define GPIO36_SSP2_TXD MFP_CFG(GPIO36, AF7) - -/* SSP3 */ -#define GPIO69_SSP3_FRM MFP_CFG_X(GPIO69, AF2, DS08X, DRIVE_LOW) -#define GPIO68_SSP3_SCLK MFP_CFG_X(GPIO68, AF2, DS08X, FLOAT) -#define GPIO92_SSP3_FRM MFP_CFG_X(GPIO92, AF1, DS08X, DRIVE_LOW) -#define GPIO91_SSP3_SCLK MFP_CFG_X(GPIO91, AF1, DS08X, FLOAT) -#define GPIO70_SSP3_TXD MFP_CFG_X(GPIO70, AF2, DS08X, DRIVE_LOW) -#define GPIO70_SSP3_RXD MFP_CFG_X(GPIO70, AF5, DS08X, FLOAT) -#define GPIO71_SSP3_TXD MFP_CFG_X(GPIO71, AF5, DS08X, DRIVE_LOW) -#define GPIO71_SSP3_RXD MFP_CFG_X(GPIO71, AF2, DS08X, FLOAT) -#define GPIO93_SSP3_TXD MFP_CFG_X(GPIO93, AF1, DS08X, DRIVE_LOW) -#define GPIO93_SSP3_RXD MFP_CFG_X(GPIO93, AF5, DS08X, FLOAT) -#define GPIO94_SSP3_TXD MFP_CFG_X(GPIO94, AF5, DS08X, DRIVE_LOW) -#define GPIO94_SSP3_RXD MFP_CFG_X(GPIO94, AF1, DS08X, FLOAT) - -/* SSP4 */ -#define GPIO95_SSP4_SCLK MFP_CFG_LPM(GPIO95, AF1, PULL_HIGH) -#define GPIO96_SSP4_FRM MFP_CFG_LPM(GPIO96, AF1, PULL_HIGH) -#define GPIO97_SSP4_TXD MFP_CFG_LPM(GPIO97, AF1, PULL_HIGH) -#define GPIO97_SSP4_RXD MFP_CFG_LPM(GPIO97, AF5, PULL_HIGH) -#define GPIO98_SSP4_TXD MFP_CFG_LPM(GPIO98, AF5, PULL_HIGH) -#define GPIO98_SSP4_RXD MFP_CFG_LPM(GPIO98, AF1, PULL_HIGH) - -/* UART1 */ -#define GPIO32_UART1_CTS MFP_CFG_LPM(GPIO32, AF2, FLOAT) -#define GPIO37_UART1_CTS MFP_CFG_LPM(GPIO37, AF4, FLOAT) -#define GPIO79_UART1_CTS MFP_CFG_LPM(GPIO79, AF1, FLOAT) -#define GPIO84_UART1_CTS MFP_CFG_LPM(GPIO84, AF3, FLOAT) -#define GPIO101_UART1_CTS MFP_CFG_LPM(GPIO101, AF1, FLOAT) -#define GPIO106_UART1_CTS MFP_CFG_LPM(GPIO106, AF6, FLOAT) - -#define GPIO32_UART1_RTS MFP_CFG_LPM(GPIO32, AF4, FLOAT) -#define GPIO37_UART1_RTS MFP_CFG_LPM(GPIO37, AF2, FLOAT) -#define GPIO79_UART1_RTS MFP_CFG_LPM(GPIO79, AF3, FLOAT) -#define GPIO84_UART1_RTS MFP_CFG_LPM(GPIO84, AF1, FLOAT) -#define GPIO101_UART1_RTS MFP_CFG_LPM(GPIO101, AF6, FLOAT) -#define GPIO106_UART1_RTS MFP_CFG_LPM(GPIO106, AF1, FLOAT) - -#define GPIO34_UART1_DSR MFP_CFG_LPM(GPIO34, AF2, FLOAT) -#define GPIO36_UART1_DSR MFP_CFG_LPM(GPIO36, AF4, FLOAT) -#define GPIO81_UART1_DSR MFP_CFG_LPM(GPIO81, AF1, FLOAT) -#define GPIO83_UART1_DSR MFP_CFG_LPM(GPIO83, AF3, FLOAT) -#define GPIO103_UART1_DSR MFP_CFG_LPM(GPIO103, AF1, FLOAT) -#define GPIO105_UART1_DSR MFP_CFG_LPM(GPIO105, AF6, FLOAT) - -#define GPIO34_UART1_DTR MFP_CFG_LPM(GPIO34, AF4, FLOAT) -#define GPIO36_UART1_DTR MFP_CFG_LPM(GPIO36, AF2, FLOAT) -#define GPIO81_UART1_DTR MFP_CFG_LPM(GPIO81, AF3, FLOAT) -#define GPIO83_UART1_DTR MFP_CFG_LPM(GPIO83, AF1, FLOAT) -#define GPIO103_UART1_DTR MFP_CFG_LPM(GPIO103, AF6, FLOAT) -#define GPIO105_UART1_DTR MFP_CFG_LPM(GPIO105, AF1, FLOAT) - -#define GPIO35_UART1_RI MFP_CFG_LPM(GPIO35, AF2, FLOAT) -#define GPIO82_UART1_RI MFP_CFG_LPM(GPIO82, AF1, FLOAT) -#define GPIO104_UART1_RI MFP_CFG_LPM(GPIO104, AF1, FLOAT) - -#define GPIO33_UART1_DCD MFP_CFG_LPM(GPIO33, AF2, FLOAT) -#define GPIO80_UART1_DCD MFP_CFG_LPM(GPIO80, AF1, FLOAT) -#define GPIO102_UART1_DCD MFP_CFG_LPM(GPIO102, AF1, FLOAT) - -#define GPIO30_UART1_RXD MFP_CFG_LPM(GPIO30, AF2, FLOAT) -#define GPIO31_UART1_RXD MFP_CFG_LPM(GPIO31, AF4, FLOAT) -#define GPIO77_UART1_RXD MFP_CFG_LPM(GPIO77, AF1, FLOAT) -#define GPIO78_UART1_RXD MFP_CFG_LPM(GPIO78, AF3, FLOAT) -#define GPIO99_UART1_RXD MFP_CFG_LPM(GPIO99, AF1, FLOAT) -#define GPIO100_UART1_RXD MFP_CFG_LPM(GPIO100, AF6, FLOAT) -#define GPIO102_UART1_RXD MFP_CFG_LPM(GPIO102, AF6, FLOAT) -#define GPIO104_UART1_RXD MFP_CFG_LPM(GPIO104, AF4, FLOAT) - -#define GPIO30_UART1_TXD MFP_CFG_LPM(GPIO30, AF4, FLOAT) -#define GPIO31_UART1_TXD MFP_CFG_LPM(GPIO31, AF2, FLOAT) -#define GPIO77_UART1_TXD MFP_CFG_LPM(GPIO77, AF3, FLOAT) -#define GPIO78_UART1_TXD MFP_CFG_LPM(GPIO78, AF1, FLOAT) -#define GPIO99_UART1_TXD MFP_CFG_LPM(GPIO99, AF6, FLOAT) -#define GPIO100_UART1_TXD MFP_CFG_LPM(GPIO100, AF1, FLOAT) -#define GPIO102_UART1_TXD MFP_CFG_LPM(GPIO102, AF4, FLOAT) - -/* UART2 */ -#define GPIO15_UART2_CTS MFP_CFG_LPM(GPIO15, AF3, FLOAT) -#define GPIO16_UART2_CTS MFP_CFG_LPM(GPIO16, AF5, FLOAT) -#define GPIO111_UART2_CTS MFP_CFG_LPM(GPIO111, AF3, FLOAT) -#define GPIO114_UART2_CTS MFP_CFG_LPM(GPIO114, AF1, FLOAT) - -#define GPIO15_UART2_RTS MFP_CFG_LPM(GPIO15, AF4, FLOAT) -#define GPIO16_UART2_RTS MFP_CFG_LPM(GPIO16, AF4, FLOAT) -#define GPIO114_UART2_RTS MFP_CFG_LPM(GPIO114, AF3, FLOAT) -#define GPIO111_UART2_RTS MFP_CFG_LPM(GPIO111, AF1, FLOAT) - -#define GPIO18_UART2_RXD MFP_CFG_LPM(GPIO18, AF5, FLOAT) -#define GPIO19_UART2_RXD MFP_CFG_LPM(GPIO19, AF4, FLOAT) -#define GPIO112_UART2_RXD MFP_CFG_LPM(GPIO112, AF1, FLOAT) -#define GPIO113_UART2_RXD MFP_CFG_LPM(GPIO113, AF3, FLOAT) - -#define GPIO18_UART2_TXD MFP_CFG_LPM(GPIO18, AF4, FLOAT) -#define GPIO19_UART2_TXD MFP_CFG_LPM(GPIO19, AF5, FLOAT) -#define GPIO112_UART2_TXD MFP_CFG_LPM(GPIO112, AF3, FLOAT) -#define GPIO113_UART2_TXD MFP_CFG_LPM(GPIO113, AF1, FLOAT) - -/* UART3 */ -#define GPIO91_UART3_CTS MFP_CFG_LPM(GPIO91, AF2, FLOAT) -#define GPIO92_UART3_CTS MFP_CFG_LPM(GPIO92, AF4, FLOAT) -#define GPIO107_UART3_CTS MFP_CFG_LPM(GPIO107, AF1, FLOAT) -#define GPIO108_UART3_CTS MFP_CFG_LPM(GPIO108, AF3, FLOAT) - -#define GPIO91_UART3_RTS MFP_CFG_LPM(GPIO91, AF4, FLOAT) -#define GPIO92_UART3_RTS MFP_CFG_LPM(GPIO92, AF2, FLOAT) -#define GPIO107_UART3_RTS MFP_CFG_LPM(GPIO107, AF3, FLOAT) -#define GPIO108_UART3_RTS MFP_CFG_LPM(GPIO108, AF1, FLOAT) - -#define GPIO7_UART3_RXD MFP_CFG_LPM(GPIO7, AF2, FLOAT) -#define GPIO8_UART3_RXD MFP_CFG_LPM(GPIO8, AF6, FLOAT) -#define GPIO93_UART3_RXD MFP_CFG_LPM(GPIO93, AF4, FLOAT) -#define GPIO94_UART3_RXD MFP_CFG_LPM(GPIO94, AF2, FLOAT) -#define GPIO109_UART3_RXD MFP_CFG_LPM(GPIO109, AF3, FLOAT) -#define GPIO110_UART3_RXD MFP_CFG_LPM(GPIO110, AF1, FLOAT) - -#define GPIO7_UART3_TXD MFP_CFG_LPM(GPIO7, AF6, FLOAT) -#define GPIO8_UART3_TXD MFP_CFG_LPM(GPIO8, AF2, FLOAT) -#define GPIO93_UART3_TXD MFP_CFG_LPM(GPIO93, AF2, FLOAT) -#define GPIO94_UART3_TXD MFP_CFG_LPM(GPIO94, AF4, FLOAT) -#define GPIO109_UART3_TXD MFP_CFG_LPM(GPIO109, AF1, FLOAT) -#define GPIO110_UART3_TXD MFP_CFG_LPM(GPIO110, AF3, FLOAT) - -/* USB Host */ -#define GPIO0_2_USBH_PEN MFP_CFG(GPIO0_2, AF1) -#define GPIO1_2_USBH_PWR MFP_CFG(GPIO1_2, AF1) - -/* USB P3 */ -#define GPIO77_USB_P3_1 MFP_CFG(GPIO77, AF2) -#define GPIO78_USB_P3_2 MFP_CFG(GPIO78, AF2) -#define GPIO79_USB_P3_3 MFP_CFG(GPIO79, AF2) -#define GPIO80_USB_P3_4 MFP_CFG(GPIO80, AF2) -#define GPIO81_USB_P3_5 MFP_CFG(GPIO81, AF2) -#define GPIO82_USB_P3_6 MFP_CFG(GPIO82, AF2) - -/* PWM */ -#define GPIO17_PWM0_OUT MFP_CFG(GPIO17, AF1) -#define GPIO18_PWM1_OUT MFP_CFG(GPIO18, AF1) -#define GPIO19_PWM2_OUT MFP_CFG(GPIO19, AF1) -#define GPIO20_PWM3_OUT MFP_CFG(GPIO20, AF1) - -/* CIR */ -#define GPIO8_CIR_OUT MFP_CFG(GPIO8, AF5) -#define GPIO16_CIR_OUT MFP_CFG(GPIO16, AF3) - -#define GPIO20_OW_DQ_IN MFP_CFG(GPIO20, AF5) -#define GPIO126_OW_DQ MFP_CFG(GPIO126, AF2) - -#define GPIO0_DF_RDY MFP_CFG(GPIO0, AF1) -#define GPIO7_CLK_BYPASS_XSC MFP_CFG(GPIO7, AF7) -#define GPIO17_EXT_SYNC_MVT_0 MFP_CFG(GPIO17, AF6) -#define GPIO18_EXT_SYNC_MVT_1 MFP_CFG(GPIO18, AF6) -#define GPIO19_OST_CHOUT_MVT_0 MFP_CFG(GPIO19, AF6) -#define GPIO20_OST_CHOUT_MVT_1 MFP_CFG(GPIO20, AF6) -#define GPIO49_48M_CLK MFP_CFG(GPIO49, AF2) -#define GPIO126_EXT_CLK MFP_CFG(GPIO126, AF3) -#define GPIO127_CLK_BYPASS_GB MFP_CFG(GPIO127, AF7) -#define GPIO71_EXT_MATCH_MVT MFP_CFG(GPIO71, AF6) - -#define GPIO3_uIO_IN MFP_CFG(GPIO3, AF1) - -#define GPIO4_uSIM_CARD_STATE MFP_CFG(GPIO4, AF1) -#define GPIO5_uSIM_uCLK MFP_CFG(GPIO5, AF1) -#define GPIO6_uSIM_uRST MFP_CFG(GPIO6, AF1) -#define GPIO16_uSIM_UVS_0 MFP_CFG(GPIO16, AF1) - -#define GPIO9_SCIO MFP_CFG(GPIO9, AF1) -#define GPIO20_RTC_MVT MFP_CFG(GPIO20, AF4) -#define GPIO126_RTC_MVT MFP_CFG(GPIO126, AF1) - -/* - * PXA300 specific MFP configurations - */ -#ifdef CONFIG_CPU_PXA300 -#define GPIO99_USB_P2_2 MFP_CFG(GPIO99, AF2) -#define GPIO99_USB_P2_5 MFP_CFG(GPIO99, AF3) -#define GPIO99_USB_P2_6 MFP_CFG(GPIO99, AF4) -#define GPIO100_USB_P2_2 MFP_CFG(GPIO100, AF4) -#define GPIO100_USB_P2_5 MFP_CFG(GPIO100, AF5) -#define GPIO101_USB_P2_1 MFP_CFG(GPIO101, AF2) -#define GPIO102_USB_P2_4 MFP_CFG(GPIO102, AF2) -#define GPIO104_USB_P2_3 MFP_CFG(GPIO104, AF2) -#define GPIO105_USB_P2_5 MFP_CFG(GPIO105, AF2) -#define GPIO100_USB_P2_6 MFP_CFG(GPIO100, AF2) -#define GPIO106_USB_P2_7 MFP_CFG(GPIO106, AF2) -#define GPIO103_USB_P2_8 MFP_CFG(GPIO103, AF2) - -/* U2D UTMI */ -#define GPIO38_UTM_CLK MFP_CFG(GPIO38, AF1) -#define GPIO26_U2D_RXERROR MFP_CFG(GPIO26, AF3) -#define GPIO50_U2D_RXERROR MFP_CFG(GPIO50, AF1) -#define GPIO89_U2D_RXERROR MFP_CFG(GPIO89, AF5) -#define GPIO24_UTM_RXVALID MFP_CFG(GPIO24, AF3) -#define GPIO48_UTM_RXVALID MFP_CFG(GPIO48, AF2) -#define GPIO87_UTM_RXVALID MFP_CFG(GPIO87, AF5) -#define GPIO25_UTM_RXACTIVE MFP_CFG(GPIO25, AF3) -#define GPIO47_UTM_RXACTIVE MFP_CFG(GPIO47, AF2) -#define GPIO49_UTM_RXACTIVE MFP_CFG(GPIO49, AF1) -#define GPIO88_UTM_RXACTIVE MFP_CFG(GPIO88, AF5) -#define GPIO53_UTM_TXREADY MFP_CFG(GPIO53, AF1) -#define GPIO67_UTM_LINESTATE_0 MFP_CFG(GPIO67, AF3) -#define GPIO92_UTM_LINESTATE_0 MFP_CFG(GPIO92, AF3) -#define GPIO104_UTM_LINESTATE_0 MFP_CFG(GPIO104, AF3) -#define GPIO109_UTM_LINESTATE_0 MFP_CFG(GPIO109, AF4) -#define GPIO68_UTM_LINESTATE_1 MFP_CFG(GPIO68, AF3) -#define GPIO93_UTM_LINESTATE_1 MFP_CFG(GPIO93, AF3) -#define GPIO105_UTM_LINESTATE_1 MFP_CFG(GPIO105, AF3) -#define GPIO27_U2D_OPMODE_0 MFP_CFG(GPIO27, AF4) -#define GPIO51_U2D_OPMODE_0 MFP_CFG(GPIO51, AF2) -#define GPIO90_U2D_OPMODE_0 MFP_CFG(GPIO90, AF7) -#define GPIO28_U2D_OPMODE_1 MFP_CFG(GPIO28, AF4) -#define GPIO52_U2D_OPMODE_1 MFP_CFG(GPIO52, AF2) -#define GPIO106_U2D_OPMODE_1 MFP_CFG(GPIO106, AF3) -#define GPIO110_U2D_OPMODE_1 MFP_CFG(GPIO110, AF5) -#define GPIO76_U2D_RESET MFP_CFG(GPIO76, AF1) -#define GPIO95_U2D_RESET MFP_CFG(GPIO95, AF2) -#define GPIO100_U2D_RESET MFP_CFG(GPIO100, AF3) -#define GPIO66_U2D_SUSPEND MFP_CFG(GPIO66, AF3) -#define GPIO98_U2D_SUSPEND MFP_CFG(GPIO98, AF2) -#define GPIO103_U2D_SUSPEND MFP_CFG(GPIO103, AF3) -#define GPIO65_U2D_TERM_SEL MFP_CFG(GPIO65, AF5) -#define GPIO97_U2D_TERM_SEL MFP_CFG(GPIO97, AF3) -#define GPIO102_U2D_TERM_SEL MFP_CFG(GPIO102, AF5) -#define GPIO29_U2D_TXVALID MFP_CFG(GPIO29, AF3) -#define GPIO52_U2D_TXVALID MFP_CFG(GPIO52, AF4) -#define GPIO69_U2D_TXVALID MFP_CFG(GPIO69, AF3) -#define GPIO85_U2D_TXVALID MFP_CFG(GPIO85, AF7) -#define GPIO64_U2D_XCVR_SEL MFP_CFG(GPIO64, AF5) -#define GPIO96_U2D_XCVR_SEL MFP_CFG(GPIO96, AF3) -#define GPIO101_U2D_XCVR_SEL MFP_CFG(GPIO101, AF5) -#define GPIO30_UTM_PHYDATA_0 MFP_CFG(GPIO30, AF3) -#define GPIO31_UTM_PHYDATA_1 MFP_CFG(GPIO31, AF3) -#define GPIO32_UTM_PHYDATA_2 MFP_CFG(GPIO32, AF3) -#define GPIO33_UTM_PHYDATA_3 MFP_CFG(GPIO33, AF3) -#define GPIO34_UTM_PHYDATA_4 MFP_CFG(GPIO34, AF3) -#define GPIO35_UTM_PHYDATA_5 MFP_CFG(GPIO35, AF3) -#define GPIO36_UTM_PHYDATA_6 MFP_CFG(GPIO36, AF3) -#define GPIO37_UTM_PHYDATA_7 MFP_CFG(GPIO37, AF3) -#define GPIO39_UTM_PHYDATA_0 MFP_CFG(GPIO39, AF3) -#define GPIO40_UTM_PHYDATA_1 MFP_CFG(GPIO40, AF3) -#define GPIO41_UTM_PHYDATA_2 MFP_CFG(GPIO41, AF3) -#define GPIO42_UTM_PHYDATA_3 MFP_CFG(GPIO42, AF3) -#define GPIO43_UTM_PHYDATA_4 MFP_CFG(GPIO43, AF3) -#define GPIO44_UTM_PHYDATA_5 MFP_CFG(GPIO44, AF3) -#define GPIO45_UTM_PHYDATA_6 MFP_CFG(GPIO45, AF3) -#define GPIO46_UTM_PHYDATA_7 MFP_CFG(GPIO46, AF3) -#endif /* CONFIG_CPU_PXA300 */ - -/* - * PXA310 specific MFP configurations - */ -#ifdef CONFIG_CPU_PXA310 -/* USB P2 */ -#define GPIO36_USB_P2_1 MFP_CFG(GPIO36, AF1) -#define GPIO30_USB_P2_2 MFP_CFG(GPIO30, AF1) -#define GPIO35_USB_P2_3 MFP_CFG(GPIO35, AF1) -#define GPIO32_USB_P2_4 MFP_CFG(GPIO32, AF1) -#define GPIO34_USB_P2_5 MFP_CFG(GPIO34, AF1) -#define GPIO31_USB_P2_6 MFP_CFG(GPIO31, AF1) - -/* MMC1 */ -#define GPIO24_MMC1_CMD MFP_CFG(GPIO24, AF3) -#define GPIO29_MMC1_DAT0 MFP_CFG(GPIO29, AF3) - -/* MMC3 */ -#define GPIO103_MMC3_CLK MFP_CFG(GPIO103, AF2) -#define GPIO105_MMC3_CMD MFP_CFG(GPIO105, AF2) -#define GPIO11_2_MMC3_CLK MFP_CFG(GPIO11_2, AF1) -#define GPIO12_2_MMC3_CMD MFP_CFG(GPIO12_2, AF1) -#define GPIO7_2_MMC3_DAT0 MFP_CFG(GPIO7_2, AF1) -#define GPIO8_2_MMC3_DAT1 MFP_CFG(GPIO8_2, AF1) -#define GPIO9_2_MMC3_DAT2 MFP_CFG(GPIO9_2, AF1) -#define GPIO10_2_MMC3_DAT3 MFP_CFG(GPIO10_2, AF1) - -/* ULPI */ -#define GPIO38_ULPI_CLK MFP_CFG(GPIO38, AF1) -#define GPIO30_ULPI_DATA_OUT_0 MFP_CFG(GPIO30, AF3) -#define GPIO31_ULPI_DATA_OUT_1 MFP_CFG(GPIO31, AF3) -#define GPIO32_ULPI_DATA_OUT_2 MFP_CFG(GPIO32, AF3) -#define GPIO33_ULPI_DATA_OUT_3 MFP_CFG(GPIO33, AF3) -#define GPIO34_ULPI_DATA_OUT_4 MFP_CFG(GPIO34, AF3) -#define GPIO35_ULPI_DATA_OUT_5 MFP_CFG(GPIO35, AF3) -#define GPIO36_ULPI_DATA_OUT_6 MFP_CFG(GPIO36, AF3) -#define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3) -#define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1) - -#define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, AF0, DS01X) -#define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, AF0, DS01X) -#define ULPI_STP MFP_CFG_DRV(ULPI_STP, AF0, DS01X) -#endif /* CONFIG_CPU_PXA310 */ - -#endif /* __ASM_ARCH_MFP_PXA300_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa320.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa320.h deleted file mode 100644 index 3ce4682e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa320.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/mfp-pxa320.h - * - * PXA320 specific MFP configuration definitions - * - * Copyright (C) 2007 Marvell International Ltd. - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_MFP_PXA320_H -#define __ASM_ARCH_MFP_PXA320_H - -#include <mach/mfp-pxa3xx.h> - -/* GPIO */ -#define GPIO46_GPIO MFP_CFG(GPIO46, AF0) -#define GPIO49_GPIO MFP_CFG(GPIO49, AF0) -#define GPIO50_GPIO MFP_CFG(GPIO50, AF0) -#define GPIO51_GPIO MFP_CFG(GPIO51, AF0) -#define GPIO52_GPIO MFP_CFG(GPIO52, AF0) - -#define GPIO7_2_GPIO MFP_CFG(GPIO7_2, AF0) -#define GPIO8_2_GPIO MFP_CFG(GPIO8_2, AF0) -#define GPIO9_2_GPIO MFP_CFG(GPIO9_2, AF0) -#define GPIO10_2_GPIO MFP_CFG(GPIO10_2, AF0) -#define GPIO11_2_GPIO MFP_CFG(GPIO11_2, AF0) -#define GPIO12_2_GPIO MFP_CFG(GPIO12_2, AF0) -#define GPIO13_2_GPIO MFP_CFG(GPIO13_2, AF0) -#define GPIO14_2_GPIO MFP_CFG(GPIO14_2, AF0) -#define GPIO15_2_GPIO MFP_CFG(GPIO15_2, AF0) -#define GPIO16_2_GPIO MFP_CFG(GPIO16_2, AF0) -#define GPIO17_2_GPIO MFP_CFG(GPIO17_2, AF0) - -/* Chip Select */ -#define GPIO3_nCS2 MFP_CFG(GPIO3, AF1) -#define GPIO4_nCS3 MFP_CFG(GPIO4, AF1) - -/* AC97 */ -#define GPIO34_AC97_SYSCLK MFP_CFG(GPIO34, AF1) -#define GPIO39_AC97_BITCLK MFP_CFG(GPIO39, AF1) -#define GPIO40_AC97_nACRESET MFP_CFG(GPIO40, AF1) -#define GPIO35_AC97_SDATA_IN_0 MFP_CFG(GPIO35, AF1) -#define GPIO36_AC97_SDATA_IN_1 MFP_CFG(GPIO36, AF1) -#define GPIO32_AC97_SDATA_IN_2 MFP_CFG(GPIO32, AF2) -#define GPIO33_AC97_SDATA_IN_3 MFP_CFG(GPIO33, AF2) -#define GPIO11_AC97_SDATA_IN_2 MFP_CFG(GPIO11, AF3) -#define GPIO12_AC97_SDATA_IN_3 MFP_CFG(GPIO12, AF3) -#define GPIO37_AC97_SDATA_OUT MFP_CFG(GPIO37, AF1) -#define GPIO38_AC97_SYNC MFP_CFG(GPIO38, AF1) - -/* I2C */ -#define GPIO32_I2C_SCL MFP_CFG_LPM(GPIO32, AF1, PULL_HIGH) -#define GPIO33_I2C_SDA MFP_CFG_LPM(GPIO33, AF1, PULL_HIGH) - -/* QCI */ -#define GPIO49_CI_DD_0 MFP_CFG_DRV(GPIO49, AF1, DS04X) -#define GPIO50_CI_DD_1 MFP_CFG_DRV(GPIO50, AF1, DS04X) -#define GPIO51_CI_DD_2 MFP_CFG_DRV(GPIO51, AF1, DS04X) -#define GPIO52_CI_DD_3 MFP_CFG_DRV(GPIO52, AF1, DS04X) -#define GPIO53_CI_DD_4 MFP_CFG_DRV(GPIO53, AF1, DS04X) -#define GPIO54_CI_DD_5 MFP_CFG_DRV(GPIO54, AF1, DS04X) -#define GPIO55_CI_DD_6 MFP_CFG_DRV(GPIO55, AF1, DS04X) -#define GPIO56_CI_DD_7 MFP_CFG_DRV(GPIO56, AF0, DS04X) -#define GPIO57_CI_DD_8 MFP_CFG_DRV(GPIO57, AF1, DS04X) -#define GPIO58_CI_DD_9 MFP_CFG_DRV(GPIO58, AF1, DS04X) -#define GPIO59_CI_MCLK MFP_CFG_DRV(GPIO59, AF0, DS04X) -#define GPIO60_CI_PCLK MFP_CFG_DRV(GPIO60, AF0, DS04X) -#define GPIO61_CI_HSYNC MFP_CFG_DRV(GPIO61, AF0, DS04X) -#define GPIO62_CI_VSYNC MFP_CFG_DRV(GPIO62, AF0, DS04X) - -#define GPIO31_CIR_OUT MFP_CFG(GPIO31, AF5) - -#define GPIO0_2_CLK_EXT MFP_CFG(GPIO0_2, AF3) -#define GPIO0_DRQ MFP_CFG(GPIO0, AF2) -#define GPIO11_EXT_SYNC0 MFP_CFG(GPIO11, AF5) -#define GPIO12_EXT_SYNC1 MFP_CFG(GPIO12, AF6) -#define GPIO0_2_HZ_CLK MFP_CFG(GPIO0_2, AF1) -#define GPIO14_HZ_CLK MFP_CFG(GPIO14, AF4) -#define GPIO30_ICP_RXD MFP_CFG(GPIO30, AF1) -#define GPIO31_ICP_TXD MFP_CFG(GPIO31, AF1) - -#define GPIO83_KP_DKIN_0 MFP_CFG_LPM(GPIO83, AF3, FLOAT) -#define GPIO84_KP_DKIN_1 MFP_CFG_LPM(GPIO84, AF3, FLOAT) -#define GPIO85_KP_DKIN_2 MFP_CFG_LPM(GPIO85, AF3, FLOAT) -#define GPIO86_KP_DKIN_3 MFP_CFG_LPM(GPIO86, AF3, FLOAT) - -#define GPIO105_KP_DKIN_0 MFP_CFG_LPM(GPIO105, AF2, FLOAT) -#define GPIO106_KP_DKIN_1 MFP_CFG_LPM(GPIO106, AF2, FLOAT) -#define GPIO107_KP_DKIN_2 MFP_CFG_LPM(GPIO107, AF2, FLOAT) -#define GPIO108_KP_DKIN_3 MFP_CFG_LPM(GPIO108, AF2, FLOAT) -#define GPIO109_KP_DKIN_4 MFP_CFG_LPM(GPIO109, AF2, FLOAT) -#define GPIO110_KP_DKIN_5 MFP_CFG_LPM(GPIO110, AF2, FLOAT) -#define GPIO111_KP_DKIN_6 MFP_CFG_LPM(GPIO111, AF2, FLOAT) -#define GPIO112_KP_DKIN_7 MFP_CFG_LPM(GPIO112, AF2, FLOAT) - -#define GPIO113_KP_DKIN_0 MFP_CFG_LPM(GPIO113, AF2, FLOAT) -#define GPIO114_KP_DKIN_1 MFP_CFG_LPM(GPIO114, AF2, FLOAT) -#define GPIO115_KP_DKIN_2 MFP_CFG_LPM(GPIO115, AF2, FLOAT) -#define GPIO116_KP_DKIN_3 MFP_CFG_LPM(GPIO116, AF2, FLOAT) -#define GPIO117_KP_DKIN_4 MFP_CFG_LPM(GPIO117, AF2, FLOAT) -#define GPIO118_KP_DKIN_5 MFP_CFG_LPM(GPIO118, AF2, FLOAT) -#define GPIO119_KP_DKIN_6 MFP_CFG_LPM(GPIO119, AF2, FLOAT) -#define GPIO120_KP_DKIN_7 MFP_CFG_LPM(GPIO120, AF2, FLOAT) - -#define GPIO127_KP_DKIN_0 MFP_CFG_LPM(GPIO127, AF2, FLOAT) -#define GPIO126_KP_DKIN_1 MFP_CFG_LPM(GPIO126, AF2, FLOAT) - -#define GPIO2_2_KP_DKIN_0 MFP_CFG_LPM(GPIO2_2, AF2, FLOAT) -#define GPIO3_2_KP_DKIN_1 MFP_CFG_LPM(GPIO3_2, AF2, FLOAT) -#define GPIO125_KP_DKIN_2 MFP_CFG_LPM(GPIO125, AF2, FLOAT) -#define GPIO124_KP_DKIN_3 MFP_CFG_LPM(GPIO124, AF2, FLOAT) -#define GPIO123_KP_DKIN_4 MFP_CFG_LPM(GPIO123, AF2, FLOAT) -#define GPIO122_KP_DKIN_5 MFP_CFG_LPM(GPIO122, AF2, FLOAT) -#define GPIO121_KP_DKIN_6 MFP_CFG_LPM(GPIO121, AF2, FLOAT) -#define GPIO4_2_KP_DKIN_7 MFP_CFG_LPM(GPIO4_2, AF2, FLOAT) - -#define GPIO113_KP_MKIN_0 MFP_CFG_LPM(GPIO113, AF1, FLOAT) -#define GPIO114_KP_MKIN_1 MFP_CFG_LPM(GPIO114, AF1, FLOAT) -#define GPIO115_KP_MKIN_2 MFP_CFG_LPM(GPIO115, AF1, FLOAT) -#define GPIO116_KP_MKIN_3 MFP_CFG_LPM(GPIO116, AF1, FLOAT) -#define GPIO117_KP_MKIN_4 MFP_CFG_LPM(GPIO117, AF1, FLOAT) -#define GPIO118_KP_MKIN_5 MFP_CFG_LPM(GPIO118, AF1, FLOAT) -#define GPIO119_KP_MKIN_6 MFP_CFG_LPM(GPIO119, AF1, FLOAT) -#define GPIO120_KP_MKIN_7 MFP_CFG_LPM(GPIO120, AF1, FLOAT) - -#define GPIO83_KP_MKOUT_0 MFP_CFG_LPM(GPIO83, AF2, DRIVE_HIGH) -#define GPIO84_KP_MKOUT_1 MFP_CFG_LPM(GPIO84, AF2, DRIVE_HIGH) -#define GPIO85_KP_MKOUT_2 MFP_CFG_LPM(GPIO85, AF2, DRIVE_HIGH) -#define GPIO86_KP_MKOUT_3 MFP_CFG_LPM(GPIO86, AF2, DRIVE_HIGH) -#define GPIO13_KP_MKOUT_4 MFP_CFG_LPM(GPIO13, AF3, DRIVE_HIGH) -#define GPIO14_KP_MKOUT_5 MFP_CFG_LPM(GPIO14, AF3, DRIVE_HIGH) - -#define GPIO121_KP_MKOUT_0 MFP_CFG_LPM(GPIO121, AF1, DRIVE_HIGH) -#define GPIO122_KP_MKOUT_1 MFP_CFG_LPM(GPIO122, AF1, DRIVE_HIGH) -#define GPIO123_KP_MKOUT_2 MFP_CFG_LPM(GPIO123, AF1, DRIVE_HIGH) -#define GPIO124_KP_MKOUT_3 MFP_CFG_LPM(GPIO124, AF1, DRIVE_HIGH) -#define GPIO125_KP_MKOUT_4 MFP_CFG_LPM(GPIO125, AF1, DRIVE_HIGH) -#define GPIO126_KP_MKOUT_5 MFP_CFG_LPM(GPIO126, AF1, DRIVE_HIGH) -#define GPIO127_KP_MKOUT_6 MFP_CFG_LPM(GPIO127, AF1, DRIVE_HIGH) -#define GPIO5_2_KP_MKOUT_7 MFP_CFG_LPM(GPIO5_2, AF1, DRIVE_HIGH) - -/* LCD */ -#define GPIO6_2_LCD_LDD_0 MFP_CFG_DRV(GPIO6_2, AF1, DS01X) -#define GPIO7_2_LCD_LDD_1 MFP_CFG_DRV(GPIO7_2, AF1, DS01X) -#define GPIO8_2_LCD_LDD_2 MFP_CFG_DRV(GPIO8_2, AF1, DS01X) -#define GPIO9_2_LCD_LDD_3 MFP_CFG_DRV(GPIO9_2, AF1, DS01X) -#define GPIO10_2_LCD_LDD_4 MFP_CFG_DRV(GPIO10_2, AF1, DS01X) -#define GPIO11_2_LCD_LDD_5 MFP_CFG_DRV(GPIO11_2, AF1, DS01X) -#define GPIO12_2_LCD_LDD_6 MFP_CFG_DRV(GPIO12_2, AF1, DS01X) -#define GPIO13_2_LCD_LDD_7 MFP_CFG_DRV(GPIO13_2, AF1, DS01X) -#define GPIO63_LCD_LDD_8 MFP_CFG_DRV(GPIO63, AF1, DS01X) -#define GPIO64_LCD_LDD_9 MFP_CFG_DRV(GPIO64, AF1, DS01X) -#define GPIO65_LCD_LDD_10 MFP_CFG_DRV(GPIO65, AF1, DS01X) -#define GPIO66_LCD_LDD_11 MFP_CFG_DRV(GPIO66, AF1, DS01X) -#define GPIO67_LCD_LDD_12 MFP_CFG_DRV(GPIO67, AF1, DS01X) -#define GPIO68_LCD_LDD_13 MFP_CFG_DRV(GPIO68, AF1, DS01X) -#define GPIO69_LCD_LDD_14 MFP_CFG_DRV(GPIO69, AF1, DS01X) -#define GPIO70_LCD_LDD_15 MFP_CFG_DRV(GPIO70, AF1, DS01X) -#define GPIO71_LCD_LDD_16 MFP_CFG_DRV(GPIO71, AF1, DS01X) -#define GPIO72_LCD_LDD_17 MFP_CFG_DRV(GPIO72, AF1, DS01X) -#define GPIO73_LCD_CS_N MFP_CFG_DRV(GPIO73, AF2, DS01X) -#define GPIO74_LCD_VSYNC MFP_CFG_DRV(GPIO74, AF2, DS01X) -#define GPIO14_2_LCD_FCLK MFP_CFG_DRV(GPIO14_2, AF1, DS01X) -#define GPIO15_2_LCD_LCLK MFP_CFG_DRV(GPIO15_2, AF1, DS01X) -#define GPIO16_2_LCD_PCLK MFP_CFG_DRV(GPIO16_2, AF1, DS01X) -#define GPIO17_2_LCD_BIAS MFP_CFG_DRV(GPIO17_2, AF1, DS01X) -#define GPIO64_LCD_VSYNC MFP_CFG_DRV(GPIO64, AF2, DS01X) -#define GPIO63_LCD_CS_N MFP_CFG_DRV(GPIO63, AF2, DS01X) - -#define GPIO6_2_MLCD_DD_0 MFP_CFG_DRV(GPIO6_2, AF7, DS08X) -#define GPIO7_2_MLCD_DD_1 MFP_CFG_DRV(GPIO7_2, AF7, DS08X) -#define GPIO8_2_MLCD_DD_2 MFP_CFG_DRV(GPIO8_2, AF7, DS08X) -#define GPIO9_2_MLCD_DD_3 MFP_CFG_DRV(GPIO9_2, AF7, DS08X) -#define GPIO10_2_MLCD_DD_4 MFP_CFG_DRV(GPIO10_2, AF7, DS08X) -#define GPIO11_2_MLCD_DD_5 MFP_CFG_DRV(GPIO11_2, AF7, DS08X) -#define GPIO12_2_MLCD_DD_6 MFP_CFG_DRV(GPIO12_2, AF7, DS08X) -#define GPIO13_2_MLCD_DD_7 MFP_CFG_DRV(GPIO13_2, AF7, DS08X) -#define GPIO63_MLCD_DD_8 MFP_CFG_DRV(GPIO63, AF7, DS08X) -#define GPIO64_MLCD_DD_9 MFP_CFG_DRV(GPIO64, AF7, DS08X) -#define GPIO65_MLCD_DD_10 MFP_CFG_DRV(GPIO65, AF7, DS08X) -#define GPIO66_MLCD_DD_11 MFP_CFG_DRV(GPIO66, AF7, DS08X) -#define GPIO67_MLCD_DD_12 MFP_CFG_DRV(GPIO67, AF7, DS08X) -#define GPIO68_MLCD_DD_13 MFP_CFG_DRV(GPIO68, AF7, DS08X) -#define GPIO69_MLCD_DD_14 MFP_CFG_DRV(GPIO69, AF7, DS08X) -#define GPIO70_MLCD_DD_15 MFP_CFG_DRV(GPIO70, AF7, DS08X) -#define GPIO71_MLCD_DD_16 MFP_CFG_DRV(GPIO71, AF7, DS08X) -#define GPIO72_MLCD_DD_17 MFP_CFG_DRV(GPIO72, AF7, DS08X) -#define GPIO73_MLCD_CS MFP_CFG_DRV(GPIO73, AF7, DS08X) -#define GPIO74_MLCD_VSYNC MFP_CFG_DRV(GPIO74, AF7, DS08X) -#define GPIO14_2_MLCD_FCLK MFP_CFG_DRV(GPIO14_2, AF7, DS08X) -#define GPIO15_2_MLCD_LCLK MFP_CFG_DRV(GPIO15_2, AF7, DS08X) -#define GPIO16_2_MLCD_PCLK MFP_CFG_DRV(GPIO16_2, AF7, DS08X) -#define GPIO17_2_MLCD_BIAS MFP_CFG_DRV(GPIO17_2, AF7, DS08X) - -/* MMC1 */ -#define GPIO9_MMC1_CMD MFP_CFG_LPM(GPIO9, AF4, DRIVE_HIGH) -#define GPIO22_MMC1_CLK MFP_CFG_LPM(GPIO22, AF4, DRIVE_HIGH) -#define GPIO23_MMC1_CMD MFP_CFG_LPM(GPIO23, AF4, DRIVE_HIGH) -#define GPIO30_MMC1_CLK MFP_CFG_LPM(GPIO30, AF4, DRIVE_HIGH) -#define GPIO31_MMC1_CMD MFP_CFG_LPM(GPIO31, AF4, DRIVE_HIGH) -#define GPIO5_MMC1_DAT0 MFP_CFG_LPM(GPIO5, AF4, DRIVE_HIGH) -#define GPIO6_MMC1_DAT1 MFP_CFG_LPM(GPIO6, AF4, DRIVE_HIGH) -#define GPIO7_MMC1_DAT2 MFP_CFG_LPM(GPIO7, AF4, DRIVE_HIGH) -#define GPIO8_MMC1_DAT3 MFP_CFG_LPM(GPIO8, AF4, DRIVE_HIGH) -#define GPIO18_MMC1_DAT0 MFP_CFG_LPM(GPIO18, AF4, DRIVE_HIGH) -#define GPIO19_MMC1_DAT1 MFP_CFG_LPM(GPIO19, AF4, DRIVE_HIGH) -#define GPIO20_MMC1_DAT2 MFP_CFG_LPM(GPIO20, AF4, DRIVE_HIGH) -#define GPIO21_MMC1_DAT3 MFP_CFG_LPM(GPIO21, AF4, DRIVE_HIGH) - -#define GPIO28_MMC2_CLK MFP_CFG_LPM(GPIO28, AF4, PULL_HIGH) -#define GPIO29_MMC2_CMD MFP_CFG_LPM(GPIO29, AF4, PULL_HIGH) -#define GPIO30_MMC2_CLK MFP_CFG_LPM(GPIO30, AF3, PULL_HIGH) -#define GPIO31_MMC2_CMD MFP_CFG_LPM(GPIO31, AF3, PULL_HIGH) -#define GPIO79_MMC2_CLK MFP_CFG_LPM(GPIO79, AF4, PULL_HIGH) -#define GPIO80_MMC2_CMD MFP_CFG_LPM(GPIO80, AF4, PULL_HIGH) - -#define GPIO5_MMC2_DAT0 MFP_CFG_LPM(GPIO5, AF2, PULL_HIGH) -#define GPIO6_MMC2_DAT1 MFP_CFG_LPM(GPIO6, AF2, PULL_HIGH) -#define GPIO7_MMC2_DAT2 MFP_CFG_LPM(GPIO7, AF2, PULL_HIGH) -#define GPIO8_MMC2_DAT3 MFP_CFG_LPM(GPIO8, AF2, PULL_HIGH) -#define GPIO24_MMC2_DAT0 MFP_CFG_LPM(GPIO24, AF4, PULL_HIGH) -#define GPIO75_MMC2_DAT0 MFP_CFG_LPM(GPIO75, AF4, PULL_HIGH) -#define GPIO25_MMC2_DAT1 MFP_CFG_LPM(GPIO25, AF4, PULL_HIGH) -#define GPIO76_MMC2_DAT1 MFP_CFG_LPM(GPIO76, AF4, PULL_HIGH) -#define GPIO26_MMC2_DAT2 MFP_CFG_LPM(GPIO26, AF4, PULL_HIGH) -#define GPIO77_MMC2_DAT2 MFP_CFG_LPM(GPIO77, AF4, PULL_HIGH) -#define GPIO27_MMC2_DAT3 MFP_CFG_LPM(GPIO27, AF4, PULL_HIGH) -#define GPIO78_MMC2_DAT3 MFP_CFG_LPM(GPIO78, AF4, PULL_HIGH) - -/* 1-Wire */ -#define GPIO14_ONE_WIRE MFP_CFG_LPM(GPIO14, AF5, FLOAT) -#define GPIO0_2_ONE_WIRE MFP_CFG_LPM(GPIO0_2, AF2, FLOAT) - -/* SSP1 */ -#define GPIO87_SSP1_EXTCLK MFP_CFG(GPIO87, AF1) -#define GPIO88_SSP1_SYSCLK MFP_CFG(GPIO88, AF1) -#define GPIO83_SSP1_SCLK MFP_CFG(GPIO83, AF1) -#define GPIO84_SSP1_SFRM MFP_CFG(GPIO84, AF1) -#define GPIO85_SSP1_RXD MFP_CFG(GPIO85, AF6) -#define GPIO85_SSP1_TXD MFP_CFG(GPIO85, AF1) -#define GPIO86_SSP1_RXD MFP_CFG(GPIO86, AF1) -#define GPIO86_SSP1_TXD MFP_CFG(GPIO86, AF6) - -/* SSP2 */ -#define GPIO39_SSP2_EXTCLK MFP_CFG(GPIO39, AF2) -#define GPIO40_SSP2_SYSCLK MFP_CFG(GPIO40, AF2) -#define GPIO12_SSP2_SCLK MFP_CFG(GPIO12, AF2) -#define GPIO35_SSP2_SCLK MFP_CFG(GPIO35, AF2) -#define GPIO36_SSP2_SFRM MFP_CFG(GPIO36, AF2) -#define GPIO37_SSP2_RXD MFP_CFG(GPIO37, AF5) -#define GPIO37_SSP2_TXD MFP_CFG(GPIO37, AF2) -#define GPIO38_SSP2_RXD MFP_CFG(GPIO38, AF2) -#define GPIO38_SSP2_TXD MFP_CFG(GPIO38, AF5) - -#define GPIO69_SSP3_SCLK MFP_CFG_X(GPIO69, AF2, DS08X, FLOAT) -#define GPIO70_SSP3_FRM MFP_CFG_X(GPIO70, AF2, DS08X, DRIVE_LOW) -#define GPIO89_SSP3_SCLK MFP_CFG_X(GPIO89, AF1, DS08X, FLOAT) -#define GPIO90_SSP3_FRM MFP_CFG_X(GPIO90, AF1, DS08X, DRIVE_LOW) -#define GPIO71_SSP3_RXD MFP_CFG_X(GPIO71, AF5, DS08X, FLOAT) -#define GPIO71_SSP3_TXD MFP_CFG_X(GPIO71, AF2, DS08X, DRIVE_LOW) -#define GPIO72_SSP3_RXD MFP_CFG_X(GPIO72, AF2, DS08X, FLOAT) -#define GPIO72_SSP3_TXD MFP_CFG_X(GPIO72, AF5, DS08X, DRIVE_LOW) -#define GPIO91_SSP3_RXD MFP_CFG_X(GPIO91, AF5, DS08X, FLOAT) -#define GPIO91_SSP3_TXD MFP_CFG_X(GPIO91, AF1, DS08X, DRIVE_LOW) -#define GPIO92_SSP3_RXD MFP_CFG_X(GPIO92, AF1, DS08X, FLOAT) -#define GPIO92_SSP3_TXD MFP_CFG_X(GPIO92, AF5, DS08X, DRIVE_LOW) - -#define GPIO93_SSP4_SCLK MFP_CFG_LPM(GPIO93, AF1, PULL_HIGH) -#define GPIO94_SSP4_FRM MFP_CFG_LPM(GPIO94, AF1, PULL_HIGH) -#define GPIO94_SSP4_RXD MFP_CFG_LPM(GPIO94, AF5, PULL_HIGH) -#define GPIO95_SSP4_RXD MFP_CFG_LPM(GPIO95, AF5, PULL_HIGH) -#define GPIO95_SSP4_TXD MFP_CFG_LPM(GPIO95, AF1, PULL_HIGH) -#define GPIO96_SSP4_RXD MFP_CFG_LPM(GPIO96, AF1, PULL_HIGH) -#define GPIO96_SSP4_TXD MFP_CFG_LPM(GPIO96, AF5, PULL_HIGH) - -/* UART1 */ -#define GPIO41_UART1_RXD MFP_CFG_LPM(GPIO41, AF2, FLOAT) -#define GPIO41_UART1_TXD MFP_CFG_LPM(GPIO41, AF4, FLOAT) -#define GPIO42_UART1_RXD MFP_CFG_LPM(GPIO42, AF4, FLOAT) -#define GPIO42_UART1_TXD MFP_CFG_LPM(GPIO42, AF2, FLOAT) -#define GPIO75_UART1_RXD MFP_CFG_LPM(GPIO75, AF1, FLOAT) -#define GPIO76_UART1_RXD MFP_CFG_LPM(GPIO76, AF3, FLOAT) -#define GPIO76_UART1_TXD MFP_CFG_LPM(GPIO76, AF1, FLOAT) -#define GPIO97_UART1_RXD MFP_CFG_LPM(GPIO97, AF1, FLOAT) -#define GPIO97_UART1_TXD MFP_CFG_LPM(GPIO97, AF6, FLOAT) -#define GPIO98_UART1_RXD MFP_CFG_LPM(GPIO98, AF6, FLOAT) -#define GPIO98_UART1_TXD MFP_CFG_LPM(GPIO98, AF1, FLOAT) -#define GPIO43_UART1_CTS MFP_CFG_LPM(GPIO43, AF2, FLOAT) -#define GPIO43_UART1_RTS MFP_CFG_LPM(GPIO43, AF4, FLOAT) -#define GPIO48_UART1_CTS MFP_CFG_LPM(GPIO48, AF4, FLOAT) -#define GPIO48_UART1_RTS MFP_CFG_LPM(GPIO48, AF2, FLOAT) -#define GPIO77_UART1_CTS MFP_CFG_LPM(GPIO77, AF1, FLOAT) -#define GPIO82_UART1_RTS MFP_CFG_LPM(GPIO82, AF1, FLOAT) -#define GPIO82_UART1_CTS MFP_CFG_LPM(GPIO82, AF3, FLOAT) -#define GPIO99_UART1_CTS MFP_CFG_LPM(GPIO99, AF1, FLOAT) -#define GPIO99_UART1_RTS MFP_CFG_LPM(GPIO99, AF6, FLOAT) -#define GPIO104_UART1_CTS MFP_CFG_LPM(GPIO104, AF6, FLOAT) -#define GPIO104_UART1_RTS MFP_CFG_LPM(GPIO104, AF1, FLOAT) -#define GPIO45_UART1_DTR MFP_CFG_LPM(GPIO45, AF4, FLOAT) -#define GPIO45_UART1_DSR MFP_CFG_LPM(GPIO45, AF2, FLOAT) -#define GPIO47_UART1_DTR MFP_CFG_LPM(GPIO47, AF2, FLOAT) -#define GPIO47_UART1_DSR MFP_CFG_LPM(GPIO47, AF4, FLOAT) -#define GPIO79_UART1_DSR MFP_CFG_LPM(GPIO79, AF1, FLOAT) -#define GPIO81_UART1_DTR MFP_CFG_LPM(GPIO81, AF1, FLOAT) -#define GPIO81_UART1_DSR MFP_CFG_LPM(GPIO81, AF3, FLOAT) -#define GPIO101_UART1_DTR MFP_CFG_LPM(GPIO101, AF6, FLOAT) -#define GPIO101_UART1_DSR MFP_CFG_LPM(GPIO101, AF1, FLOAT) -#define GPIO103_UART1_DTR MFP_CFG_LPM(GPIO103, AF1, FLOAT) -#define GPIO103_UART1_DSR MFP_CFG_LPM(GPIO103, AF6, FLOAT) -#define GPIO44_UART1_DCD MFP_CFG_LPM(GPIO44, AF2, FLOAT) -#define GPIO78_UART1_DCD MFP_CFG_LPM(GPIO78, AF1, FLOAT) -#define GPIO100_UART1_DCD MFP_CFG_LPM(GPIO100, AF1, FLOAT) -#define GPIO46_UART1_RI MFP_CFG_LPM(GPIO46, AF2, FLOAT) -#define GPIO80_UART1_RI MFP_CFG_LPM(GPIO80, AF1, FLOAT) -#define GPIO102_UART1_RI MFP_CFG_LPM(GPIO102, AF1, FLOAT) - -/* UART2 */ -#define GPIO109_UART2_CTS MFP_CFG_LPM(GPIO109, AF3, FLOAT) -#define GPIO109_UART2_RTS MFP_CFG_LPM(GPIO109, AF1, FLOAT) -#define GPIO112_UART2_CTS MFP_CFG_LPM(GPIO112, AF1, FLOAT) -#define GPIO112_UART2_RTS MFP_CFG_LPM(GPIO112, AF3, FLOAT) -#define GPIO110_UART2_RXD MFP_CFG_LPM(GPIO110, AF1, FLOAT) -#define GPIO110_UART2_TXD MFP_CFG_LPM(GPIO110, AF3, FLOAT) -#define GPIO111_UART2_RXD MFP_CFG_LPM(GPIO111, AF3, FLOAT) -#define GPIO111_UART2_TXD MFP_CFG_LPM(GPIO111, AF1, FLOAT) - -/* UART3 */ -#define GPIO89_UART3_CTS MFP_CFG_LPM(GPIO89, AF2, FLOAT) -#define GPIO89_UART3_RTS MFP_CFG_LPM(GPIO89, AF4, FLOAT) -#define GPIO90_UART3_CTS MFP_CFG_LPM(GPIO90, AF4, FLOAT) -#define GPIO90_UART3_RTS MFP_CFG_LPM(GPIO90, AF2, FLOAT) -#define GPIO105_UART3_CTS MFP_CFG_LPM(GPIO105, AF1, FLOAT) -#define GPIO105_UART3_RTS MFP_CFG_LPM(GPIO105, AF3, FLOAT) -#define GPIO106_UART3_CTS MFP_CFG_LPM(GPIO106, AF3, FLOAT) -#define GPIO106_UART3_RTS MFP_CFG_LPM(GPIO106, AF1, FLOAT) -#define GPIO30_UART3_RXD MFP_CFG_LPM(GPIO30, AF2, FLOAT) -#define GPIO30_UART3_TXD MFP_CFG_LPM(GPIO30, AF6, FLOAT) -#define GPIO31_UART3_RXD MFP_CFG_LPM(GPIO31, AF6, FLOAT) -#define GPIO31_UART3_TXD MFP_CFG_LPM(GPIO31, AF2, FLOAT) -#define GPIO91_UART3_RXD MFP_CFG_LPM(GPIO91, AF4, FLOAT) -#define GPIO91_UART3_TXD MFP_CFG_LPM(GPIO91, AF2, FLOAT) -#define GPIO92_UART3_RXD MFP_CFG_LPM(GPIO92, AF2, FLOAT) -#define GPIO92_UART3_TXD MFP_CFG_LPM(GPIO92, AF4, FLOAT) -#define GPIO107_UART3_RXD MFP_CFG_LPM(GPIO107, AF3, FLOAT) -#define GPIO107_UART3_TXD MFP_CFG_LPM(GPIO107, AF1, FLOAT) -#define GPIO108_UART3_RXD MFP_CFG_LPM(GPIO108, AF1, FLOAT) -#define GPIO108_UART3_TXD MFP_CFG_LPM(GPIO108, AF3, FLOAT) - - -/* USB 2.0 UTMI */ -#define GPIO10_UTM_CLK MFP_CFG(GPIO10, AF1) -#define GPIO36_U2D_RXERROR MFP_CFG(GPIO36, AF3) -#define GPIO60_U2D_RXERROR MFP_CFG(GPIO60, AF1) -#define GPIO87_U2D_RXERROR MFP_CFG(GPIO87, AF5) -#define GPIO34_UTM_RXVALID MFP_CFG(GPIO34, AF3) -#define GPIO58_UTM_RXVALID MFP_CFG(GPIO58, AF2) -#define GPIO85_UTM_RXVALID MFP_CFG(GPIO85, AF5) -#define GPIO35_UTM_RXACTIVE MFP_CFG(GPIO35, AF3) -#define GPIO59_UTM_RXACTIVE MFP_CFG(GPIO59, AF1) -#define GPIO86_UTM_RXACTIVE MFP_CFG(GPIO86, AF5) -#define GPIO73_UTM_TXREADY MFP_CFG(GPIO73, AF1) -#define GPIO68_UTM_LINESTATE_0 MFP_CFG(GPIO68, AF3) -#define GPIO90_UTM_LINESTATE_0 MFP_CFG(GPIO90, AF3) -#define GPIO102_UTM_LINESTATE_0 MFP_CFG(GPIO102, AF3) -#define GPIO107_UTM_LINESTATE_0 MFP_CFG(GPIO107, AF4) -#define GPIO69_UTM_LINESTATE_1 MFP_CFG(GPIO69, AF3) -#define GPIO91_UTM_LINESTATE_1 MFP_CFG(GPIO91, AF3) -#define GPIO103_UTM_LINESTATE_1 MFP_CFG(GPIO103, AF3) - -#define GPIO41_U2D_PHYDATA_0 MFP_CFG(GPIO41, AF3) -#define GPIO42_U2D_PHYDATA_1 MFP_CFG(GPIO42, AF3) -#define GPIO43_U2D_PHYDATA_2 MFP_CFG(GPIO43, AF3) -#define GPIO44_U2D_PHYDATA_3 MFP_CFG(GPIO44, AF3) -#define GPIO45_U2D_PHYDATA_4 MFP_CFG(GPIO45, AF3) -#define GPIO46_U2D_PHYDATA_5 MFP_CFG(GPIO46, AF3) -#define GPIO47_U2D_PHYDATA_6 MFP_CFG(GPIO47, AF3) -#define GPIO48_U2D_PHYDATA_7 MFP_CFG(GPIO48, AF3) - -#define GPIO49_U2D_PHYDATA_0 MFP_CFG(GPIO49, AF3) -#define GPIO50_U2D_PHYDATA_1 MFP_CFG(GPIO50, AF3) -#define GPIO51_U2D_PHYDATA_2 MFP_CFG(GPIO51, AF3) -#define GPIO52_U2D_PHYDATA_3 MFP_CFG(GPIO52, AF3) -#define GPIO53_U2D_PHYDATA_4 MFP_CFG(GPIO53, AF3) -#define GPIO54_U2D_PHYDATA_5 MFP_CFG(GPIO54, AF3) -#define GPIO55_U2D_PHYDATA_6 MFP_CFG(GPIO55, AF3) -#define GPIO56_U2D_PHYDATA_7 MFP_CFG(GPIO56, AF3) - -#define GPIO37_U2D_OPMODE0 MFP_CFG(GPIO37, AF4) -#define GPIO61_U2D_OPMODE0 MFP_CFG(GPIO61, AF2) -#define GPIO88_U2D_OPMODE0 MFP_CFG(GPIO88, AF7) - -#define GPIO38_U2D_OPMODE1 MFP_CFG(GPIO38, AF4) -#define GPIO62_U2D_OPMODE1 MFP_CFG(GPIO62, AF2) -#define GPIO104_U2D_OPMODE1 MFP_CFG(GPIO104, AF4) -#define GPIO108_U2D_OPMODE1 MFP_CFG(GPIO108, AF5) - -#define GPIO74_U2D_RESET MFP_CFG(GPIO74, AF1) -#define GPIO93_U2D_RESET MFP_CFG(GPIO93, AF2) -#define GPIO98_U2D_RESET MFP_CFG(GPIO98, AF3) - -#define GPIO67_U2D_SUSPEND MFP_CFG(GPIO67, AF3) -#define GPIO96_U2D_SUSPEND MFP_CFG(GPIO96, AF2) -#define GPIO101_U2D_SUSPEND MFP_CFG(GPIO101, AF3) - -#define GPIO66_U2D_TERM_SEL MFP_CFG(GPIO66, AF5) -#define GPIO95_U2D_TERM_SEL MFP_CFG(GPIO95, AF3) -#define GPIO97_U2D_TERM_SEL MFP_CFG(GPIO97, AF7) -#define GPIO100_U2D_TERM_SEL MFP_CFG(GPIO100, AF5) - -#define GPIO39_U2D_TXVALID MFP_CFG(GPIO39, AF4) -#define GPIO70_U2D_TXVALID MFP_CFG(GPIO70, AF5) -#define GPIO83_U2D_TXVALID MFP_CFG(GPIO83, AF7) - -#define GPIO65_U2D_XCVR_SEL MFP_CFG(GPIO65, AF5) -#define GPIO94_U2D_XCVR_SEL MFP_CFG(GPIO94, AF3) -#define GPIO99_U2D_XCVR_SEL MFP_CFG(GPIO99, AF5) - -/* USB Host 1.1 */ -#define GPIO2_2_USBH_PEN MFP_CFG(GPIO2_2, AF1) -#define GPIO3_2_USBH_PWR MFP_CFG(GPIO3_2, AF1) - -/* USB P2 */ -#define GPIO97_USB_P2_2 MFP_CFG(GPIO97, AF2) -#define GPIO97_USB_P2_6 MFP_CFG(GPIO97, AF4) -#define GPIO98_USB_P2_2 MFP_CFG(GPIO98, AF4) -#define GPIO98_USB_P2_6 MFP_CFG(GPIO98, AF2) -#define GPIO99_USB_P2_1 MFP_CFG(GPIO99, AF2) -#define GPIO100_USB_P2_4 MFP_CFG(GPIO100, AF2) -#define GPIO101_USB_P2_8 MFP_CFG(GPIO101, AF2) -#define GPIO102_USB_P2_3 MFP_CFG(GPIO102, AF2) -#define GPIO103_USB_P2_5 MFP_CFG(GPIO103, AF2) -#define GPIO104_USB_P2_7 MFP_CFG(GPIO104, AF2) - -/* USB P3 */ -#define GPIO75_USB_P3_1 MFP_CFG(GPIO75, AF2) -#define GPIO76_USB_P3_2 MFP_CFG(GPIO76, AF2) -#define GPIO77_USB_P3_3 MFP_CFG(GPIO77, AF2) -#define GPIO78_USB_P3_4 MFP_CFG(GPIO78, AF2) -#define GPIO79_USB_P3_5 MFP_CFG(GPIO79, AF2) -#define GPIO80_USB_P3_6 MFP_CFG(GPIO80, AF2) - -#define GPIO13_CHOUT0 MFP_CFG(GPIO13, AF6) -#define GPIO14_CHOUT1 MFP_CFG(GPIO14, AF6) - -#define GPIO2_RDY MFP_CFG(GPIO2, AF1) -#define GPIO5_NPIOR MFP_CFG(GPIO5, AF3) -#define GPIO6_NPIOW MFP_CFG(GPIO6, AF3) -#define GPIO7_NPIOS16 MFP_CFG(GPIO7, AF3) -#define GPIO8_NPWAIT MFP_CFG(GPIO8, AF3) - -#define GPIO11_PWM0_OUT MFP_CFG(GPIO11, AF1) -#define GPIO12_PWM1_OUT MFP_CFG(GPIO12, AF1) -#define GPIO13_PWM2_OUT MFP_CFG(GPIO13, AF1) -#define GPIO14_PWM3_OUT MFP_CFG(GPIO14, AF1) - -#endif /* __ASM_ARCH_MFP_PXA320_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h deleted file mode 100644 index d375195d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa3xx.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifndef __ASM_ARCH_MFP_PXA3XX_H -#define __ASM_ARCH_MFP_PXA3XX_H - -#include <plat/mfp.h> - -#define MFPR_BASE (0x40e10000) - -/* PXA3xx common MFP configurations - processor specific ones defined - * in mfp-pxa300.h and mfp-pxa320.h - */ -#define GPIO0_GPIO MFP_CFG(GPIO0, AF0) -#define GPIO1_GPIO MFP_CFG(GPIO1, AF0) -#define GPIO2_GPIO MFP_CFG(GPIO2, AF0) -#define GPIO3_GPIO MFP_CFG(GPIO3, AF0) -#define GPIO4_GPIO MFP_CFG(GPIO4, AF0) -#define GPIO5_GPIO MFP_CFG(GPIO5, AF0) -#define GPIO6_GPIO MFP_CFG(GPIO6, AF0) -#define GPIO7_GPIO MFP_CFG(GPIO7, AF0) -#define GPIO8_GPIO MFP_CFG(GPIO8, AF0) -#define GPIO9_GPIO MFP_CFG(GPIO9, AF0) -#define GPIO10_GPIO MFP_CFG(GPIO10, AF0) -#define GPIO11_GPIO MFP_CFG(GPIO11, AF0) -#define GPIO12_GPIO MFP_CFG(GPIO12, AF0) -#define GPIO13_GPIO MFP_CFG(GPIO13, AF0) -#define GPIO14_GPIO MFP_CFG(GPIO14, AF0) -#define GPIO15_GPIO MFP_CFG(GPIO15, AF0) -#define GPIO16_GPIO MFP_CFG(GPIO16, AF0) -#define GPIO17_GPIO MFP_CFG(GPIO17, AF0) -#define GPIO18_GPIO MFP_CFG(GPIO18, AF0) -#define GPIO19_GPIO MFP_CFG(GPIO19, AF0) -#define GPIO20_GPIO MFP_CFG(GPIO20, AF0) -#define GPIO21_GPIO MFP_CFG(GPIO21, AF0) -#define GPIO22_GPIO MFP_CFG(GPIO22, AF0) -#define GPIO23_GPIO MFP_CFG(GPIO23, AF0) -#define GPIO24_GPIO MFP_CFG(GPIO24, AF0) -#define GPIO25_GPIO MFP_CFG(GPIO25, AF0) -#define GPIO26_GPIO MFP_CFG(GPIO26, AF0) -#define GPIO27_GPIO MFP_CFG(GPIO27, AF0) -#define GPIO28_GPIO MFP_CFG(GPIO28, AF0) -#define GPIO29_GPIO MFP_CFG(GPIO29, AF0) -#define GPIO30_GPIO MFP_CFG(GPIO30, AF0) -#define GPIO31_GPIO MFP_CFG(GPIO31, AF0) -#define GPIO32_GPIO MFP_CFG(GPIO32, AF0) -#define GPIO33_GPIO MFP_CFG(GPIO33, AF0) -#define GPIO34_GPIO MFP_CFG(GPIO34, AF0) -#define GPIO35_GPIO MFP_CFG(GPIO35, AF0) -#define GPIO36_GPIO MFP_CFG(GPIO36, AF0) -#define GPIO37_GPIO MFP_CFG(GPIO37, AF0) -#define GPIO38_GPIO MFP_CFG(GPIO38, AF0) -#define GPIO39_GPIO MFP_CFG(GPIO39, AF0) -#define GPIO40_GPIO MFP_CFG(GPIO40, AF0) -#define GPIO41_GPIO MFP_CFG(GPIO41, AF0) -#define GPIO42_GPIO MFP_CFG(GPIO42, AF0) -#define GPIO43_GPIO MFP_CFG(GPIO43, AF0) -#define GPIO44_GPIO MFP_CFG(GPIO44, AF0) -#define GPIO45_GPIO MFP_CFG(GPIO45, AF0) - -#define GPIO47_GPIO MFP_CFG(GPIO47, AF0) -#define GPIO48_GPIO MFP_CFG(GPIO48, AF0) - -#define GPIO53_GPIO MFP_CFG(GPIO53, AF0) -#define GPIO54_GPIO MFP_CFG(GPIO54, AF0) -#define GPIO55_GPIO MFP_CFG(GPIO55, AF0) - -#define GPIO57_GPIO MFP_CFG(GPIO57, AF0) - -#define GPIO63_GPIO MFP_CFG(GPIO63, AF0) -#define GPIO64_GPIO MFP_CFG(GPIO64, AF0) -#define GPIO65_GPIO MFP_CFG(GPIO65, AF0) -#define GPIO66_GPIO MFP_CFG(GPIO66, AF0) -#define GPIO67_GPIO MFP_CFG(GPIO67, AF0) -#define GPIO68_GPIO MFP_CFG(GPIO68, AF0) -#define GPIO69_GPIO MFP_CFG(GPIO69, AF0) -#define GPIO70_GPIO MFP_CFG(GPIO70, AF0) -#define GPIO71_GPIO MFP_CFG(GPIO71, AF0) -#define GPIO72_GPIO MFP_CFG(GPIO72, AF0) -#define GPIO73_GPIO MFP_CFG(GPIO73, AF0) -#define GPIO74_GPIO MFP_CFG(GPIO74, AF0) -#define GPIO75_GPIO MFP_CFG(GPIO75, AF0) -#define GPIO76_GPIO MFP_CFG(GPIO76, AF0) -#define GPIO77_GPIO MFP_CFG(GPIO77, AF0) -#define GPIO78_GPIO MFP_CFG(GPIO78, AF0) -#define GPIO79_GPIO MFP_CFG(GPIO79, AF0) -#define GPIO80_GPIO MFP_CFG(GPIO80, AF0) -#define GPIO81_GPIO MFP_CFG(GPIO81, AF0) -#define GPIO82_GPIO MFP_CFG(GPIO82, AF0) -#define GPIO83_GPIO MFP_CFG(GPIO83, AF0) -#define GPIO84_GPIO MFP_CFG(GPIO84, AF0) -#define GPIO85_GPIO MFP_CFG(GPIO85, AF0) -#define GPIO86_GPIO MFP_CFG(GPIO86, AF0) -#define GPIO87_GPIO MFP_CFG(GPIO87, AF0) -#define GPIO88_GPIO MFP_CFG(GPIO88, AF0) -#define GPIO89_GPIO MFP_CFG(GPIO89, AF0) -#define GPIO90_GPIO MFP_CFG(GPIO90, AF0) -#define GPIO91_GPIO MFP_CFG(GPIO91, AF0) -#define GPIO92_GPIO MFP_CFG(GPIO92, AF0) -#define GPIO93_GPIO MFP_CFG(GPIO93, AF0) -#define GPIO94_GPIO MFP_CFG(GPIO94, AF0) -#define GPIO95_GPIO MFP_CFG(GPIO95, AF0) -#define GPIO96_GPIO MFP_CFG(GPIO96, AF0) -#define GPIO97_GPIO MFP_CFG(GPIO97, AF0) -#define GPIO98_GPIO MFP_CFG(GPIO98, AF0) -#define GPIO99_GPIO MFP_CFG(GPIO99, AF0) -#define GPIO100_GPIO MFP_CFG(GPIO100, AF0) -#define GPIO101_GPIO MFP_CFG(GPIO101, AF0) -#define GPIO102_GPIO MFP_CFG(GPIO102, AF0) -#define GPIO103_GPIO MFP_CFG(GPIO103, AF0) -#define GPIO104_GPIO MFP_CFG(GPIO104, AF0) -#define GPIO105_GPIO MFP_CFG(GPIO105, AF0) -#define GPIO106_GPIO MFP_CFG(GPIO106, AF0) -#define GPIO107_GPIO MFP_CFG(GPIO107, AF0) -#define GPIO108_GPIO MFP_CFG(GPIO108, AF0) -#define GPIO109_GPIO MFP_CFG(GPIO109, AF0) -#define GPIO110_GPIO MFP_CFG(GPIO110, AF0) -#define GPIO111_GPIO MFP_CFG(GPIO111, AF0) -#define GPIO112_GPIO MFP_CFG(GPIO112, AF0) -#define GPIO113_GPIO MFP_CFG(GPIO113, AF0) -#define GPIO114_GPIO MFP_CFG(GPIO114, AF0) -#define GPIO115_GPIO MFP_CFG(GPIO115, AF0) -#define GPIO116_GPIO MFP_CFG(GPIO116, AF0) -#define GPIO117_GPIO MFP_CFG(GPIO117, AF0) -#define GPIO118_GPIO MFP_CFG(GPIO118, AF0) -#define GPIO119_GPIO MFP_CFG(GPIO119, AF0) -#define GPIO120_GPIO MFP_CFG(GPIO120, AF0) -#define GPIO121_GPIO MFP_CFG(GPIO121, AF0) -#define GPIO122_GPIO MFP_CFG(GPIO122, AF0) -#define GPIO123_GPIO MFP_CFG(GPIO123, AF0) -#define GPIO124_GPIO MFP_CFG(GPIO124, AF0) -#define GPIO125_GPIO MFP_CFG(GPIO125, AF0) -#define GPIO126_GPIO MFP_CFG(GPIO126, AF0) -#define GPIO127_GPIO MFP_CFG(GPIO127, AF0) - -#define GPIO0_2_GPIO MFP_CFG(GPIO0_2, AF0) -#define GPIO1_2_GPIO MFP_CFG(GPIO1_2, AF0) -#define GPIO2_2_GPIO MFP_CFG(GPIO2_2, AF0) -#define GPIO3_2_GPIO MFP_CFG(GPIO3_2, AF0) -#define GPIO4_2_GPIO MFP_CFG(GPIO4_2, AF0) -#define GPIO5_2_GPIO MFP_CFG(GPIO5_2, AF0) -#define GPIO6_2_GPIO MFP_CFG(GPIO6_2, AF0) - -/* NOTE: usage of these two functions is not recommended, - * use pxa3xx_mfp_config() instead. - */ -static inline unsigned long pxa3xx_mfp_read(int mfp) -{ - return mfp_read(mfp); -} - -static inline void pxa3xx_mfp_write(int mfp, unsigned long val) -{ - mfp_write(mfp, val); -} - -static inline void pxa3xx_mfp_config(unsigned long *mfp_cfg, int num) -{ - mfp_config(mfp_cfg, num); -} -#endif /* __ASM_ARCH_MFP_PXA3XX_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa930.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa930.h deleted file mode 100644 index 04f7c970..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp-pxa930.h +++ /dev/null @@ -1,498 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/mfp-pxa930.h - * - * PXA930 specific MFP configuration definitions - * - * Copyright (C) 2007-2008 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_MFP_PXA9xx_H -#define __ASM_ARCH_MFP_PXA9xx_H - -#include <mach/mfp-pxa3xx.h> - -/* GPIO */ -#define GPIO46_GPIO MFP_CFG(GPIO46, AF0) -#define GPIO49_GPIO MFP_CFG(GPIO49, AF0) -#define GPIO50_GPIO MFP_CFG(GPIO50, AF0) -#define GPIO51_GPIO MFP_CFG(GPIO51, AF0) -#define GPIO52_GPIO MFP_CFG(GPIO52, AF0) -#define GPIO56_GPIO MFP_CFG(GPIO56, AF0) -#define GPIO58_GPIO MFP_CFG(GPIO58, AF0) -#define GPIO59_GPIO MFP_CFG(GPIO59, AF0) -#define GPIO60_GPIO MFP_CFG(GPIO60, AF0) -#define GPIO61_GPIO MFP_CFG(GPIO61, AF0) -#define GPIO62_GPIO MFP_CFG(GPIO62, AF0) - -#define GSIM_UCLK_GPIO_79 MFP_CFG(GSIM_UCLK, AF0) -#define GSIM_UIO_GPIO_80 MFP_CFG(GSIM_UIO, AF0) -#define GSIM_nURST_GPIO_81 MFP_CFG(GSIM_nURST, AF0) -#define GSIM_UDET_GPIO_82 MFP_CFG(GSIM_UDET, AF0) - -#define DF_IO15_GPIO_28 MFP_CFG(DF_IO15, AF0) -#define DF_IO14_GPIO_29 MFP_CFG(DF_IO14, AF0) -#define DF_IO13_GPIO_30 MFP_CFG(DF_IO13, AF0) -#define DF_IO12_GPIO_31 MFP_CFG(DF_IO12, AF0) -#define DF_IO11_GPIO_32 MFP_CFG(DF_IO11, AF0) -#define DF_IO10_GPIO_33 MFP_CFG(DF_IO10, AF0) -#define DF_IO9_GPIO_34 MFP_CFG(DF_IO9, AF0) -#define DF_IO8_GPIO_35 MFP_CFG(DF_IO8, AF0) -#define DF_IO7_GPIO_36 MFP_CFG(DF_IO7, AF0) -#define DF_IO6_GPIO_37 MFP_CFG(DF_IO6, AF0) -#define DF_IO5_GPIO_38 MFP_CFG(DF_IO5, AF0) -#define DF_IO4_GPIO_39 MFP_CFG(DF_IO4, AF0) -#define DF_IO3_GPIO_40 MFP_CFG(DF_IO3, AF0) -#define DF_IO2_GPIO_41 MFP_CFG(DF_IO2, AF0) -#define DF_IO1_GPIO_42 MFP_CFG(DF_IO1, AF0) -#define DF_IO0_GPIO_43 MFP_CFG(DF_IO0, AF0) -#define DF_nCS0_GPIO_44 MFP_CFG(DF_nCS0, AF0) -#define DF_nCS1_GPIO_45 MFP_CFG(DF_nCS1, AF0) -#define DF_nWE_GPIO_46 MFP_CFG(DF_nWE, AF0) -#define DF_nRE_nOE_GPIO_47 MFP_CFG(DF_nRE_nOE, AF0) -#define DF_CLE_nOE_GPIO_48 MFP_CFG(DF_CLE_nOE, AF0) -#define DF_nADV1_ALE_GPIO_49 MFP_CFG(DF_nADV1_ALE, AF0) -#define DF_nADV2_ALE_GPIO_50 MFP_CFG(DF_nADV2_ALE, AF0) -#define DF_INT_RnB_GPIO_51 MFP_CFG(DF_INT_RnB, AF0) -#define DF_SCLK_E_GPIO_52 MFP_CFG(DF_SCLK_E, AF0) - -#define DF_ADDR0_GPIO_53 MFP_CFG(DF_ADDR0, AF0) -#define DF_ADDR1_GPIO_54 MFP_CFG(DF_ADDR1, AF0) -#define DF_ADDR2_GPIO_55 MFP_CFG(DF_ADDR2, AF0) -#define DF_ADDR3_GPIO_56 MFP_CFG(DF_ADDR3, AF0) -#define nXCVREN_GPIO_57 MFP_CFG(nXCVREN, AF0) -#define nLUA_GPIO_58 MFP_CFG(nLUA, AF0) -#define nLLA_GPIO_59 MFP_CFG(nLLA, AF0) -#define nBE0_GPIO_60 MFP_CFG(nBE0, AF0) -#define nBE1_GPIO_61 MFP_CFG(nBE1, AF0) -#define RDY_GPIO_62 MFP_CFG(RDY, AF0) -#define PMIC_INT_GPIO83 MFP_CFG_LPM(PMIC_INT, AF0, PULL_HIGH) - -/* Chip Select */ -#define DF_nCS0_nCS2 MFP_CFG_LPM(DF_nCS0, AF3, PULL_HIGH) -#define DF_nCS1_nCS3 MFP_CFG_LPM(DF_nCS1, AF3, PULL_HIGH) - -/* AC97 */ -#define GPIO83_BAC97_SYSCLK MFP_CFG(GPIO83, AF3) -#define GPIO84_BAC97_SDATA_IN0 MFP_CFG(GPIO84, AF3) -#define GPIO85_BAC97_BITCLK MFP_CFG(GPIO85, AF3) -#define GPIO86_BAC97_nRESET MFP_CFG(GPIO86, AF3) -#define GPIO87_BAC97_SYNC MFP_CFG(GPIO87, AF3) -#define GPIO88_BAC97_SDATA_OUT MFP_CFG(GPIO88, AF3) - -/* I2C */ -#define GPIO39_CI2C_SCL MFP_CFG_LPM(GPIO39, AF3, PULL_HIGH) -#define GPIO40_CI2C_SDA MFP_CFG_LPM(GPIO40, AF3, PULL_HIGH) - -#define GPIO51_CI2C_SCL MFP_CFG_LPM(GPIO51, AF3, PULL_HIGH) -#define GPIO52_CI2C_SDA MFP_CFG_LPM(GPIO52, AF3, PULL_HIGH) - -#define GPIO63_CI2C_SCL MFP_CFG_LPM(GPIO63, AF4, PULL_HIGH) -#define GPIO64_CI2C_SDA MFP_CFG_LPM(GPIO64, AF4, PULL_HIGH) - -#define GPIO73_CI2C_SCL MFP_CFG_LPM(GPIO73, AF1, PULL_HIGH) -#define GPIO74_CI2C_SDA MFP_CFG_LPM(GPIO74, AF1, PULL_HIGH) - -#define GPIO77_CI2C_SCL MFP_CFG_LPM(GPIO77, AF2, PULL_HIGH) -#define GPIO78_CI2C_SDA MFP_CFG_LPM(GPIO78, AF2, PULL_HIGH) - -#define GPIO89_CI2C_SCL MFP_CFG_LPM(GPIO89, AF1, PULL_HIGH) -#define GPIO90_CI2C_SDA MFP_CFG_LPM(GPIO90, AF1, PULL_HIGH) - -#define GPIO95_CI2C_SCL MFP_CFG_LPM(GPIO95, AF1, PULL_HIGH) -#define GPIO96_CI2C_SDA MFP_CFG_LPM(GPIO96, AF1, PULL_HIGH) - -#define GPIO97_CI2C_SCL MFP_CFG_LPM(GPIO97, AF3, PULL_HIGH) -#define GPIO98_CI2C_SDA MFP_CFG_LPM(GPIO98, AF3, PULL_HIGH) - -/* QCI */ -#define GPIO63_CI_DD_9 MFP_CFG_LPM(GPIO63, AF1, PULL_LOW) -#define GPIO64_CI_DD_8 MFP_CFG_LPM(GPIO64, AF1, PULL_LOW) -#define GPIO65_CI_DD_7 MFP_CFG_LPM(GPIO65, AF1, PULL_LOW) -#define GPIO66_CI_DD_6 MFP_CFG_LPM(GPIO66, AF1, PULL_LOW) -#define GPIO67_CI_DD_5 MFP_CFG_LPM(GPIO67, AF1, PULL_LOW) -#define GPIO68_CI_DD_4 MFP_CFG_LPM(GPIO68, AF1, PULL_LOW) -#define GPIO69_CI_DD_3 MFP_CFG_LPM(GPIO69, AF1, PULL_LOW) -#define GPIO70_CI_DD_2 MFP_CFG_LPM(GPIO70, AF1, PULL_LOW) -#define GPIO71_CI_DD_1 MFP_CFG_LPM(GPIO71, AF1, PULL_LOW) -#define GPIO72_CI_DD_0 MFP_CFG_LPM(GPIO72, AF1, PULL_LOW) -#define GPIO73_CI_HSYNC MFP_CFG_LPM(GPIO73, AF1, PULL_LOW) -#define GPIO74_CI_VSYNC MFP_CFG_LPM(GPIO74, AF1, PULL_LOW) -#define GPIO75_CI_MCLK MFP_CFG_LPM(GPIO75, AF1, PULL_LOW) -#define GPIO76_CI_PCLK MFP_CFG_LPM(GPIO76, AF1, PULL_LOW) - -/* KEYPAD */ -#define GPIO4_KP_DKIN_4 MFP_CFG_LPM(GPIO4, AF3, FLOAT) -#define GPIO5_KP_DKIN_5 MFP_CFG_LPM(GPIO5, AF3, FLOAT) -#define GPIO6_KP_DKIN_6 MFP_CFG_LPM(GPIO6, AF3, FLOAT) -#define GPIO7_KP_DKIN_7 MFP_CFG_LPM(GPIO7, AF3, FLOAT) -#define GPIO8_KP_DKIN_4 MFP_CFG_LPM(GPIO8, AF3, FLOAT) -#define GPIO9_KP_DKIN_5 MFP_CFG_LPM(GPIO9, AF3, FLOAT) -#define GPIO10_KP_DKIN_6 MFP_CFG_LPM(GPIO10, AF3, FLOAT) -#define GPIO11_KP_DKIN_7 MFP_CFG_LPM(GPIO11, AF3, FLOAT) - -#define GPIO12_KP_DKIN_0 MFP_CFG_LPM(GPIO12, AF2, FLOAT) -#define GPIO13_KP_DKIN_1 MFP_CFG_LPM(GPIO13, AF2, FLOAT) -#define GPIO14_KP_DKIN_2 MFP_CFG_LPM(GPIO14, AF2, FLOAT) -#define GPIO15_KP_DKIN_3 MFP_CFG_LPM(GPIO15, AF2, FLOAT) - -#define GPIO41_KP_DKIN_0 MFP_CFG_LPM(GPIO41, AF2, FLOAT) -#define GPIO42_KP_DKIN_1 MFP_CFG_LPM(GPIO42, AF2, FLOAT) -#define GPIO43_KP_DKIN_2 MFP_CFG_LPM(GPIO43, AF2, FLOAT) -#define GPIO44_KP_DKIN_3 MFP_CFG_LPM(GPIO44, AF2, FLOAT) -#define GPIO41_KP_DKIN_4 MFP_CFG_LPM(GPIO41, AF4, FLOAT) -#define GPIO42_KP_DKIN_5 MFP_CFG_LPM(GPIO42, AF4, FLOAT) - -#define GPIO0_KP_MKIN_0 MFP_CFG_LPM(GPIO0, AF1, FLOAT) -#define GPIO2_KP_MKIN_1 MFP_CFG_LPM(GPIO2, AF1, FLOAT) -#define GPIO4_KP_MKIN_2 MFP_CFG_LPM(GPIO4, AF1, FLOAT) -#define GPIO6_KP_MKIN_3 MFP_CFG_LPM(GPIO6, AF1, FLOAT) -#define GPIO8_KP_MKIN_4 MFP_CFG_LPM(GPIO8, AF1, FLOAT) -#define GPIO10_KP_MKIN_5 MFP_CFG_LPM(GPIO10, AF1, FLOAT) -#define GPIO12_KP_MKIN_6 MFP_CFG_LPM(GPIO12, AF1, FLOAT) -#define GPIO14_KP_MKIN_7 MFP_CFG(GPIO14, AF1) -#define GPIO35_KP_MKIN_5 MFP_CFG(GPIO35, AF4) - -#define GPIO1_KP_MKOUT_0 MFP_CFG_LPM(GPIO1, AF1, DRIVE_HIGH) -#define GPIO3_KP_MKOUT_1 MFP_CFG_LPM(GPIO3, AF1, DRIVE_HIGH) -#define GPIO5_KP_MKOUT_2 MFP_CFG_LPM(GPIO5, AF1, DRIVE_HIGH) -#define GPIO7_KP_MKOUT_3 MFP_CFG_LPM(GPIO7, AF1, DRIVE_HIGH) -#define GPIO9_KP_MKOUT_4 MFP_CFG_LPM(GPIO9, AF1, DRIVE_HIGH) -#define GPIO11_KP_MKOUT_5 MFP_CFG_LPM(GPIO11, AF1, DRIVE_HIGH) -#define GPIO13_KP_MKOUT_6 MFP_CFG_LPM(GPIO13, AF1, DRIVE_HIGH) -#define GPIO15_KP_MKOUT_7 MFP_CFG_LPM(GPIO15, AF1, DRIVE_HIGH) -#define GPIO36_KP_MKOUT_5 MFP_CFG_LPM(GPIO36, AF4, DRIVE_HIGH) - -/* LCD */ -#define GPIO17_LCD_FCLK_RD MFP_CFG(GPIO17, AF1) -#define GPIO18_LCD_LCLK_A0 MFP_CFG(GPIO18, AF1) -#define GPIO19_LCD_PCLK_WR MFP_CFG(GPIO19, AF1) -#define GPIO20_LCD_BIAS MFP_CFG(GPIO20, AF1) -#define GPIO21_LCD_CS MFP_CFG(GPIO21, AF1) -#define GPIO22_LCD_CS2 MFP_CFG(GPIO22, AF2) -#define GPIO22_LCD_VSYNC MFP_CFG(GPIO22, AF1) -#define GPIO23_LCD_DD0 MFP_CFG(GPIO23, AF1) -#define GPIO24_LCD_DD1 MFP_CFG(GPIO24, AF1) -#define GPIO25_LCD_DD2 MFP_CFG(GPIO25, AF1) -#define GPIO26_LCD_DD3 MFP_CFG(GPIO26, AF1) -#define GPIO27_LCD_DD4 MFP_CFG(GPIO27, AF1) -#define GPIO28_LCD_DD5 MFP_CFG(GPIO28, AF1) -#define GPIO29_LCD_DD6 MFP_CFG(GPIO29, AF1) -#define GPIO30_LCD_DD7 MFP_CFG(GPIO30, AF1) -#define GPIO31_LCD_DD8 MFP_CFG(GPIO31, AF1) -#define GPIO32_LCD_DD9 MFP_CFG(GPIO32, AF1) -#define GPIO33_LCD_DD10 MFP_CFG(GPIO33, AF1) -#define GPIO34_LCD_DD11 MFP_CFG(GPIO34, AF1) -#define GPIO35_LCD_DD12 MFP_CFG(GPIO35, AF1) -#define GPIO36_LCD_DD13 MFP_CFG(GPIO36, AF1) -#define GPIO37_LCD_DD14 MFP_CFG(GPIO37, AF1) -#define GPIO38_LCD_DD15 MFP_CFG(GPIO38, AF1) -#define GPIO39_LCD_DD16 MFP_CFG(GPIO39, AF1) -#define GPIO40_LCD_DD17 MFP_CFG(GPIO40, AF1) -#define GPIO41_LCD_CS2 MFP_CFG(GPIO41, AF3) -#define GPIO42_LCD_VSYNC2 MFP_CFG(GPIO42, AF3) -#define GPIO44_LCD_DD7 MFP_CFG(GPIO44, AF1) - -/* Mini-LCD */ -#define GPIO17_MLCD_FCLK MFP_CFG(GPIO17, AF3) -#define GPIO18_MLCD_LCLK MFP_CFG(GPIO18, AF3) -#define GPIO19_MLCD_PCLK MFP_CFG(GPIO19, AF3) -#define GPIO20_MLCD_BIAS MFP_CFG(GPIO20, AF3) -#define GPIO23_MLCD_DD0 MFP_CFG(GPIO23, AF3) -#define GPIO24_MLCD_DD1 MFP_CFG(GPIO24, AF3) -#define GPIO25_MLCD_DD2 MFP_CFG(GPIO25, AF3) -#define GPIO26_MLCD_DD3 MFP_CFG(GPIO26, AF3) -#define GPIO27_MLCD_DD4 MFP_CFG(GPIO27, AF3) -#define GPIO28_MLCD_DD5 MFP_CFG(GPIO28, AF3) -#define GPIO29_MLCD_DD6 MFP_CFG(GPIO29, AF3) -#define GPIO30_MLCD_DD7 MFP_CFG(GPIO30, AF3) -#define GPIO31_MLCD_DD8 MFP_CFG(GPIO31, AF3) -#define GPIO32_MLCD_DD9 MFP_CFG(GPIO32, AF3) -#define GPIO33_MLCD_DD10 MFP_CFG(GPIO33, AF3) -#define GPIO34_MLCD_DD11 MFP_CFG(GPIO34, AF3) -#define GPIO35_MLCD_DD12 MFP_CFG(GPIO35, AF3) -#define GPIO36_MLCD_DD13 MFP_CFG(GPIO36, AF3) -#define GPIO37_MLCD_DD14 MFP_CFG(GPIO37, AF3) -#define GPIO38_MLCD_DD15 MFP_CFG(GPIO38, AF3) -#define GPIO44_MLCD_DD7 MFP_CFG(GPIO44, AF5) - -/* MMC1 */ -#define GPIO10_MMC1_DAT3 MFP_CFG(GPIO10, AF4) -#define GPIO11_MMC1_DAT2 MFP_CFG(GPIO11, AF4) -#define GPIO12_MMC1_DAT1 MFP_CFG(GPIO12, AF4) -#define GPIO13_MMC1_DAT0 MFP_CFG(GPIO13, AF4) -#define GPIO14_MMC1_CMD MFP_CFG(GPIO14, AF4) -#define GPIO15_MMC1_CLK MFP_CFG(GPIO15, AF4) -#define GPIO55_MMC1_CMD MFP_CFG(GPIO55, AF3) -#define GPIO56_MMC1_CLK MFP_CFG(GPIO56, AF3) -#define GPIO57_MMC1_DAT0 MFP_CFG(GPIO57, AF3) -#define GPIO58_MMC1_DAT1 MFP_CFG(GPIO58, AF3) -#define GPIO59_MMC1_DAT2 MFP_CFG(GPIO59, AF3) -#define GPIO60_MMC1_DAT3 MFP_CFG(GPIO60, AF3) - -#define DF_ADDR0_MMC1_CLK MFP_CFG(DF_ADDR0, AF2) -#define DF_ADDR1_MMC1_CMD MFP_CFG(DF_ADDR1, AF2) -#define DF_ADDR2_MMC1_DAT0 MFP_CFG(DF_ADDR2, AF2) -#define DF_ADDR3_MMC1_DAT1 MFP_CFG(DF_ADDR3, AF3) -#define nXCVREN_MMC1_DAT2 MFP_CFG(nXCVREN, AF2) - -/* MMC2 */ -#define GPIO31_MMC2_CMD MFP_CFG(GPIO31, AF7) -#define GPIO32_MMC2_CLK MFP_CFG(GPIO32, AF7) -#define GPIO33_MMC2_DAT0 MFP_CFG(GPIO33, AF7) -#define GPIO34_MMC2_DAT1 MFP_CFG(GPIO34, AF7) -#define GPIO35_MMC2_DAT2 MFP_CFG(GPIO35, AF7) -#define GPIO36_MMC2_DAT3 MFP_CFG(GPIO36, AF7) - -#define GPIO101_MMC2_DAT3 MFP_CFG(GPIO101, AF1) -#define GPIO102_MMC2_DAT2 MFP_CFG(GPIO102, AF1) -#define GPIO103_MMC2_DAT1 MFP_CFG(GPIO103, AF1) -#define GPIO104_MMC2_DAT0 MFP_CFG(GPIO104, AF1) -#define GPIO105_MMC2_CMD MFP_CFG(GPIO105, AF1) -#define GPIO106_MMC2_CLK MFP_CFG(GPIO106, AF1) - -#define DF_IO10_MMC2_DAT3 MFP_CFG(DF_IO10, AF3) -#define DF_IO11_MMC2_DAT2 MFP_CFG(DF_IO11, AF3) -#define DF_IO12_MMC2_DAT1 MFP_CFG(DF_IO12, AF3) -#define DF_IO13_MMC2_DAT0 MFP_CFG(DF_IO13, AF3) -#define DF_IO14_MMC2_CLK MFP_CFG(DF_IO14, AF3) -#define DF_IO15_MMC2_CMD MFP_CFG(DF_IO15, AF3) - -/* BSSP1 */ -#define GPIO12_BSSP1_CLK MFP_CFG(GPIO12, AF3) -#define GPIO13_BSSP1_FRM MFP_CFG(GPIO13, AF3) -#define GPIO14_BSSP1_RXD MFP_CFG(GPIO14, AF3) -#define GPIO15_BSSP1_TXD MFP_CFG(GPIO15, AF3) -#define GPIO97_BSSP1_CLK MFP_CFG(GPIO97, AF5) -#define GPIO98_BSSP1_FRM MFP_CFG(GPIO98, AF5) - -/* BSSP2 */ -#define GPIO84_BSSP2_SDATA_IN MFP_CFG(GPIO84, AF1) -#define GPIO85_BSSP2_BITCLK MFP_CFG(GPIO85, AF1) -#define GPIO86_BSSP2_SYSCLK MFP_CFG(GPIO86, AF1) -#define GPIO87_BSSP2_SYNC MFP_CFG(GPIO87, AF1) -#define GPIO88_BSSP2_DATA_OUT MFP_CFG(GPIO88, AF1) -#define GPIO86_BSSP2_SDATA_IN MFP_CFG(GPIO86, AF4) - -/* BSSP3 */ -#define GPIO79_BSSP3_CLK MFP_CFG(GPIO79, AF1) -#define GPIO80_BSSP3_FRM MFP_CFG(GPIO80, AF1) -#define GPIO81_BSSP3_TXD MFP_CFG(GPIO81, AF1) -#define GPIO82_BSSP3_RXD MFP_CFG(GPIO82, AF1) -#define GPIO83_BSSP3_SYSCLK MFP_CFG(GPIO83, AF1) - -/* BSSP4 */ -#define GPIO43_BSSP4_CLK MFP_CFG(GPIO43, AF4) -#define GPIO44_BSSP4_FRM MFP_CFG(GPIO44, AF4) -#define GPIO45_BSSP4_TXD MFP_CFG(GPIO45, AF4) -#define GPIO46_BSSP4_RXD MFP_CFG(GPIO46, AF4) - -#define GPIO51_BSSP4_CLK MFP_CFG(GPIO51, AF4) -#define GPIO52_BSSP4_FRM MFP_CFG(GPIO52, AF4) -#define GPIO53_BSSP4_TXD MFP_CFG(GPIO53, AF4) -#define GPIO54_BSSP4_RXD MFP_CFG(GPIO54, AF4) - -/* GSSP1 */ -#define GPIO79_GSSP1_CLK MFP_CFG(GPIO79, AF2) -#define GPIO80_GSSP1_FRM MFP_CFG(GPIO80, AF2) -#define GPIO81_GSSP1_TXD MFP_CFG(GPIO81, AF2) -#define GPIO82_GSSP1_RXD MFP_CFG(GPIO82, AF2) -#define GPIO83_GSSP1_SYSCLK MFP_CFG(GPIO83, AF2) - -#define GPIO93_GSSP1_CLK MFP_CFG(GPIO93, AF4) -#define GPIO94_GSSP1_FRM MFP_CFG(GPIO94, AF4) -#define GPIO95_GSSP1_TXD MFP_CFG(GPIO95, AF4) -#define GPIO96_GSSP1_RXD MFP_CFG(GPIO96, AF4) - -/* GSSP2 */ -#define GPIO47_GSSP2_CLK MFP_CFG(GPIO47, AF4) -#define GPIO48_GSSP2_FRM MFP_CFG(GPIO48, AF4) -#define GPIO49_GSSP2_RXD MFP_CFG(GPIO49, AF4) -#define GPIO50_GSSP2_TXD MFP_CFG(GPIO50, AF4) - -#define GPIO69_GSSP2_CLK MFP_CFG(GPIO69, AF4) -#define GPIO70_GSSP2_FRM MFP_CFG(GPIO70, AF4) -#define GPIO71_GSSP2_RXD MFP_CFG(GPIO71, AF4) -#define GPIO72_GSSP2_TXD MFP_CFG(GPIO72, AF4) - -#define GPIO84_GSSP2_RXD MFP_CFG(GPIO84, AF2) -#define GPIO85_GSSP2_CLK MFP_CFG(GPIO85, AF2) -#define GPIO86_GSSP2_SYSCLK MFP_CFG(GPIO86, AF2) -#define GPIO87_GSSP2_FRM MFP_CFG(GPIO87, AF2) -#define GPIO88_GSSP2_TXD MFP_CFG(GPIO88, AF2) -#define GPIO86_GSSP2_RXD MFP_CFG(GPIO86, AF5) - -#define GPIO103_GSSP2_CLK MFP_CFG(GPIO103, AF2) -#define GPIO104_GSSP2_FRM MFP_CFG(GPIO104, AF2) -#define GPIO105_GSSP2_RXD MFP_CFG(GPIO105, AF2) -#define GPIO106_GSSP2_TXD MFP_CFG(GPIO106, AF2) - -/* UART1 - FFUART */ -#define GPIO47_UART1_DSR_N MFP_CFG(GPIO47, AF1) -#define GPIO48_UART1_DTR_N MFP_CFG(GPIO48, AF1) -#define GPIO49_UART1_RI MFP_CFG(GPIO49, AF1) -#define GPIO50_UART1_DCD MFP_CFG(GPIO50, AF1) -#define GPIO51_UART1_CTS MFP_CFG(GPIO51, AF1) -#define GPIO52_UART1_RTS MFP_CFG(GPIO52, AF1) -#define GPIO53_UART1_RXD MFP_CFG(GPIO53, AF1) -#define GPIO54_UART1_TXD MFP_CFG(GPIO54, AF1) - -#define GPIO63_UART1_TXD MFP_CFG(GPIO63, AF2) -#define GPIO64_UART1_RXD MFP_CFG(GPIO64, AF2) -#define GPIO65_UART1_DSR MFP_CFG(GPIO65, AF2) -#define GPIO66_UART1_DTR MFP_CFG(GPIO66, AF2) -#define GPIO67_UART1_RI MFP_CFG(GPIO67, AF2) -#define GPIO68_UART1_DCD MFP_CFG(GPIO68, AF2) -#define GPIO69_UART1_CTS MFP_CFG(GPIO69, AF2) -#define GPIO70_UART1_RTS MFP_CFG(GPIO70, AF2) - -#define GPIO53_UART1_TXD MFP_CFG(GPIO53, AF2) -#define GPIO54_UART1_RXD MFP_CFG(GPIO54, AF2) - -/* UART2 - BTUART */ -#define GPIO91_UART2_RXD MFP_CFG(GPIO91, AF1) -#define GPIO92_UART2_TXD MFP_CFG(GPIO92, AF1) -#define GPIO93_UART2_CTS MFP_CFG(GPIO93, AF1) -#define GPIO94_UART2_RTS MFP_CFG(GPIO94, AF1) - -/* UART3 - STUART */ -#define GPIO43_UART3_RTS MFP_CFG(GPIO43, AF3) -#define GPIO44_UART3_CTS MFP_CFG(GPIO44, AF3) -#define GPIO45_UART3_RXD MFP_CFG(GPIO45, AF3) -#define GPIO46_UART3_TXD MFP_CFG(GPIO46, AF3) - -#define GPIO75_UART3_RTS MFP_CFG(GPIO75, AF5) -#define GPIO76_UART3_CTS MFP_CFG(GPIO76, AF5) -#define GPIO77_UART3_TXD MFP_CFG(GPIO77, AF5) -#define GPIO78_UART3_RXD MFP_CFG(GPIO78, AF5) - -/* DFI */ -#define DF_IO0_DF_IO0 MFP_CFG(DF_IO0, AF2) -#define DF_IO1_DF_IO1 MFP_CFG(DF_IO1, AF2) -#define DF_IO2_DF_IO2 MFP_CFG(DF_IO2, AF2) -#define DF_IO3_DF_IO3 MFP_CFG(DF_IO3, AF2) -#define DF_IO4_DF_IO4 MFP_CFG(DF_IO4, AF2) -#define DF_IO5_DF_IO5 MFP_CFG(DF_IO5, AF2) -#define DF_IO6_DF_IO6 MFP_CFG(DF_IO6, AF2) -#define DF_IO7_DF_IO7 MFP_CFG(DF_IO7, AF2) -#define DF_IO8_DF_IO8 MFP_CFG(DF_IO8, AF2) -#define DF_IO9_DF_IO9 MFP_CFG(DF_IO9, AF2) -#define DF_IO10_DF_IO10 MFP_CFG(DF_IO10, AF2) -#define DF_IO11_DF_IO11 MFP_CFG(DF_IO11, AF2) -#define DF_IO12_DF_IO12 MFP_CFG(DF_IO12, AF2) -#define DF_IO13_DF_IO13 MFP_CFG(DF_IO13, AF2) -#define DF_IO14_DF_IO14 MFP_CFG(DF_IO14, AF2) -#define DF_IO15_DF_IO15 MFP_CFG(DF_IO15, AF2) -#define DF_nADV1_ALE_DF_nADV1 MFP_CFG(DF_nADV1_ALE, AF2) -#define DF_nADV2_ALE_DF_nADV2 MFP_CFG(DF_nADV2_ALE, AF2) -#define DF_nCS0_DF_nCS0 MFP_CFG(DF_nCS0, AF2) -#define DF_nCS1_DF_nCS1 MFP_CFG(DF_nCS1, AF2) -#define DF_nRE_nOE_DF_nOE MFP_CFG(DF_nRE_nOE, AF2) -#define DF_nWE_DF_nWE MFP_CFG(DF_nWE, AF2) - -/* DFI - NAND */ -#define DF_CLE_nOE_ND_CLE MFP_CFG_LPM(DF_CLE_nOE, AF1, PULL_HIGH) -#define DF_INT_RnB_ND_INT_RnB MFP_CFG_LPM(DF_INT_RnB, AF1, PULL_LOW) -#define DF_IO0_ND_IO0 MFP_CFG_LPM(DF_IO0, AF1, PULL_LOW) -#define DF_IO1_ND_IO1 MFP_CFG_LPM(DF_IO1, AF1, PULL_LOW) -#define DF_IO2_ND_IO2 MFP_CFG_LPM(DF_IO2, AF1, PULL_LOW) -#define DF_IO3_ND_IO3 MFP_CFG_LPM(DF_IO3, AF1, PULL_LOW) -#define DF_IO4_ND_IO4 MFP_CFG_LPM(DF_IO4, AF1, PULL_LOW) -#define DF_IO5_ND_IO5 MFP_CFG_LPM(DF_IO5, AF1, PULL_LOW) -#define DF_IO6_ND_IO6 MFP_CFG_LPM(DF_IO6, AF1, PULL_LOW) -#define DF_IO7_ND_IO7 MFP_CFG_LPM(DF_IO7, AF1, PULL_LOW) -#define DF_IO8_ND_IO8 MFP_CFG_LPM(DF_IO8, AF1, PULL_LOW) -#define DF_IO9_ND_IO9 MFP_CFG_LPM(DF_IO9, AF1, PULL_LOW) -#define DF_IO10_ND_IO10 MFP_CFG_LPM(DF_IO10, AF1, PULL_LOW) -#define DF_IO11_ND_IO11 MFP_CFG_LPM(DF_IO11, AF1, PULL_LOW) -#define DF_IO12_ND_IO12 MFP_CFG_LPM(DF_IO12, AF1, PULL_LOW) -#define DF_IO13_ND_IO13 MFP_CFG_LPM(DF_IO13, AF1, PULL_LOW) -#define DF_IO14_ND_IO14 MFP_CFG_LPM(DF_IO14, AF1, PULL_LOW) -#define DF_IO15_ND_IO15 MFP_CFG_LPM(DF_IO15, AF1, PULL_LOW) -#define DF_nADV1_ALE_ND_ALE MFP_CFG_LPM(DF_nADV1_ALE, AF1, PULL_HIGH) -#define DF_nADV2_ALE_ND_ALE MFP_CFG_LPM(DF_nADV2_ALE, AF1, PULL_HIGH) -#define DF_nADV2_ALE_nCS3 MFP_CFG_LPM(DF_nADV2_ALE, AF3, PULL_HIGH) -#define DF_nCS0_ND_nCS0 MFP_CFG_LPM(DF_nCS0, AF1, PULL_HIGH) -#define DF_nCS1_ND_nCS1 MFP_CFG_LPM(DF_nCS1, AF1, PULL_HIGH) -#define DF_nRE_nOE_ND_nRE MFP_CFG_LPM(DF_nRE_nOE, AF1, PULL_HIGH) -#define DF_nWE_ND_nWE MFP_CFG_LPM(DF_nWE, AF1, PULL_HIGH) - -/* PWM */ -#define GPIO41_PWM0 MFP_CFG_LPM(GPIO41, AF1, PULL_LOW) -#define GPIO42_PWM1 MFP_CFG_LPM(GPIO42, AF1, PULL_LOW) -#define GPIO43_PWM3 MFP_CFG_LPM(GPIO43, AF1, PULL_LOW) -#define GPIO20_PWM0 MFP_CFG_LPM(GPIO20, AF2, PULL_LOW) -#define GPIO21_PWM2 MFP_CFG_LPM(GPIO21, AF3, PULL_LOW) -#define GPIO22_PWM3 MFP_CFG_LPM(GPIO22, AF3, PULL_LOW) -#define GPIO32_PWM0 MFP_CFG_LPM(GPIO32, AF4, PULL_LOW) - -/* CIR */ -#define GPIO46_CIR_OUT MFP_CFG(GPIO46, AF1) -#define GPIO77_CIR_OUT MFP_CFG(GPIO77, AF3) - -/* USB P2 */ -#define GPIO0_USB_P2_7 MFP_CFG(GPIO0, AF3) -#define GPIO15_USB_P2_7 MFP_CFG(GPIO15, AF5) -#define GPIO16_USB_P2_7 MFP_CFG(GPIO16, AF2) -#define GPIO48_USB_P2_7 MFP_CFG(GPIO48, AF7) -#define GPIO49_USB_P2_7 MFP_CFG(GPIO49, AF6) -#define DF_IO9_USB_P2_7 MFP_CFG(DF_IO9, AF3) - -#define GPIO48_USB_P2_8 MFP_CFG(GPIO48, AF2) -#define GPIO50_USB_P2_7 MFP_CFG_X(GPIO50, AF2, DS02X, FLOAT) -#define GPIO51_USB_P2_5 MFP_CFG(GPIO51, AF2) -#define GPIO47_USB_P2_4 MFP_CFG(GPIO47, AF2) -#define GPIO53_USB_P2_3 MFP_CFG(GPIO53, AF2) -#define GPIO54_USB_P2_6 MFP_CFG(GPIO54, AF2) -#define GPIO49_USB_P2_2 MFP_CFG(GPIO49, AF2) -#define GPIO52_USB_P2_1 MFP_CFG(GPIO52, AF2) - -#define GPIO63_USB_P2_8 MFP_CFG(GPIO63, AF3) -#define GPIO64_USB_P2_7 MFP_CFG(GPIO64, AF3) -#define GPIO65_USB_P2_6 MFP_CFG(GPIO65, AF3) -#define GPIO66_USG_P2_5 MFP_CFG(GPIO66, AF3) -#define GPIO67_USB_P2_4 MFP_CFG(GPIO67, AF3) -#define GPIO68_USB_P2_3 MFP_CFG(GPIO68, AF3) -#define GPIO69_USB_P2_2 MFP_CFG(GPIO69, AF3) -#define GPIO70_USB_P2_1 MFP_CFG(GPIO70, AF3) - -/* ULPI */ -#define GPIO31_USB_ULPI_D0 MFP_CFG(GPIO31, AF4) -#define GPIO30_USB_ULPI_D1 MFP_CFG(GPIO30, AF7) -#define GPIO33_USB_ULPI_D2 MFP_CFG(GPIO33, AF5) -#define GPIO34_USB_ULPI_D3 MFP_CFG(GPIO34, AF5) -#define GPIO35_USB_ULPI_D4 MFP_CFG(GPIO35, AF5) -#define GPIO36_USB_ULPI_D5 MFP_CFG(GPIO36, AF5) -#define GPIO41_USB_ULPI_D6 MFP_CFG(GPIO41, AF5) -#define GPIO42_USB_ULPI_D7 MFP_CFG(GPIO42, AF5) -#define GPIO37_USB_ULPI_DIR MFP_CFG(GPIO37, AF4) -#define GPIO38_USB_ULPI_CLK MFP_CFG(GPIO38, AF4) -#define GPIO39_USB_ULPI_STP MFP_CFG(GPIO39, AF4) -#define GPIO40_USB_ULPI_NXT MFP_CFG(GPIO40, AF4) - -#define GPIO3_CLK26MOUTDMD MFP_CFG(GPIO3, AF3) -#define GPIO40_CLK26MOUTDMD MFP_CFG(GPIO40, AF7) -#define GPIO94_CLK26MOUTDMD MFP_CFG(GPIO94, AF5) -#define GPIO104_CLK26MOUTDMD MFP_CFG(GPIO104, AF4) -#define DF_ADDR1_CLK26MOUTDMD MFP_CFG(DF_ADDR2, AF3) -#define DF_ADDR3_CLK26MOUTDMD MFP_CFG(DF_ADDR3, AF3) - -#define GPIO14_CLK26MOUT MFP_CFG(GPIO14, AF5) -#define GPIO38_CLK26MOUT MFP_CFG(GPIO38, AF7) -#define GPIO92_CLK26MOUT MFP_CFG(GPIO92, AF5) -#define GPIO105_CLK26MOUT MFP_CFG(GPIO105, AF4) - -#define GPIO2_CLK13MOUTDMD MFP_CFG(GPIO2, AF3) -#define GPIO39_CLK13MOUTDMD MFP_CFG(GPIO39, AF7) -#define GPIO50_CLK13MOUTDMD MFP_CFG(GPIO50, AF3) -#define GPIO93_CLK13MOUTDMD MFP_CFG(GPIO93, AF5) -#define GPIO103_CLK13MOUTDMD MFP_CFG(GPIO103, AF4) -#define DF_ADDR2_CLK13MOUTDMD MFP_CFG(DF_ADDR2, AF3) - -/* 1 wire */ -#define GPIO95_OW_DQ_IN MFP_CFG(GPIO95, AF5) - -#endif /* __ASM_ARCH_MFP_PXA9xx_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp.h deleted file mode 100644 index 271e249a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mfp.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 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 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_MFP_H -#define __ASM_ARCH_MFP_H - -#include <plat/mfp.h> - -#endif /* __ASM_ARCH_MFP_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mioa701.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mioa701.h deleted file mode 100644 index 02868447..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mioa701.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef _MIOA701_H_ -#define _MIOA701_H_ - -#define MIO_CFG_IN(pin, af) \ - ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK)) |\ - (MFP_PIN(pin) | MFP_##af | MFP_DIR_IN)) - -#define MIO_CFG_OUT(pin, af, state) \ - ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DIR_MASK | MFP_LPM_STATE_MASK)) |\ - (MFP_PIN(pin) | MFP_##af | MFP_DIR_OUT | MFP_LPM_##state)) - -/* Global GPIOs */ -#define GPIO9_CHARGE_EN 9 -#define GPIO18_POWEROFF 18 -#define GPIO87_LCD_POWER 87 -#define GPIO96_AC_DETECT 96 -#define GPIO80_MAYBE_CHARGE_VDROP 80 /* Drop of 88mV */ - -/* USB */ -#define GPIO13_nUSB_DETECT 13 -#define GPIO22_USB_ENABLE 22 - -/* SDIO bits */ -#define GPIO78_SDIO_RO 78 -#define GPIO15_SDIO_INSERT 15 -#define GPIO91_SDIO_EN 91 - -/* Bluetooth */ -#define GPIO14_BT_nACTIVITY 14 -#define GPIO83_BT_ON 83 -#define GPIO77_BT_UNKNOWN1 77 -#define GPIO86_BT_MAYBE_nRESET 86 - -/* GPS */ -#define GPIO23_GPS_UNKNOWN1 23 -#define GPIO26_GPS_ON 26 -#define GPIO27_GPS_RESET 27 -#define GPIO106_GPS_UNKNOWN2 106 -#define GPIO107_GPS_UNKNOWN3 107 - -/* GSM */ -#define GPIO24_GSM_MOD_RESET_CMD 24 -#define GPIO88_GSM_nMOD_ON_CMD 88 -#define GPIO90_GSM_nMOD_OFF_CMD 90 -#define GPIO114_GSM_nMOD_DTE_UART_STATE 114 -#define GPIO25_GSM_MOD_ON_STATE 25 -#define GPIO113_GSM_EVENT 113 - -/* SOUND */ -#define GPIO12_HPJACK_INSERT 12 - -/* LEDS */ -#define GPIO10_LED_nCharging 10 -#define GPIO97_LED_nBlue 97 -#define GPIO98_LED_nOrange 98 -#define GPIO82_LED_nVibra 82 -#define GPIO115_LED_nKeyboard 115 - -/* Keyboard */ -#define GPIO0_KEY_POWER 0 -#define GPIO93_KEY_VOLUME_UP 93 -#define GPIO94_KEY_VOLUME_DOWN 94 - -extern struct input_dev *mioa701_evdev; -extern void mioa701_gpio_lpm_set(unsigned long mfp_pin); - -/* Assembler externals mioa701_bootresume.S */ -extern u32 mioa701_bootstrap; -extern u32 mioa701_jumpaddr; -extern u32 mioa701_bootstrap_lg; - -#endif /* _MIOA701_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mmc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mmc.h deleted file mode 100644 index 9eb515bb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mmc.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef ASMARM_ARCH_MMC_H -#define ASMARM_ARCH_MMC_H - -#include <linux/mmc/host.h> -#include <linux/interrupt.h> - -struct device; -struct mmc_host; - -struct pxamci_platform_data { - unsigned int ocr_mask; /* available voltages */ - unsigned long detect_delay_ms; /* delay in millisecond before detecting cards after interrupt */ - int (*init)(struct device *, irq_handler_t , void *); - int (*get_ro)(struct device *); - void (*setpower)(struct device *, unsigned int); - void (*exit)(struct device *, void *); - int gpio_card_detect; /* gpio detecting card insertion */ - int gpio_card_ro; /* gpio detecting read only toggle */ - bool gpio_card_ro_invert; /* gpio ro is inverted */ - int gpio_power; /* gpio powering up MMC bus */ - bool gpio_power_invert; /* gpio power is inverted */ -}; - -extern void pxa_set_mci_info(struct pxamci_platform_data *info); -extern void pxa3xx_set_mci2_info(struct pxamci_platform_data *info); -extern void pxa3xx_set_mci3_info(struct pxamci_platform_data *info); - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mtd-xip.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mtd-xip.h deleted file mode 100644 index 990d2bf2..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mtd-xip.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ARCH_PXA_MTD_XIP_H__ -#define __ARCH_PXA_MTD_XIP_H__ - -#include <mach/regs-ost.h> - -#define xip_irqpending() (ICIP & ICMR) - -/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ -#define xip_currtime() (OSCR) -#define xip_elapsed_since(x) (signed)((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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mxm8x10.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mxm8x10.h deleted file mode 100644 index ffa15665..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/mxm8x10.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __MACH_MXM_8X10_H -#define __MACH_MXM_8X10_H - -#define MXM_8X10_ETH_PHYS 0x13000000 - -#if defined(CONFIG_MMC) - -#define MXM_8X10_SD_nCD (72) -#define MXM_8X10_SD_WP (84) - -extern void mxm_8x10_mmc_init(void); -#else -static inline void mxm_8x10_mmc_init(void) {} -#endif - -extern void mxm_8x10_usb_host_init(void); -extern void mxm_8x10_ac97_init(void); - -extern void mxm_8x10_barebones_init(void); - -#endif /* __MACH_MXM_8X10_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/ohci.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/ohci.h deleted file mode 100644 index 95b6e2a6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/ohci.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ASMARM_ARCH_OHCI_H -#define ASMARM_ARCH_OHCI_H - -struct device; - -struct pxaohci_platform_data { - int (*init)(struct device *); - void (*exit)(struct device *); - - unsigned long flags; -#define ENABLE_PORT1 (1 << 0) -#define ENABLE_PORT2 (1 << 1) -#define ENABLE_PORT3 (1 << 2) -#define ENABLE_PORT_ALL (ENABLE_PORT1 | ENABLE_PORT2 | ENABLE_PORT3) - -#define POWER_SENSE_LOW (1 << 3) -#define POWER_CONTROL_LOW (1 << 4) -#define NO_OC_PROTECTION (1 << 5) -#define OC_MODE_GLOBAL (0 << 6) -#define OC_MODE_PERPORT (1 << 6) - - int power_on_delay; /* Power On to Power Good time - in ms - * HCD must wait for this duration before - * accessing a powered on port - */ - int port_mode; -#define PMM_NPS_MODE 1 -#define PMM_GLOBAL_MODE 2 -#define PMM_PERPORT_MODE 3 - - int power_budget; -}; - -extern void pxa_set_ohci_info(struct pxaohci_platform_data *info); - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palm27x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palm27x.h deleted file mode 100644 index d4eac3d6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palm27x.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Common functions for Palm LD, T5, TX, Z72 - * - * Copyright (C) 2010 - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef __INCLUDE_MACH_PALM27X__ -#define __INCLUDE_MACH_PALM27X__ - -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -extern void __init palm27x_mmc_init(int detect, int ro, int power, - int power_inverted); -#else -static inline void palm27x_mmc_init(int detect, int ro, int power, - int power_inverted) -{} -#endif - -#if defined(CONFIG_SUSPEND) -extern void __init palm27x_pm_init(unsigned long str_base); -#else -static inline void palm27x_pm_init(unsigned long str_base) {} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -extern struct pxafb_mode_info palm_320x480_lcd_mode; -extern struct pxafb_mode_info palm_320x320_lcd_mode; -extern struct pxafb_mode_info palm_320x320_new_lcd_mode; -extern void __init palm27x_lcd_init(int power, - struct pxafb_mode_info *mode); -#else -#define palm27x_lcd_init(power, mode) do {} while (0) -#endif - -#if defined(CONFIG_USB_PXA27X) || \ - defined(CONFIG_USB_PXA27X_MODULE) -extern void __init palm27x_udc_init(int vbus, int pullup, - int vbus_inverted); -#else -static inline void palm27x_udc_init(int vbus, int pullup, int vbus_inverted) {} -#endif - -#if defined(CONFIG_IRDA) || defined(CONFIG_IRDA_MODULE) -extern void __init palm27x_irda_init(int pwdn); -#else -static inline void palm27x_irda_init(int pwdn) {} -#endif - -#if defined(CONFIG_TOUCHSCREEN_WM97XX) || \ - defined(CONFIG_TOUCHSCREEN_WM97XX_MODULE) -extern void __init palm27x_ac97_init(int minv, int maxv, int jack, - int reset); -#else -static inline void palm27x_ac97_init(int minv, int maxv, int jack, int reset) {} -#endif - -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -extern void __init palm27x_pwm_init(int bl, int lcd); -#else -static inline void palm27x_pwm_init(int bl, int lcd) {} -#endif - -#if defined(CONFIG_PDA_POWER) || defined(CONFIG_PDA_POWER_MODULE) -extern void __init palm27x_power_init(int ac, int usb); -#else -static inline void palm27x_power_init(int ac, int usb) {} -#endif - -#if defined(CONFIG_REGULATOR_MAX1586) || \ - defined(CONFIG_REGULATOR_MAX1586_MODULE) -extern void __init palm27x_pmic_init(void); -#else -static inline void palm27x_pmic_init(void) {} -#endif - -#endif /* __INCLUDE_MACH_PALM27X__ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmasoc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmasoc.h deleted file mode 100644 index 58afb30d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmasoc.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _INCLUDE_PALMASOC_H_ -#define _INCLUDE_PALMASOC_H_ - -struct palm27x_asoc_info { - int jack_gpio; -}; - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmld.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmld.h deleted file mode 100644 index 2c447133..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmld.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * GPIOs and interrupts for Palm LifeDrive Handheld Computer - * - * Authors: Alex Osborne <ato@meshy.org> - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMLD_H_ -#define _INCLUDE_PALMLD_H_ - -/** 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmt5.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmt5.h deleted file mode 100644 index 0bd4f036..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmt5.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * GPIOs and interrupts for Palm Tungsten|T5 Handheld Computer - * - * Authors: Ales Snuparek <snuparek@atlas.cz> - * Marek Vasut <marek.vasut@gmail.com> - * Justin Kendrick <twilightsentry@gmail.com> - * RichardT5 <richard_t5@users.sourceforge.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMT5_H_ -#define _INCLUDE_PALMT5_H_ - -/** HERE ARE GPIOs **/ - -/* GPIOs */ -#define GPIO_NR_PALMT5_GPIO_RESET 1 - -#define GPIO_NR_PALMT5_POWER_DETECT 90 -#define GPIO_NR_PALMT5_HOTSYNC_BUTTON_N 10 -#define GPIO_NR_PALMT5_EARPHONE_DETECT 107 - -/* SD/MMC */ -#define GPIO_NR_PALMT5_SD_DETECT_N 14 -#define GPIO_NR_PALMT5_SD_POWER 114 -#define GPIO_NR_PALMT5_SD_READONLY 115 - -/* TOUCHSCREEN */ -#define GPIO_NR_PALMT5_WM9712_IRQ 27 - -/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */ -#define GPIO_NR_PALMT5_IR_DISABLE 40 - -/* USB */ -#define GPIO_NR_PALMT5_USB_DETECT_N 15 -#define GPIO_NR_PALMT5_USB_PULLUP 93 - -/* LCD/BACKLIGHT */ -#define GPIO_NR_PALMT5_BL_POWER 84 -#define GPIO_NR_PALMT5_LCD_POWER 96 - -/* BLUETOOTH */ -#define GPIO_NR_PALMT5_BT_POWER 17 -#define GPIO_NR_PALMT5_BT_RESET 83 - -/* INTERRUPTS */ -#define IRQ_GPIO_PALMT5_SD_DETECT_N PXA_GPIO_TO_IRQ(GPIO_NR_PALMT5_SD_DETECT_N) -#define IRQ_GPIO_PALMT5_WM9712_IRQ PXA_GPIO_TO_IRQ(GPIO_NR_PALMT5_WM9712_IRQ) -#define IRQ_GPIO_PALMT5_USB_DETECT PXA_GPIO_TO_IRQ(GPIO_NR_PALMT5_USB_DETECT) -#define IRQ_GPIO_PALMT5_GPIO_RESET PXA_GPIO_TO_IRQ(GPIO_NR_PALMT5_GPIO_RESET) - -/** HERE ARE INIT VALUES **/ - -/* Various addresses */ -#define PALMT5_PHYS_RAM_START 0xa0000000 -#define PALMT5_PHYS_IO_START 0x40000000 -#define PALMT5_STR_BASE 0xa0200000 - -/* TOUCHSCREEN */ -#define AC97_LINK_FRAME 21 - -/* BATTERY */ -#define PALMT5_BAT_MAX_VOLTAGE 4000 /* 4.00v current voltage */ -#define PALMT5_BAT_MIN_VOLTAGE 3550 /* 3.55v critical voltage */ -#define PALMT5_BAT_MAX_CURRENT 0 /* unknown */ -#define PALMT5_BAT_MIN_CURRENT 0 /* unknown */ -#define PALMT5_BAT_MAX_CHARGE 1 /* unknown */ -#define PALMT5_BAT_MIN_CHARGE 1 /* unknown */ -#define PALMT5_MAX_LIFE_MINS 360 /* on-life in minutes */ - -#define PALMT5_BAT_MEASURE_DELAY (HZ * 1) - -/* BACKLIGHT */ -#define PALMT5_MAX_INTENSITY 0xFE -#define PALMT5_DEFAULT_INTENSITY 0x7E -#define PALMT5_LIMIT_MASK 0x7F -#define PALMT5_PRESCALER 0x3F -#define PALMT5_PERIOD_NS 3500 - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtc.h deleted file mode 100644 index c383a216..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtc.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMTC_H_ -#define _INCLUDE_PALMTC_H_ - -/** 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmte2.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmte2.h deleted file mode 100644 index f89e989a..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmte2.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * GPIOs and interrupts for Palm Tungsten|E2 Handheld Computer - * - * Author: - * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMTE2_H_ -#define _INCLUDE_PALMTE2_H_ - -/** HERE ARE GPIOs **/ - -/* GPIOs */ -#define GPIO_NR_PALMTE2_POWER_DETECT 9 -#define GPIO_NR_PALMTE2_HOTSYNC_BUTTON_N 4 -#define GPIO_NR_PALMTE2_EARPHONE_DETECT 15 - -/* SD/MMC */ -#define GPIO_NR_PALMTE2_SD_DETECT_N 10 -#define GPIO_NR_PALMTE2_SD_POWER 55 -#define GPIO_NR_PALMTE2_SD_READONLY 51 - -/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */ -#define GPIO_NR_PALMTE2_IR_DISABLE 48 - -/* USB */ -#define GPIO_NR_PALMTE2_USB_DETECT_N 35 -#define GPIO_NR_PALMTE2_USB_PULLUP 53 - -/* LCD/BACKLIGHT */ -#define GPIO_NR_PALMTE2_BL_POWER 56 -#define GPIO_NR_PALMTE2_LCD_POWER 37 - -/* KEYS */ -#define GPIO_NR_PALMTE2_KEY_NOTES 5 -#define GPIO_NR_PALMTE2_KEY_TASKS 7 -#define GPIO_NR_PALMTE2_KEY_CALENDAR 11 -#define GPIO_NR_PALMTE2_KEY_CONTACTS 13 -#define GPIO_NR_PALMTE2_KEY_CENTER 14 -#define GPIO_NR_PALMTE2_KEY_LEFT 19 -#define GPIO_NR_PALMTE2_KEY_RIGHT 20 -#define GPIO_NR_PALMTE2_KEY_DOWN 21 -#define GPIO_NR_PALMTE2_KEY_UP 22 - -/** HERE ARE INIT VALUES **/ - -/* BACKLIGHT */ -#define PALMTE2_MAX_INTENSITY 0xFE -#define PALMTE2_DEFAULT_INTENSITY 0x7E -#define PALMTE2_LIMIT_MASK 0x7F -#define PALMTE2_PRESCALER 0x3F -#define PALMTE2_PERIOD_NS 3500 - -/* BATTERY */ -#define PALMTE2_BAT_MAX_VOLTAGE 4000 /* 4.00v current voltage */ -#define PALMTE2_BAT_MIN_VOLTAGE 3550 /* 3.55v critical voltage */ -#define PALMTE2_BAT_MAX_CURRENT 0 /* unknown */ -#define PALMTE2_BAT_MIN_CURRENT 0 /* unknown */ -#define PALMTE2_BAT_MAX_CHARGE 1 /* unknown */ -#define PALMTE2_BAT_MIN_CHARGE 1 /* unknown */ -#define PALMTE2_MAX_LIFE_MINS 360 /* on-life in minutes */ - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtreo.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtreo.h deleted file mode 100644 index 2d3f14e3..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtreo.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * GPIOs and interrupts for Palm Treo smartphones - * - * currently supported: - * Palm Treo 680 (GSM) - * Palm Centro 685 (GSM) - * - * Author: Tomas Cech <sleep_walker@suse.cz> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * find more info at www.hackndev.com - * - */ - -#ifndef _INCLUDE_TREO_H_ -#define _INCLUDE_TREO_H_ - -/* GPIOs */ -#define GPIO_NR_TREO_POWER_DETECT 0 -#define GPIO_NR_TREO_AMP_EN 27 -#define GPIO_NR_TREO_GREEN_LED 20 -#define GPIO_NR_TREO_RED_LED 79 -#define GPIO_NR_TREO_SD_DETECT_N 113 -#define GPIO_NR_TREO_EP_DETECT_N 116 -#define GPIO_NR_TREO_USB_DETECT 1 -#define GPIO_NR_TREO_USB_PULLUP 114 -#define GPIO_NR_TREO_GSM_POWER 40 -#define GPIO_NR_TREO_GSM_RESET 87 -#define GPIO_NR_TREO_GSM_WAKE 57 -#define GPIO_NR_TREO_GSM_HOST_WAKE 14 -#define GPIO_NR_TREO_GSM_TRIGGER 10 -#define GPIO_NR_TREO_IR_EN 115 -#define GPIO_NR_TREO_IR_TXD 47 -#define GPIO_NR_TREO_BL_POWER 38 -#define GPIO_NR_TREO_LCD_POWER 25 - -/* Treo680 specific GPIOs */ -#ifdef CONFIG_MACH_TREO680 -#define GPIO_NR_TREO680_SD_READONLY 33 -#define GPIO_NR_TREO680_SD_POWER 42 -#define GPIO_NR_TREO680_VIBRATE_EN 44 -#define GPIO_NR_TREO680_KEYB_BL 24 -#define GPIO_NR_TREO680_BT_EN 43 -#endif /* CONFIG_MACH_TREO680 */ - -/* Centro685 specific GPIOs */ -#define GPIO_NR_CENTRO_SD_POWER 21 -#define GPIO_NR_CENTRO_VIBRATE_EN 22 -#define GPIO_NR_CENTRO_KEYB_BL 33 -#define GPIO_NR_CENTRO_BT_EN 80 - -/* Various addresses */ -#define TREO_PHYS_RAM_START 0xa0000000 -#define TREO_PHYS_IO_START 0x40000000 -#define TREO_STR_BASE 0xa2000000 - -/* BACKLIGHT */ -#define TREO_MAX_INTENSITY 254 -#define TREO_DEFAULT_INTENSITY 160 -#define TREO_LIMIT_MASK 0x7F -#define TREO_PRESCALER 63 -#define TREO_PERIOD_NS 3500 - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtx.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtx.h deleted file mode 100644 index f2e53038..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmtx.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMTX_H_ -#define _INCLUDE_PALMTX_H_ - -/** 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmz72.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmz72.h deleted file mode 100644 index 0d4700a7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/palmz72.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * GPIOs and interrupts for Palm Zire72 Handheld Computer - * - * Authors: Alex Osborne <bobofdoom@gmail.com> - * Jan Herman <2hp@seznam.cz> - * Sergey Lapin <slapin@ossfans.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#ifndef _INCLUDE_PALMZ72_H_ -#define _INCLUDE_PALMZ72_H_ - -/* Power and control */ -#define GPIO_NR_PALMZ72_GPIO_RESET 1 -#define GPIO_NR_PALMZ72_POWER_DETECT 0 - -/* SD/MMC */ -#define GPIO_NR_PALMZ72_SD_DETECT_N 14 -#define GPIO_NR_PALMZ72_SD_POWER_N 98 -#define GPIO_NR_PALMZ72_SD_RO 115 - -/* Touchscreen */ -#define GPIO_NR_PALMZ72_WM9712_IRQ 27 - -/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */ -#define GPIO_NR_PALMZ72_IR_DISABLE 49 - -/* USB */ -#define GPIO_NR_PALMZ72_USB_DETECT_N 15 -#define GPIO_NR_PALMZ72_USB_PULLUP 95 - -/* LCD/Backlight */ -#define GPIO_NR_PALMZ72_BL_POWER 20 -#define GPIO_NR_PALMZ72_LCD_POWER 96 - -/* LED */ -#define GPIO_NR_PALMZ72_LED_GREEN 88 - -/* Bluetooth */ -#define GPIO_NR_PALMZ72_BT_POWER 17 -#define GPIO_NR_PALMZ72_BT_RESET 83 - -/* Camera */ -#define GPIO_NR_PALMZ72_CAM_PWDN 56 -#define GPIO_NR_PALMZ72_CAM_RESET 57 -#define GPIO_NR_PALMZ72_CAM_POWER 91 - -/** Initial values **/ - -/* Battery */ -#define PALMZ72_BAT_MAX_VOLTAGE 4000 /* 4.00v current voltage */ -#define PALMZ72_BAT_MIN_VOLTAGE 3550 /* 3.55v critical voltage */ -#define PALMZ72_BAT_MAX_CURRENT 0 /* unknown */ -#define PALMZ72_BAT_MIN_CURRENT 0 /* unknown */ -#define PALMZ72_BAT_MAX_CHARGE 1 /* unknown */ -#define PALMZ72_BAT_MIN_CHARGE 1 /* unknown */ -#define PALMZ72_MAX_LIFE_MINS 360 /* on-life in minutes */ - -/* Backlight */ -#define PALMZ72_MAX_INTENSITY 0xFE -#define PALMZ72_DEFAULT_INTENSITY 0x7E -#define PALMZ72_LIMIT_MASK 0x7F -#define PALMZ72_PRESCALER 0x3F -#define PALMZ72_PERIOD_NS 3500 - -#ifdef CONFIG_PM -struct palmz72_resume_info { - u32 magic0; /* 0x0 */ - u32 magic1; /* 0x4 */ - u32 resume_addr; /* 0x8 */ - u32 pad[11]; /* 0xc..0x37 */ - u32 arm_control; /* 0x38 */ - u32 aux_control; /* 0x3c */ - u32 ttb; /* 0x40 */ - u32 domain_access; /* 0x44 */ - u32 process_id; /* 0x48 */ -}; -#endif -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pata_pxa.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pata_pxa.h deleted file mode 100644 index 6cf7df1d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pata_pxa.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Generic PXA PATA driver - * - * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __MACH_PATA_PXA_H__ -#define __MACH_PATA_PXA_H__ - -struct pata_pxa_pdata { - /* PXA DMA DREQ<0:2> pin */ - uint32_t dma_dreq; - /* Register shift */ - uint32_t reg_shift; - /* IRQ flags */ - uint32_t irq_flags; -}; - -#endif /* __MACH_PATA_PXA_H__ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm027.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm027.h deleted file mode 100644 index 6bf28de2..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm027.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/pcm027.h - * - * (c) 2003 Phytec Messtechnik GmbH <armlinux@phytec.de> - * (c) 2007 Juergen Beisert <j.beisert@pengutronix.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* - * Definitions of CPU card resources only - */ - -/* phyCORE-PXA270 (PCM027) Interrupts */ -#define PCM027_IRQ(x) (IRQ_BOARD_START + (x)) -#define PCM027_BTDET_IRQ PCM027_IRQ(0) -#define PCM027_FF_RI_IRQ PCM027_IRQ(1) -#define PCM027_MMCDET_IRQ PCM027_IRQ(2) -#define PCM027_PM_5V_IRQ PCM027_IRQ(3) - -#define PCM027_NR_IRQS (IRQ_BOARD_START + 32) - -/* I2C RTC */ -#define PCM027_RTC_IRQ_GPIO 0 -#define PCM027_RTC_IRQ PXA_GPIO_TO_IRQ(PCM027_RTC_IRQ_GPIO) -#define PCM027_RTC_IRQ_EDGE IRQ_TYPE_EDGE_FALLING -#define ADR_PCM027_RTC 0x51 /* I2C address */ - -/* I2C EEPROM */ -#define ADR_PCM027_EEPROM 0x54 /* I2C address */ - -/* Ethernet chip (SMSC91C111) */ -#define PCM027_ETH_IRQ_GPIO 52 -#define PCM027_ETH_IRQ PXA_GPIO_TO_IRQ(PCM027_ETH_IRQ_GPIO) -#define PCM027_ETH_IRQ_EDGE IRQ_TYPE_EDGE_RISING -#define PCM027_ETH_PHYS PXA_CS5_PHYS -#define PCM027_ETH_SIZE (1*1024*1024) - -/* CAN controller SJA1000 (unsupported yet) */ -#define PCM027_CAN_IRQ_GPIO 114 -#define PCM027_CAN_IRQ PXA_GPIO_TO_IRQ(PCM027_CAN_IRQ_GPIO) -#define PCM027_CAN_IRQ_EDGE IRQ_TYPE_EDGE_FALLING -#define PCM027_CAN_PHYS 0x22000000 -#define PCM027_CAN_SIZE 0x100 - -/* SPI GPIO expander (unsupported yet) */ -#define PCM027_EGPIO_IRQ_GPIO 27 -#define PCM027_EGPIO_IRQ PXA_GPIO_TO_IRQ(PCM027_EGPIO_IRQ_GPIO) -#define PCM027_EGPIO_IRQ_EDGE IRQ_TYPE_EDGE_FALLING -#define PCM027_EGPIO_CS 24 -/* - * TODO: Switch this pin from dedicated usage to GPIO if - * more than the MAX7301 device is connected to this SPI bus - */ -#define PCM027_EGPIO_CS_MODE GPIO24_SFRM_MD - -/* Flash memory */ -#define PCM027_FLASH_PHYS 0x00000000 -#define PCM027_FLASH_SIZE 0x02000000 - -/* onboard LEDs connected to GPIO */ -#define PCM027_LED_CPU 90 -#define PCM027_LED_HEARD_BEAT 91 - -/* - * This CPU module needs a baseboard to work. After basic initializing - * its own devices, it calls baseboard's init function. - * TODO: Add your own basebaord init function and call it from - * inside pcm027_init(). This example here is for the developmen board. - * Refer pcm990-baseboard.c - */ -extern void pcm990_baseboard_init(void); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h deleted file mode 100644 index d7279169..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pcm990_baseboard.h +++ /dev/null @@ -1,275 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/pcm990_baseboard.h - * - * (c) 2003 Phytec Messtechnik GmbH <armlinux@phytec.de> - * (c) 2007 Juergen Beisert <j.beisert@pengutronix.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include <mach/pcm027.h> - -/* - * definitions relevant only when the PCM-990 - * development base board is in use - */ - -/* CPLD's interrupt controller is connected to PCM-027 GPIO 9 */ -#define PCM990_CTRL_INT_IRQ_GPIO 9 -#define PCM990_CTRL_INT_IRQ PXA_GPIO_TO_IRQ(PCM990_CTRL_INT_IRQ_GPIO) -#define PCM990_CTRL_INT_IRQ_EDGE IRQ_TYPE_EDGE_RISING -#define PCM990_CTRL_PHYS PXA_CS1_PHYS /* 16-Bit */ -#define PCM990_CTRL_BASE 0xea000000 -#define PCM990_CTRL_SIZE (1*1024*1024) - -#define PCM990_CTRL_PWR_IRQ_GPIO 14 -#define PCM990_CTRL_PWR_IRQ PXA_GPIO_TO_IRQ(PCM990_CTRL_PWR_IRQ_GPIO) -#define PCM990_CTRL_PWR_IRQ_EDGE IRQ_TYPE_EDGE_RISING - -/* visible CPLD (U7) registers */ -#define PCM990_CTRL_REG0 0x0000 /* RESET REGISTER */ -#define PCM990_CTRL_SYSRES 0x0001 /* System RESET REGISTER */ -#define PCM990_CTRL_RESOUT 0x0002 /* RESETOUT Enable REGISTER */ -#define PCM990_CTRL_RESGPIO 0x0004 /* RESETGPIO Enable REGISTER */ - -#define PCM990_CTRL_REG1 0x0002 /* Power REGISTER */ -#define PCM990_CTRL_5VOFF 0x0001 /* Disable 5V Regulators */ -#define PCM990_CTRL_CANPWR 0x0004 /* Enable CANPWR ADUM */ -#define PCM990_CTRL_PM_5V 0x0008 /* Read 5V OK */ - -#define PCM990_CTRL_REG2 0x0004 /* LED REGISTER */ -#define PCM990_CTRL_LEDPWR 0x0001 /* POWER LED enable */ -#define PCM990_CTRL_LEDBAS 0x0002 /* BASIS LED enable */ -#define PCM990_CTRL_LEDUSR 0x0004 /* USER LED enable */ - -#define PCM990_CTRL_REG3 0x0006 /* LCD CTRL REGISTER 3 */ -#define PCM990_CTRL_LCDPWR 0x0001 /* RW LCD Power on */ -#define PCM990_CTRL_LCDON 0x0002 /* RW LCD Latch on */ -#define PCM990_CTRL_LCDPOS1 0x0004 /* RW POS 1 */ -#define PCM990_CTRL_LCDPOS2 0x0008 /* RW POS 2 */ - -#define PCM990_CTRL_REG4 0x0008 /* MMC1 CTRL REGISTER 4 */ -#define PCM990_CTRL_MMC1PWR 0x0001 /* RW MMC1 Power on */ - -#define PCM990_CTRL_REG5 0x000A /* MMC2 CTRL REGISTER 5 */ -#define PCM990_CTRL_MMC2PWR 0x0001 /* RW MMC2 Power on */ -#define PCM990_CTRL_MMC2LED 0x0002 /* RW MMC2 LED */ -#define PCM990_CTRL_MMC2DE 0x0004 /* R MMC2 Card detect */ -#define PCM990_CTRL_MMC2WP 0x0008 /* R MMC2 Card write protect */ - -#define PCM990_CTRL_REG6 0x000C /* Interrupt Clear REGISTER */ -#define PCM990_CTRL_INTC0 0x0001 /* Clear Reg BT Detect */ -#define PCM990_CTRL_INTC1 0x0002 /* Clear Reg FR RI */ -#define PCM990_CTRL_INTC2 0x0004 /* Clear Reg MMC1 Detect */ -#define PCM990_CTRL_INTC3 0x0008 /* Clear Reg PM_5V off */ - -#define PCM990_CTRL_REG7 0x000E /* Interrupt Enable REGISTER */ -#define PCM990_CTRL_ENAINT0 0x0001 /* Enable Int BT Detect */ -#define PCM990_CTRL_ENAINT1 0x0002 /* Enable Int FR RI */ -#define PCM990_CTRL_ENAINT2 0x0004 /* Enable Int MMC1 Detect */ -#define PCM990_CTRL_ENAINT3 0x0008 /* Enable Int PM_5V off */ - -#define PCM990_CTRL_REG8 0x0014 /* Uart REGISTER */ -#define PCM990_CTRL_FFSD 0x0001 /* BT Uart Enable */ -#define PCM990_CTRL_BTSD 0x0002 /* FF Uart Enable */ -#define PCM990_CTRL_FFRI 0x0004 /* FF Uart RI detect */ -#define PCM990_CTRL_BTRX 0x0008 /* BT Uart Rx detect */ - -#define PCM990_CTRL_REG9 0x0010 /* AC97 Flash REGISTER */ -#define PCM990_CTRL_FLWP 0x0001 /* pC Flash Write Protect */ -#define PCM990_CTRL_FLDIS 0x0002 /* pC Flash Disable */ -#define PCM990_CTRL_AC97ENA 0x0004 /* Enable AC97 Expansion */ - -#define PCM990_CTRL_REG10 0x0012 /* GPS-REGISTER */ -#define PCM990_CTRL_GPSPWR 0x0004 /* GPS-Modul Power on */ -#define PCM990_CTRL_GPSENA 0x0008 /* GPS-Modul Enable */ - -#define PCM990_CTRL_REG11 0x0014 /* Accu REGISTER */ -#define PCM990_CTRL_ACENA 0x0001 /* Charge Enable */ -#define PCM990_CTRL_ACSEL 0x0002 /* Charge Akku -> DC Enable */ -#define PCM990_CTRL_ACPRES 0x0004 /* DC Present */ -#define PCM990_CTRL_ACALARM 0x0008 /* Error Akku */ - -#define PCM990_CTRL_P2V(x) ((x) - PCM990_CTRL_PHYS + PCM990_CTRL_BASE) -#define PCM990_CTRL_V2P(x) ((x) - PCM990_CTRL_BASE + PCM990_CTRL_PHYS) - -#ifndef __ASSEMBLY__ -# define __PCM990_CTRL_REG(x) \ - (*((volatile unsigned char *)PCM990_CTRL_P2V(x))) -#else -# define __PCM990_CTRL_REG(x) PCM990_CTRL_P2V(x) -#endif - -#define PCM990_INTMSKENA __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG7) -#define PCM990_INTSETCLR __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG6) -#define PCM990_CTRL0 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG0) -#define PCM990_CTRL1 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG1) -#define PCM990_CTRL2 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG2) -#define PCM990_CTRL3 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) -#define PCM990_CTRL4 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG4) -#define PCM990_CTRL5 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG5) -#define PCM990_CTRL6 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG6) -#define PCM990_CTRL7 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG7) -#define PCM990_CTRL8 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG8) -#define PCM990_CTRL9 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG9) -#define PCM990_CTRL10 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG10) -#define PCM990_CTRL11 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG11) - - -/* - * IDE - */ -#define PCM990_IDE_IRQ_GPIO 13 -#define PCM990_IDE_IRQ PXA_GPIO_TO_IRQ(PCM990_IDE_IRQ_GPIO) -#define PCM990_IDE_IRQ_EDGE IRQ_TYPE_EDGE_RISING -#define PCM990_IDE_PLD_PHYS 0x20000000 /* 16 bit wide */ -#define PCM990_IDE_PLD_BASE 0xee000000 -#define PCM990_IDE_PLD_SIZE (1*1024*1024) - -/* visible CPLD (U6) registers */ -#define PCM990_IDE_PLD_REG0 0x1000 /* OFFSET IDE REGISTER 0 */ -#define PCM990_IDE_PM5V 0x0004 /* R System VCC_5V */ -#define PCM990_IDE_STBY 0x0008 /* R System StandBy */ - -#define PCM990_IDE_PLD_REG1 0x1002 /* OFFSET IDE REGISTER 1 */ -#define PCM990_IDE_IDEMODE 0x0001 /* R TrueIDE Mode */ -#define PCM990_IDE_DMAENA 0x0004 /* RW DMA Enable */ -#define PCM990_IDE_DMA1_0 0x0008 /* RW 1=DREQ1 0=DREQ0 */ - -#define PCM990_IDE_PLD_REG2 0x1004 /* OFFSET IDE REGISTER 2 */ -#define PCM990_IDE_RESENA 0x0001 /* RW IDE Reset Bit enable */ -#define PCM990_IDE_RES 0x0002 /* RW IDE Reset Bit */ -#define PCM990_IDE_RDY 0x0008 /* RDY */ - -#define PCM990_IDE_PLD_REG3 0x1006 /* OFFSET IDE REGISTER 3 */ -#define PCM990_IDE_IDEOE 0x0001 /* RW Latch on Databus */ -#define PCM990_IDE_IDEON 0x0002 /* RW Latch on Control Address */ -#define PCM990_IDE_IDEIN 0x0004 /* RW Latch on Interrupt usw. */ - -#define PCM990_IDE_PLD_REG4 0x1008 /* OFFSET IDE REGISTER 4 */ -#define PCM990_IDE_PWRENA 0x0001 /* RW IDE Power enable */ -#define PCM990_IDE_5V 0x0002 /* R IDE Power 5V */ -#define PCM990_IDE_PWG 0x0008 /* R IDE Power is on */ - -#define PCM990_IDE_PLD_P2V(x) ((x) - PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_BASE) -#define PCM990_IDE_PLD_V2P(x) ((x) - PCM990_IDE_PLD_BASE + PCM990_IDE_PLD_PHYS) - -#ifndef __ASSEMBLY__ -# define __PCM990_IDE_PLD_REG(x) \ - (*((volatile unsigned char *)PCM990_IDE_PLD_P2V(x))) -#else -# define __PCM990_IDE_PLD_REG(x) PCM990_IDE_PLD_P2V(x) -#endif - -#define PCM990_IDE0 \ - __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG0) -#define PCM990_IDE1 \ - __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG1) -#define PCM990_IDE2 \ - __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG2) -#define PCM990_IDE3 \ - __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG3) -#define PCM990_IDE4 \ - __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG4) - -/* - * Compact Flash - */ -#define PCM990_CF_IRQ_GPIO 11 -#define PCM990_CF_IRQ PXA_GPIO_TO_IRQ(PCM990_CF_IRQ_GPIO) -#define PCM990_CF_IRQ_EDGE IRQ_TYPE_EDGE_RISING - -#define PCM990_CF_CD_GPIO 12 -#define PCM990_CF_CD PXA_GPIO_TO_IRQ(PCM990_CF_CD_GPIO) -#define PCM990_CF_CD_EDGE IRQ_TYPE_EDGE_RISING - -#define PCM990_CF_PLD_PHYS 0x30000000 /* 16 bit wide */ -#define PCM990_CF_PLD_BASE 0xef000000 -#define PCM990_CF_PLD_SIZE (1*1024*1024) -#define PCM990_CF_PLD_P2V(x) ((x) - PCM990_CF_PLD_PHYS + PCM990_CF_PLD_BASE) -#define PCM990_CF_PLD_V2P(x) ((x) - PCM990_CF_PLD_BASE + PCM990_CF_PLD_PHYS) - -/* visible CPLD (U6) registers */ -#define PCM990_CF_PLD_REG0 0x1000 /* OFFSET CF REGISTER 0 */ -#define PCM990_CF_REG0_LED 0x0001 /* RW LED on */ -#define PCM990_CF_REG0_BLK 0x0002 /* RW LED flash when access */ -#define PCM990_CF_REG0_PM5V 0x0004 /* R System VCC_5V enable */ -#define PCM990_CF_REG0_STBY 0x0008 /* R System StandBy */ - -#define PCM990_CF_PLD_REG1 0x1002 /* OFFSET CF REGISTER 1 */ -#define PCM990_CF_REG1_IDEMODE 0x0001 /* RW CF card run as TrueIDE */ -#define PCM990_CF_REG1_CF0 0x0002 /* RW CF card at ADDR 0x28000000 */ - -#define PCM990_CF_PLD_REG2 0x1004 /* OFFSET CF REGISTER 2 */ -#define PCM990_CF_REG2_RES 0x0002 /* RW CF RESET BIT */ -#define PCM990_CF_REG2_RDYENA 0x0004 /* RW Enable CF_RDY */ -#define PCM990_CF_REG2_RDY 0x0008 /* R CF_RDY auf PWAIT */ - -#define PCM990_CF_PLD_REG3 0x1006 /* OFFSET CF REGISTER 3 */ -#define PCM990_CF_REG3_CFOE 0x0001 /* RW Latch on Databus */ -#define PCM990_CF_REG3_CFON 0x0002 /* RW Latch on Control Address */ -#define PCM990_CF_REG3_CFIN 0x0004 /* RW Latch on Interrupt usw. */ -#define PCM990_CF_REG3_CFCD 0x0008 /* RW Latch on CD1/2 VS1/2 usw */ - -#define PCM990_CF_PLD_REG4 0x1008 /* OFFSET CF REGISTER 4 */ -#define PCM990_CF_REG4_PWRENA 0x0001 /* RW CF Power on (CD1/2 = "00") */ -#define PCM990_CF_REG4_5_3V 0x0002 /* RW 1 = 5V CF_VCC 0 = 3 V CF_VCC */ -#define PCM990_CF_REG4_3B 0x0004 /* RW 3.0V Backup from VCC (5_3V=0) */ -#define PCM990_CF_REG4_PWG 0x0008 /* R CF-Power is on */ - -#define PCM990_CF_PLD_REG5 0x100A /* OFFSET CF REGISTER 5 */ -#define PCM990_CF_REG5_BVD1 0x0001 /* R CF /BVD1 */ -#define PCM990_CF_REG5_BVD2 0x0002 /* R CF /BVD2 */ -#define PCM990_CF_REG5_VS1 0x0004 /* R CF /VS1 */ -#define PCM990_CF_REG5_VS2 0x0008 /* R CF /VS2 */ - -#define PCM990_CF_PLD_REG6 0x100C /* OFFSET CF REGISTER 6 */ -#define PCM990_CF_REG6_CD1 0x0001 /* R CF Card_Detect1 */ -#define PCM990_CF_REG6_CD2 0x0002 /* R CF Card_Detect2 */ - -#ifndef __ASSEMBLY__ -# define __PCM990_CF_PLD_REG(x) \ - (*((volatile unsigned char *)PCM990_CF_PLD_P2V(x))) -#else -# define __PCM990_CF_PLD_REG(x) PCM990_CF_PLD_P2V(x) -#endif - -#define PCM990_CF0 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG0) -#define PCM990_CF1 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG1) -#define PCM990_CF2 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG2) -#define PCM990_CF3 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG3) -#define PCM990_CF4 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG4) -#define PCM990_CF5 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG5) -#define PCM990_CF6 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG6) - -/* - * Wolfson AC97 Touch - */ -#define PCM990_AC97_IRQ_GPIO 10 -#define PCM990_AC97_IRQ PXA_GPIO_TO_IRQ(PCM990_AC97_IRQ_GPIO) -#define PCM990_AC97_IRQ_EDGE IRQ_TYPE_EDGE_RISING - -/* - * MMC phyCORE - */ -#define PCM990_MMC0_IRQ_GPIO 9 -#define PCM990_MMC0_IRQ PXA_GPIO_TO_IRQ(PCM990_MMC0_IRQ_GPIO) -#define PCM990_MMC0_IRQ_EDGE IRQ_TYPE_EDGE_FALLING - -/* - * USB phyCore - */ -#define PCM990_USB_OVERCURRENT (88 | GPIO_ALT_FN_1_IN) -#define PCM990_USB_PWR_EN (89 | GPIO_ALT_FN_2_OUT) diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pm.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pm.h deleted file mode 100644 index 51558bce..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pm.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2005 Richard Purdie - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/suspend.h> - -struct pxa_cpu_pm_fns { - int save_count; - void (*save)(unsigned long *); - void (*restore)(unsigned long *); - int (*valid)(suspend_state_t state); - void (*enter)(suspend_state_t state); - int (*prepare)(void); - void (*finish)(void); -}; - -extern struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; - -/* sleep.S */ -extern int pxa25x_finish_suspend(unsigned long); -extern int pxa27x_finish_suspend(unsigned long); - -extern int pxa_pm_enter(suspend_state_t state); -extern int pxa_pm_prepare(void); -extern void pxa_pm_finish(void); - -/* NOTE: this is for PM debugging on Lubbock, it's really a big - * ugly, but let's keep the crap minimum here, instead of direct - * accessing the LUBBOCK CPLD registers in arch/arm/mach-pxa/pm.c - */ -#ifdef CONFIG_ARCH_LUBBOCK -extern void lubbock_set_hexled(uint32_t value); -#else -#define lubbock_set_hexled(x) -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/poodle.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/poodle.h deleted file mode 100644 index f32ff75d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/poodle.h +++ /dev/null @@ -1,92 +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 - -/* - * 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x-udc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x-udc.h deleted file mode 100644 index 1b80a480..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x-udc.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef _ASM_ARCH_PXA25X_UDC_H -#define _ASM_ARCH_PXA25X_UDC_H - -#ifdef _ASM_ARCH_PXA27X_UDC_H -#error "You can't include both PXA25x and PXA27x UDC support" -#endif - -#define UDC_RES1 __REG(0x40600004) /* UDC Undocumented - Reserved1 */ -#define UDC_RES2 __REG(0x40600008) /* UDC Undocumented - Reserved2 */ -#define UDC_RES3 __REG(0x4060000C) /* UDC Undocumented - Reserved3 */ - -#define UDCCR __REG(0x40600000) /* UDC Control Register */ -#define UDCCR_UDE (1 << 0) /* UDC enable */ -#define UDCCR_UDA (1 << 1) /* UDC active */ -#define UDCCR_RSM (1 << 2) /* Device resume */ -#define UDCCR_RESIR (1 << 3) /* Resume interrupt request */ -#define UDCCR_SUSIR (1 << 4) /* Suspend interrupt request */ -#define UDCCR_SRM (1 << 5) /* Suspend/resume interrupt mask */ -#define UDCCR_RSTIR (1 << 6) /* Reset interrupt request */ -#define UDCCR_REM (1 << 7) /* Reset interrupt mask */ - -#define UDCCS0 __REG(0x40600010) /* UDC Endpoint 0 Control/Status Register */ -#define UDCCS0_OPR (1 << 0) /* OUT packet ready */ -#define UDCCS0_IPR (1 << 1) /* IN packet ready */ -#define UDCCS0_FTF (1 << 2) /* Flush Tx FIFO */ -#define UDCCS0_DRWF (1 << 3) /* Device remote wakeup feature */ -#define UDCCS0_SST (1 << 4) /* Sent stall */ -#define UDCCS0_FST (1 << 5) /* Force stall */ -#define UDCCS0_RNE (1 << 6) /* Receive FIFO no empty */ -#define UDCCS0_SA (1 << 7) /* Setup active */ - -/* Bulk IN - Endpoint 1,6,11 */ -#define UDCCS1 __REG(0x40600014) /* UDC Endpoint 1 (IN) Control/Status Register */ -#define UDCCS6 __REG(0x40600028) /* UDC Endpoint 6 (IN) Control/Status Register */ -#define UDCCS11 __REG(0x4060003C) /* UDC Endpoint 11 (IN) Control/Status Register */ - -#define UDCCS_BI_TFS (1 << 0) /* Transmit FIFO service */ -#define UDCCS_BI_TPC (1 << 1) /* Transmit packet complete */ -#define UDCCS_BI_FTF (1 << 2) /* Flush Tx FIFO */ -#define UDCCS_BI_TUR (1 << 3) /* Transmit FIFO underrun */ -#define UDCCS_BI_SST (1 << 4) /* Sent stall */ -#define UDCCS_BI_FST (1 << 5) /* Force stall */ -#define UDCCS_BI_TSP (1 << 7) /* Transmit short packet */ - -/* Bulk OUT - Endpoint 2,7,12 */ -#define UDCCS2 __REG(0x40600018) /* UDC Endpoint 2 (OUT) Control/Status Register */ -#define UDCCS7 __REG(0x4060002C) /* UDC Endpoint 7 (OUT) Control/Status Register */ -#define UDCCS12 __REG(0x40600040) /* UDC Endpoint 12 (OUT) Control/Status Register */ - -#define UDCCS_BO_RFS (1 << 0) /* Receive FIFO service */ -#define UDCCS_BO_RPC (1 << 1) /* Receive packet complete */ -#define UDCCS_BO_DME (1 << 3) /* DMA enable */ -#define UDCCS_BO_SST (1 << 4) /* Sent stall */ -#define UDCCS_BO_FST (1 << 5) /* Force stall */ -#define UDCCS_BO_RNE (1 << 6) /* Receive FIFO not empty */ -#define UDCCS_BO_RSP (1 << 7) /* Receive short packet */ - -/* Isochronous IN - Endpoint 3,8,13 */ -#define UDCCS3 __REG(0x4060001C) /* UDC Endpoint 3 (IN) Control/Status Register */ -#define UDCCS8 __REG(0x40600030) /* UDC Endpoint 8 (IN) Control/Status Register */ -#define UDCCS13 __REG(0x40600044) /* UDC Endpoint 13 (IN) Control/Status Register */ - -#define UDCCS_II_TFS (1 << 0) /* Transmit FIFO service */ -#define UDCCS_II_TPC (1 << 1) /* Transmit packet complete */ -#define UDCCS_II_FTF (1 << 2) /* Flush Tx FIFO */ -#define UDCCS_II_TUR (1 << 3) /* Transmit FIFO underrun */ -#define UDCCS_II_TSP (1 << 7) /* Transmit short packet */ - -/* Isochronous OUT - Endpoint 4,9,14 */ -#define UDCCS4 __REG(0x40600020) /* UDC Endpoint 4 (OUT) Control/Status Register */ -#define UDCCS9 __REG(0x40600034) /* UDC Endpoint 9 (OUT) Control/Status Register */ -#define UDCCS14 __REG(0x40600048) /* UDC Endpoint 14 (OUT) Control/Status Register */ - -#define UDCCS_IO_RFS (1 << 0) /* Receive FIFO service */ -#define UDCCS_IO_RPC (1 << 1) /* Receive packet complete */ -#define UDCCS_IO_ROF (1 << 2) /* Receive overflow */ -#define UDCCS_IO_DME (1 << 3) /* DMA enable */ -#define UDCCS_IO_RNE (1 << 6) /* Receive FIFO not empty */ -#define UDCCS_IO_RSP (1 << 7) /* Receive short packet */ - -/* Interrupt IN - Endpoint 5,10,15 */ -#define UDCCS5 __REG(0x40600024) /* UDC Endpoint 5 (Interrupt) Control/Status Register */ -#define UDCCS10 __REG(0x40600038) /* UDC Endpoint 10 (Interrupt) Control/Status Register */ -#define UDCCS15 __REG(0x4060004C) /* UDC Endpoint 15 (Interrupt) Control/Status Register */ - -#define UDCCS_INT_TFS (1 << 0) /* Transmit FIFO service */ -#define UDCCS_INT_TPC (1 << 1) /* Transmit packet complete */ -#define UDCCS_INT_FTF (1 << 2) /* Flush Tx FIFO */ -#define UDCCS_INT_TUR (1 << 3) /* Transmit FIFO underrun */ -#define UDCCS_INT_SST (1 << 4) /* Sent stall */ -#define UDCCS_INT_FST (1 << 5) /* Force stall */ -#define UDCCS_INT_TSP (1 << 7) /* Transmit short packet */ - -#define UFNRH __REG(0x40600060) /* UDC Frame Number Register High */ -#define UFNRL __REG(0x40600064) /* UDC Frame Number Register Low */ -#define UBCR2 __REG(0x40600068) /* UDC Byte Count Reg 2 */ -#define UBCR4 __REG(0x4060006c) /* UDC Byte Count Reg 4 */ -#define UBCR7 __REG(0x40600070) /* UDC Byte Count Reg 7 */ -#define UBCR9 __REG(0x40600074) /* UDC Byte Count Reg 9 */ -#define UBCR12 __REG(0x40600078) /* UDC Byte Count Reg 12 */ -#define UBCR14 __REG(0x4060007c) /* UDC Byte Count Reg 14 */ -#define UDDR0 __REG(0x40600080) /* UDC Endpoint 0 Data Register */ -#define UDDR1 __REG(0x40600100) /* UDC Endpoint 1 Data Register */ -#define UDDR2 __REG(0x40600180) /* UDC Endpoint 2 Data Register */ -#define UDDR3 __REG(0x40600200) /* UDC Endpoint 3 Data Register */ -#define UDDR4 __REG(0x40600400) /* UDC Endpoint 4 Data Register */ -#define UDDR5 __REG(0x406000A0) /* UDC Endpoint 5 Data Register */ -#define UDDR6 __REG(0x40600600) /* UDC Endpoint 6 Data Register */ -#define UDDR7 __REG(0x40600680) /* UDC Endpoint 7 Data Register */ -#define UDDR8 __REG(0x40600700) /* UDC Endpoint 8 Data Register */ -#define UDDR9 __REG(0x40600900) /* UDC Endpoint 9 Data Register */ -#define UDDR10 __REG(0x406000C0) /* UDC Endpoint 10 Data Register */ -#define UDDR11 __REG(0x40600B00) /* UDC Endpoint 11 Data Register */ -#define UDDR12 __REG(0x40600B80) /* UDC Endpoint 12 Data Register */ -#define UDDR13 __REG(0x40600C00) /* UDC Endpoint 13 Data Register */ -#define UDDR14 __REG(0x40600E00) /* UDC Endpoint 14 Data Register */ -#define UDDR15 __REG(0x406000E0) /* UDC Endpoint 15 Data Register */ - -#define UICR0 __REG(0x40600050) /* UDC Interrupt Control Register 0 */ - -#define UICR0_IM0 (1 << 0) /* Interrupt mask ep 0 */ -#define UICR0_IM1 (1 << 1) /* Interrupt mask ep 1 */ -#define UICR0_IM2 (1 << 2) /* Interrupt mask ep 2 */ -#define UICR0_IM3 (1 << 3) /* Interrupt mask ep 3 */ -#define UICR0_IM4 (1 << 4) /* Interrupt mask ep 4 */ -#define UICR0_IM5 (1 << 5) /* Interrupt mask ep 5 */ -#define UICR0_IM6 (1 << 6) /* Interrupt mask ep 6 */ -#define UICR0_IM7 (1 << 7) /* Interrupt mask ep 7 */ - -#define UICR1 __REG(0x40600054) /* UDC Interrupt Control Register 1 */ - -#define UICR1_IM8 (1 << 0) /* Interrupt mask ep 8 */ -#define UICR1_IM9 (1 << 1) /* Interrupt mask ep 9 */ -#define UICR1_IM10 (1 << 2) /* Interrupt mask ep 10 */ -#define UICR1_IM11 (1 << 3) /* Interrupt mask ep 11 */ -#define UICR1_IM12 (1 << 4) /* Interrupt mask ep 12 */ -#define UICR1_IM13 (1 << 5) /* Interrupt mask ep 13 */ -#define UICR1_IM14 (1 << 6) /* Interrupt mask ep 14 */ -#define UICR1_IM15 (1 << 7) /* Interrupt mask ep 15 */ - -#define USIR0 __REG(0x40600058) /* UDC Status Interrupt Register 0 */ - -#define USIR0_IR0 (1 << 0) /* Interrupt request ep 0 */ -#define USIR0_IR1 (1 << 1) /* Interrupt request ep 1 */ -#define USIR0_IR2 (1 << 2) /* Interrupt request ep 2 */ -#define USIR0_IR3 (1 << 3) /* Interrupt request ep 3 */ -#define USIR0_IR4 (1 << 4) /* Interrupt request ep 4 */ -#define USIR0_IR5 (1 << 5) /* Interrupt request ep 5 */ -#define USIR0_IR6 (1 << 6) /* Interrupt request ep 6 */ -#define USIR0_IR7 (1 << 7) /* Interrupt request ep 7 */ - -#define USIR1 __REG(0x4060005C) /* UDC Status Interrupt Register 1 */ - -#define USIR1_IR8 (1 << 0) /* Interrupt request ep 8 */ -#define USIR1_IR9 (1 << 1) /* Interrupt request ep 9 */ -#define USIR1_IR10 (1 << 2) /* Interrupt request ep 10 */ -#define USIR1_IR11 (1 << 3) /* Interrupt request ep 11 */ -#define USIR1_IR12 (1 << 4) /* Interrupt request ep 12 */ -#define USIR1_IR13 (1 << 5) /* Interrupt request ep 13 */ -#define USIR1_IR14 (1 << 6) /* Interrupt request ep 14 */ -#define USIR1_IR15 (1 << 7) /* Interrupt request ep 15 */ - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x.h deleted file mode 100644 index 3ac0baac..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa25x.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __MACH_PXA25x_H -#define __MACH_PXA25x_H - -#include <mach/hardware.h> -#include <mach/pxa2xx-regs.h> -#include <mach/mfp-pxa25x.h> -#include <mach/irqs.h> - -extern void __init pxa25x_map_io(void); -extern void __init pxa25x_init_irq(void); -#ifdef CONFIG_CPU_PXA26x -extern void __init pxa26x_init_irq(void); -#endif - -#define pxa25x_handle_irq icip_handle_irq - -#endif /* __MACH_PXA25x_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x-udc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x-udc.h deleted file mode 100644 index 4cf28f67..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x-udc.h +++ /dev/null @@ -1,257 +0,0 @@ -#ifndef _ASM_ARCH_PXA27X_UDC_H -#define _ASM_ARCH_PXA27X_UDC_H - -#ifdef _ASM_ARCH_PXA25X_UDC_H -#error You cannot include both PXA25x and PXA27x UDC support -#endif - -#define UDCCR __REG(0x40600000) /* UDC Control Register */ -#define UDCCR_OEN (1 << 31) /* On-the-Go Enable */ -#define UDCCR_AALTHNP (1 << 30) /* A-device Alternate Host Negotiation - Protocol Port Support */ -#define UDCCR_AHNP (1 << 29) /* A-device Host Negotiation Protocol - Support */ -#define UDCCR_BHNP (1 << 28) /* B-device Host Negotiation Protocol - Enable */ -#define UDCCR_DWRE (1 << 16) /* Device Remote Wake-up Enable */ -#define UDCCR_ACN (0x03 << 11) /* Active UDC configuration Number */ -#define UDCCR_ACN_S 11 -#define UDCCR_AIN (0x07 << 8) /* Active UDC interface Number */ -#define UDCCR_AIN_S 8 -#define UDCCR_AAISN (0x07 << 5) /* Active UDC Alternate Interface - Setting Number */ -#define UDCCR_AAISN_S 5 -#define UDCCR_SMAC (1 << 4) /* Switch Endpoint Memory to Active - Configuration */ -#define UDCCR_EMCE (1 << 3) /* Endpoint Memory Configuration - Error */ -#define UDCCR_UDR (1 << 2) /* UDC Resume */ -#define UDCCR_UDA (1 << 1) /* UDC Active */ -#define UDCCR_UDE (1 << 0) /* UDC Enable */ - -#define UDCICR0 __REG(0x40600004) /* UDC Interrupt Control Register0 */ -#define UDCICR1 __REG(0x40600008) /* UDC Interrupt Control Register1 */ -#define UDCICR_FIFOERR (1 << 1) /* FIFO Error interrupt for EP */ -#define UDCICR_PKTCOMPL (1 << 0) /* Packet Complete interrupt for EP */ - -#define UDC_INT_FIFOERROR (0x2) -#define UDC_INT_PACKETCMP (0x1) - -#define UDCICR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2)) -#define UDCICR1_IECC (1 << 31) /* IntEn - Configuration Change */ -#define UDCICR1_IESOF (1 << 30) /* IntEn - Start of Frame */ -#define UDCICR1_IERU (1 << 29) /* IntEn - Resume */ -#define UDCICR1_IESU (1 << 28) /* IntEn - Suspend */ -#define UDCICR1_IERS (1 << 27) /* IntEn - Reset */ - -#define UDCISR0 __REG(0x4060000C) /* UDC Interrupt Status Register 0 */ -#define UDCISR1 __REG(0x40600010) /* UDC Interrupt Status Register 1 */ -#define UDCISR_INT(n,intr) (((intr) & 0x03) << (((n) & 0x0F) * 2)) -#define UDCISR1_IRCC (1 << 31) /* IntReq - Configuration Change */ -#define UDCISR1_IRSOF (1 << 30) /* IntReq - Start of Frame */ -#define UDCISR1_IRRU (1 << 29) /* IntReq - Resume */ -#define UDCISR1_IRSU (1 << 28) /* IntReq - Suspend */ -#define UDCISR1_IRRS (1 << 27) /* IntReq - Reset */ - -#define UDCFNR __REG(0x40600014) /* UDC Frame Number Register */ -#define UDCOTGICR __REG(0x40600018) /* UDC On-The-Go interrupt control */ -#define UDCOTGICR_IESF (1 << 24) /* OTG SET_FEATURE command recvd */ -#define UDCOTGICR_IEXR (1 << 17) /* Extra Transceiver Interrupt - Rising Edge Interrupt Enable */ -#define UDCOTGICR_IEXF (1 << 16) /* Extra Transceiver Interrupt - Falling Edge Interrupt Enable */ -#define UDCOTGICR_IEVV40R (1 << 9) /* OTG Vbus Valid 4.0V Rising Edge - Interrupt Enable */ -#define UDCOTGICR_IEVV40F (1 << 8) /* OTG Vbus Valid 4.0V Falling Edge - Interrupt Enable */ -#define UDCOTGICR_IEVV44R (1 << 7) /* OTG Vbus Valid 4.4V Rising Edge - Interrupt Enable */ -#define UDCOTGICR_IEVV44F (1 << 6) /* OTG Vbus Valid 4.4V Falling Edge - Interrupt Enable */ -#define UDCOTGICR_IESVR (1 << 5) /* OTG Session Valid Rising Edge - Interrupt Enable */ -#define UDCOTGICR_IESVF (1 << 4) /* OTG Session Valid Falling Edge - Interrupt Enable */ -#define UDCOTGICR_IESDR (1 << 3) /* OTG A-Device SRP Detect Rising - Edge Interrupt Enable */ -#define UDCOTGICR_IESDF (1 << 2) /* OTG A-Device SRP Detect Falling - Edge Interrupt Enable */ -#define UDCOTGICR_IEIDR (1 << 1) /* OTG ID Change Rising Edge - Interrupt Enable */ -#define UDCOTGICR_IEIDF (1 << 0) /* OTG ID Change Falling Edge - Interrupt Enable */ - -#define UP2OCR __REG(0x40600020) /* USB Port 2 Output Control register */ -#define UP3OCR __REG(0x40600024) /* USB Port 2 Output Control register */ - -#define UP2OCR_CPVEN (1 << 0) /* Charge Pump Vbus Enable */ -#define UP2OCR_CPVPE (1 << 1) /* Charge Pump Vbus Pulse Enable */ -#define UP2OCR_DPPDE (1 << 2) /* Host Port 2 Transceiver D+ Pull Down Enable */ -#define UP2OCR_DMPDE (1 << 3) /* Host Port 2 Transceiver D- Pull Down Enable */ -#define UP2OCR_DPPUE (1 << 4) /* Host Port 2 Transceiver D+ Pull Up Enable */ -#define UP2OCR_DMPUE (1 << 5) /* Host Port 2 Transceiver D- Pull Up Enable */ -#define UP2OCR_DPPUBE (1 << 6) /* Host Port 2 Transceiver D+ Pull Up Bypass Enable */ -#define UP2OCR_DMPUBE (1 << 7) /* Host Port 2 Transceiver D- Pull Up Bypass Enable */ -#define UP2OCR_EXSP (1 << 8) /* External Transceiver Speed Control */ -#define UP2OCR_EXSUS (1 << 9) /* External Transceiver Speed Enable */ -#define UP2OCR_IDON (1 << 10) /* OTG ID Read Enable */ -#define UP2OCR_HXS (1 << 16) /* Host Port 2 Transceiver Output Select */ -#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */ -#define UP2OCR_SEOS(x) ((x & 7) << 24) /* Single-Ended Output Select */ - -#define UDCCSN(x) __REG2(0x40600100, (x) << 2) -#define UDCCSR0 __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */ -#define UDCCSR0_SA (1 << 7) /* Setup Active */ -#define UDCCSR0_RNE (1 << 6) /* Receive FIFO Not Empty */ -#define UDCCSR0_FST (1 << 5) /* Force Stall */ -#define UDCCSR0_SST (1 << 4) /* Sent Stall */ -#define UDCCSR0_DME (1 << 3) /* DMA Enable */ -#define UDCCSR0_FTF (1 << 2) /* Flush Transmit FIFO */ -#define UDCCSR0_IPR (1 << 1) /* IN Packet Ready */ -#define UDCCSR0_OPC (1 << 0) /* OUT Packet Complete */ - -#define UDCCSRA __REG(0x40600104) /* UDC Control/Status register - Endpoint A */ -#define UDCCSRB __REG(0x40600108) /* UDC Control/Status register - Endpoint B */ -#define UDCCSRC __REG(0x4060010C) /* UDC Control/Status register - Endpoint C */ -#define UDCCSRD __REG(0x40600110) /* UDC Control/Status register - Endpoint D */ -#define UDCCSRE __REG(0x40600114) /* UDC Control/Status register - Endpoint E */ -#define UDCCSRF __REG(0x40600118) /* UDC Control/Status register - Endpoint F */ -#define UDCCSRG __REG(0x4060011C) /* UDC Control/Status register - Endpoint G */ -#define UDCCSRH __REG(0x40600120) /* UDC Control/Status register - Endpoint H */ -#define UDCCSRI __REG(0x40600124) /* UDC Control/Status register - Endpoint I */ -#define UDCCSRJ __REG(0x40600128) /* UDC Control/Status register - Endpoint J */ -#define UDCCSRK __REG(0x4060012C) /* UDC Control/Status register - Endpoint K */ -#define UDCCSRL __REG(0x40600130) /* UDC Control/Status register - Endpoint L */ -#define UDCCSRM __REG(0x40600134) /* UDC Control/Status register - Endpoint M */ -#define UDCCSRN __REG(0x40600138) /* UDC Control/Status register - Endpoint N */ -#define UDCCSRP __REG(0x4060013C) /* UDC Control/Status register - Endpoint P */ -#define UDCCSRQ __REG(0x40600140) /* UDC Control/Status register - Endpoint Q */ -#define UDCCSRR __REG(0x40600144) /* UDC Control/Status register - Endpoint R */ -#define UDCCSRS __REG(0x40600148) /* UDC Control/Status register - Endpoint S */ -#define UDCCSRT __REG(0x4060014C) /* UDC Control/Status register - Endpoint T */ -#define UDCCSRU __REG(0x40600150) /* UDC Control/Status register - Endpoint U */ -#define UDCCSRV __REG(0x40600154) /* UDC Control/Status register - Endpoint V */ -#define UDCCSRW __REG(0x40600158) /* UDC Control/Status register - Endpoint W */ -#define UDCCSRX __REG(0x4060015C) /* UDC Control/Status register - Endpoint X */ - -#define UDCCSR_DPE (1 << 9) /* Data Packet Error */ -#define UDCCSR_FEF (1 << 8) /* Flush Endpoint FIFO */ -#define UDCCSR_SP (1 << 7) /* Short Packet Control/Status */ -#define UDCCSR_BNE (1 << 6) /* Buffer Not Empty (IN endpoints) */ -#define UDCCSR_BNF (1 << 6) /* Buffer Not Full (OUT endpoints) */ -#define UDCCSR_FST (1 << 5) /* Force STALL */ -#define UDCCSR_SST (1 << 4) /* Sent STALL */ -#define UDCCSR_DME (1 << 3) /* DMA Enable */ -#define UDCCSR_TRN (1 << 2) /* Tx/Rx NAK */ -#define UDCCSR_PC (1 << 1) /* Packet Complete */ -#define UDCCSR_FS (1 << 0) /* FIFO needs service */ - -#define UDCBCN(x) __REG2(0x40600200, (x)<<2) -#define UDCBCR0 __REG(0x40600200) /* Byte Count Register - EP0 */ -#define UDCBCRA __REG(0x40600204) /* Byte Count Register - EPA */ -#define UDCBCRB __REG(0x40600208) /* Byte Count Register - EPB */ -#define UDCBCRC __REG(0x4060020C) /* Byte Count Register - EPC */ -#define UDCBCRD __REG(0x40600210) /* Byte Count Register - EPD */ -#define UDCBCRE __REG(0x40600214) /* Byte Count Register - EPE */ -#define UDCBCRF __REG(0x40600218) /* Byte Count Register - EPF */ -#define UDCBCRG __REG(0x4060021C) /* Byte Count Register - EPG */ -#define UDCBCRH __REG(0x40600220) /* Byte Count Register - EPH */ -#define UDCBCRI __REG(0x40600224) /* Byte Count Register - EPI */ -#define UDCBCRJ __REG(0x40600228) /* Byte Count Register - EPJ */ -#define UDCBCRK __REG(0x4060022C) /* Byte Count Register - EPK */ -#define UDCBCRL __REG(0x40600230) /* Byte Count Register - EPL */ -#define UDCBCRM __REG(0x40600234) /* Byte Count Register - EPM */ -#define UDCBCRN __REG(0x40600238) /* Byte Count Register - EPN */ -#define UDCBCRP __REG(0x4060023C) /* Byte Count Register - EPP */ -#define UDCBCRQ __REG(0x40600240) /* Byte Count Register - EPQ */ -#define UDCBCRR __REG(0x40600244) /* Byte Count Register - EPR */ -#define UDCBCRS __REG(0x40600248) /* Byte Count Register - EPS */ -#define UDCBCRT __REG(0x4060024C) /* Byte Count Register - EPT */ -#define UDCBCRU __REG(0x40600250) /* Byte Count Register - EPU */ -#define UDCBCRV __REG(0x40600254) /* Byte Count Register - EPV */ -#define UDCBCRW __REG(0x40600258) /* Byte Count Register - EPW */ -#define UDCBCRX __REG(0x4060025C) /* Byte Count Register - EPX */ - -#define UDCDN(x) __REG2(0x40600300, (x)<<2) -#define PHYS_UDCDN(x) (0x40600300 + ((x)<<2)) -#define PUDCDN(x) (volatile u32 *)(io_p2v(PHYS_UDCDN((x)))) -#define UDCDR0 __REG(0x40600300) /* Data Register - EP0 */ -#define UDCDRA __REG(0x40600304) /* Data Register - EPA */ -#define UDCDRB __REG(0x40600308) /* Data Register - EPB */ -#define UDCDRC __REG(0x4060030C) /* Data Register - EPC */ -#define UDCDRD __REG(0x40600310) /* Data Register - EPD */ -#define UDCDRE __REG(0x40600314) /* Data Register - EPE */ -#define UDCDRF __REG(0x40600318) /* Data Register - EPF */ -#define UDCDRG __REG(0x4060031C) /* Data Register - EPG */ -#define UDCDRH __REG(0x40600320) /* Data Register - EPH */ -#define UDCDRI __REG(0x40600324) /* Data Register - EPI */ -#define UDCDRJ __REG(0x40600328) /* Data Register - EPJ */ -#define UDCDRK __REG(0x4060032C) /* Data Register - EPK */ -#define UDCDRL __REG(0x40600330) /* Data Register - EPL */ -#define UDCDRM __REG(0x40600334) /* Data Register - EPM */ -#define UDCDRN __REG(0x40600338) /* Data Register - EPN */ -#define UDCDRP __REG(0x4060033C) /* Data Register - EPP */ -#define UDCDRQ __REG(0x40600340) /* Data Register - EPQ */ -#define UDCDRR __REG(0x40600344) /* Data Register - EPR */ -#define UDCDRS __REG(0x40600348) /* Data Register - EPS */ -#define UDCDRT __REG(0x4060034C) /* Data Register - EPT */ -#define UDCDRU __REG(0x40600350) /* Data Register - EPU */ -#define UDCDRV __REG(0x40600354) /* Data Register - EPV */ -#define UDCDRW __REG(0x40600358) /* Data Register - EPW */ -#define UDCDRX __REG(0x4060035C) /* Data Register - EPX */ - -#define UDCCN(x) __REG2(0x40600400, (x)<<2) -#define UDCCRA __REG(0x40600404) /* Configuration register EPA */ -#define UDCCRB __REG(0x40600408) /* Configuration register EPB */ -#define UDCCRC __REG(0x4060040C) /* Configuration register EPC */ -#define UDCCRD __REG(0x40600410) /* Configuration register EPD */ -#define UDCCRE __REG(0x40600414) /* Configuration register EPE */ -#define UDCCRF __REG(0x40600418) /* Configuration register EPF */ -#define UDCCRG __REG(0x4060041C) /* Configuration register EPG */ -#define UDCCRH __REG(0x40600420) /* Configuration register EPH */ -#define UDCCRI __REG(0x40600424) /* Configuration register EPI */ -#define UDCCRJ __REG(0x40600428) /* Configuration register EPJ */ -#define UDCCRK __REG(0x4060042C) /* Configuration register EPK */ -#define UDCCRL __REG(0x40600430) /* Configuration register EPL */ -#define UDCCRM __REG(0x40600434) /* Configuration register EPM */ -#define UDCCRN __REG(0x40600438) /* Configuration register EPN */ -#define UDCCRP __REG(0x4060043C) /* Configuration register EPP */ -#define UDCCRQ __REG(0x40600440) /* Configuration register EPQ */ -#define UDCCRR __REG(0x40600444) /* Configuration register EPR */ -#define UDCCRS __REG(0x40600448) /* Configuration register EPS */ -#define UDCCRT __REG(0x4060044C) /* Configuration register EPT */ -#define UDCCRU __REG(0x40600450) /* Configuration register EPU */ -#define UDCCRV __REG(0x40600454) /* Configuration register EPV */ -#define UDCCRW __REG(0x40600458) /* Configuration register EPW */ -#define UDCCRX __REG(0x4060045C) /* Configuration register EPX */ - -#define UDCCONR_CN (0x03 << 25) /* Configuration Number */ -#define UDCCONR_CN_S (25) -#define UDCCONR_IN (0x07 << 22) /* Interface Number */ -#define UDCCONR_IN_S (22) -#define UDCCONR_AISN (0x07 << 19) /* Alternate Interface Number */ -#define UDCCONR_AISN_S (19) -#define UDCCONR_EN (0x0f << 15) /* Endpoint Number */ -#define UDCCONR_EN_S (15) -#define UDCCONR_ET (0x03 << 13) /* Endpoint Type: */ -#define UDCCONR_ET_S (13) -#define UDCCONR_ET_INT (0x03 << 13) /* Interrupt */ -#define UDCCONR_ET_BULK (0x02 << 13) /* Bulk */ -#define UDCCONR_ET_ISO (0x01 << 13) /* Isochronous */ -#define UDCCONR_ET_NU (0x00 << 13) /* Not used */ -#define UDCCONR_ED (1 << 12) /* Endpoint Direction */ -#define UDCCONR_MPS (0x3ff << 2) /* Maximum Packet Size */ -#define UDCCONR_MPS_S (2) -#define UDCCONR_DE (1 << 1) /* Double Buffering Enable */ -#define UDCCONR_EE (1 << 0) /* Endpoint Enable */ - - -#define UDC_INT_FIFOERROR (0x2) -#define UDC_INT_PACKETCMP (0x1) - -#define UDC_FNR_MASK (0x7ff) - -#define UDCCSR_WR_MASK (UDCCSR_DME|UDCCSR_FST) -#define UDC_BCR_MASK (0x3ff) - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x.h deleted file mode 100644 index 7cff6405..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa27x.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __MACH_PXA27x_H -#define __MACH_PXA27x_H - -#include <linux/suspend.h> -#include <mach/hardware.h> -#include <mach/pxa2xx-regs.h> -#include <mach/mfp-pxa27x.h> -#include <mach/irqs.h> - -#define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ - -#define ARB_DMA_SLV_PARK (1<<31) /* Be parked with DMA slave when idle */ -#define ARB_CI_PARK (1<<30) /* Be parked with Camera Interface when idle */ -#define ARB_EX_MEM_PARK (1<<29) /* Be parked with external MEMC when idle */ -#define ARB_INT_MEM_PARK (1<<28) /* Be parked with internal MEMC when idle */ -#define ARB_USB_PARK (1<<27) /* Be parked with USB when idle */ -#define ARB_LCD_PARK (1<<26) /* Be parked with LCD when idle */ -#define ARB_DMA_PARK (1<<25) /* Be parked with DMA when idle */ -#define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ -#define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ - -extern void __init pxa27x_map_io(void); -extern void __init pxa27x_init_irq(void); -extern int __init pxa27x_set_pwrmode(unsigned int mode); -extern void pxa27x_cpu_pm_enter(suspend_state_t state); - -#define pxa27x_handle_irq ichp_handle_irq - -#endif /* __MACH_PXA27x_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa2xx-regs.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa2xx-regs.h deleted file mode 100644 index ee6ced1c..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa2xx-regs.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/pxa2xx-regs.h - * - * Taken from pxa-regs.h by Russell King - * - * Author: Nicolas Pitre - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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 __REG(0x41300000) /* Core Clock Configuration Register */ -#define CCSR __REG(0x4130000C) /* Core Clock Status Register */ -#define CKEN __REG(0x41300004) /* Clock Enable Register */ -#define OSCC __REG(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 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa300.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa300.h deleted file mode 100644 index 733b6412..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa300.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __MACH_PXA300_H -#define __MACH_PXA300_H - -#include <mach/pxa3xx.h> -#include <mach/mfp-pxa300.h> - -#endif /* __MACH_PXA300_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa320.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa320.h deleted file mode 100644 index b6204e47..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa320.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef __MACH_PXA320_H -#define __MACH_PXA320_H - -#include <mach/pxa3xx.h> -#include <mach/mfp-pxa320.h> - -#endif /* __MACH_PXA320_H */ - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h deleted file mode 100644 index 207ecb49..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h +++ /dev/null @@ -1,205 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/pxa3xx-regs.h - * - * PXA3xx specific register definitions - * - * Copyright (C) 2007 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef __ASM_ARCH_PXA3XX_REGS_H -#define __ASM_ARCH_PXA3XX_REGS_H - -#include <mach/hardware.h> - -/* - * Oscillator Configuration Register (OSCC) - */ -#define OSCC __REG(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 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h deleted file mode 100644 index 9d82cb65..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * PXA3xx U2D header - * - * Copyright (C) 2010 CompuLab Ltd. - * - * Igor Grinberg <grinberg@compulab.co.il> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#ifndef __PXA310_U2D__ -#define __PXA310_U2D__ - -#include <linux/usb/ulpi.h> - -struct pxa3xx_u2d_platform_data { - -#define ULPI_SER_6PIN (1 << 0) -#define ULPI_SER_3PIN (1 << 1) - unsigned int ulpi_mode; - - int (*init)(struct device *); - void (*exit)(struct device *); -}; - - -/* Start PXA3xx U2D host */ -int pxa3xx_u2d_start_hc(struct usb_bus *host); -/* Stop PXA3xx U2D host */ -void pxa3xx_u2d_stop_hc(struct usb_bus *host); - -extern void pxa3xx_set_u2d_info(struct pxa3xx_u2d_platform_data *info); - -#endif /* __PXA310_U2D__ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx.h deleted file mode 100644 index cd3e57f4..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa3xx.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __MACH_PXA3XX_H -#define __MACH_PXA3XX_H - -#include <mach/hardware.h> -#include <mach/pxa3xx-regs.h> -#include <mach/irqs.h> - -extern void __init pxa3xx_map_io(void); -extern void __init pxa3xx_init_irq(void); -extern void __init pxa95x_init_irq(void); - -#define pxa3xx_handle_irq ichp_handle_irq - -#endif /* __MACH_PXA3XX_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930.h deleted file mode 100644 index 190363b9..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __MACH_PXA930_H -#define __MACH_PXA930_H - -#include <mach/pxa3xx.h> -#include <mach/mfp-pxa930.h> - -#endif /* __MACH_PXA930_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_rotary.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_rotary.h deleted file mode 100644 index 053587ca..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_rotary.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __ASM_ARCH_PXA930_ROTARY_H -#define __ASM_ARCH_PXA930_ROTARY_H - -/* NOTE: - * - * rotary can be either interpreted as a ralative input event (e.g. - * REL_WHEEL or REL_HWHEEL) or a specific key event (e.g. UP/DOWN - * or LEFT/RIGHT), depending on if up_key & down_key are assigned - * or rel_code is assigned a non-zero value. When all are non-zero, - * up_key and down_key will be preferred. - */ -struct pxa930_rotary_platform_data { - int up_key; - int down_key; - int rel_code; -}; - -void __init pxa930_set_rotarykey_info(struct pxa930_rotary_platform_data *info); - -#endif /* __ASM_ARCH_PXA930_ROTARY_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_trkball.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_trkball.h deleted file mode 100644 index 5e0789bc..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa930_trkball.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __ASM_ARCH_PXA930_TRKBALL_H -#define __ASM_ARCH_PXA930_TRKBALL_H - -struct pxa930_trkball_platform_data { - int x_filter; - int y_filter; -}; - -#endif /* __ASM_ARCH_PXA930_TRKBALL_H */ - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa95x.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa95x.h deleted file mode 100644 index cbb097c4..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxa95x.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __MACH_PXA95X_H -#define __MACH_PXA95X_H - -#include <mach/pxa3xx.h> -#include <mach/mfp-pxa930.h> - -#endif /* __MACH_PXA95X_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxafb.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxafb.h deleted file mode 100644 index 486b4c51..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/pxafb.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/pxafb.h - * - * Support for the xscale frame buffer. - * - * Author: Jean-Frederic Clere - * Created: Sep 22, 2003 - * Copyright: jfclere@sinix.net - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/fb.h> -#include <mach/regs-lcd.h> - -/* - * Supported LCD connections - * - * bits 0 - 3: for LCD panel type: - * - * STN - for passive matrix - * DSTN - for dual scan passive matrix - * TFT - for active matrix - * - * bits 4 - 9 : for bus width - * bits 10-17 : for AC Bias Pin Frequency - * bit 18 : for output enable polarity - * bit 19 : for pixel clock edge - * bit 20 : for output pixel format when base is RGBT16 - */ -#define LCD_CONN_TYPE(_x) ((_x) & 0x0f) -#define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f) - -#define LCD_TYPE_MASK 0xf -#define LCD_TYPE_UNKNOWN 0 -#define LCD_TYPE_MONO_STN 1 -#define LCD_TYPE_MONO_DSTN 2 -#define LCD_TYPE_COLOR_STN 3 -#define LCD_TYPE_COLOR_DSTN 4 -#define LCD_TYPE_COLOR_TFT 5 -#define LCD_TYPE_SMART_PANEL 6 -#define LCD_TYPE_MAX 7 - -#define LCD_MONO_STN_4BPP ((4 << 4) | LCD_TYPE_MONO_STN) -#define LCD_MONO_STN_8BPP ((8 << 4) | LCD_TYPE_MONO_STN) -#define LCD_MONO_DSTN_8BPP ((8 << 4) | LCD_TYPE_MONO_DSTN) -#define LCD_COLOR_STN_8BPP ((8 << 4) | LCD_TYPE_COLOR_STN) -#define LCD_COLOR_DSTN_16BPP ((16 << 4) | LCD_TYPE_COLOR_DSTN) -#define LCD_COLOR_TFT_8BPP ((8 << 4) | LCD_TYPE_COLOR_TFT) -#define LCD_COLOR_TFT_16BPP ((16 << 4) | LCD_TYPE_COLOR_TFT) -#define LCD_COLOR_TFT_18BPP ((18 << 4) | LCD_TYPE_COLOR_TFT) -#define LCD_SMART_PANEL_8BPP ((8 << 4) | LCD_TYPE_SMART_PANEL) -#define LCD_SMART_PANEL_16BPP ((16 << 4) | LCD_TYPE_SMART_PANEL) -#define LCD_SMART_PANEL_18BPP ((18 << 4) | LCD_TYPE_SMART_PANEL) - -#define LCD_AC_BIAS_FREQ(x) (((x) & 0xff) << 10) -#define LCD_BIAS_ACTIVE_HIGH (0 << 18) -#define LCD_BIAS_ACTIVE_LOW (1 << 18) -#define LCD_PCLK_EDGE_RISE (0 << 19) -#define LCD_PCLK_EDGE_FALL (1 << 19) -#define LCD_ALTERNATE_MAPPING (1 << 20) - -/* - * This structure describes the machine which we are running on. - * It is set in linux/arch/arm/mach-pxa/machine_name.c and used in the probe routine - * of linux/drivers/video/pxafb.c - */ -struct pxafb_mode_info { - u_long pixclock; - - u_short xres; - u_short yres; - - u_char bpp; - u_int cmap_greyscale:1, - depth:8, - transparency:1, - unused:22; - - /* Parallel Mode Timing */ - u_char hsync_len; - u_char left_margin; - u_char right_margin; - - u_char vsync_len; - u_char upper_margin; - u_char lower_margin; - u_char sync; - - /* Smart Panel Mode Timing - see PXA27x DM 7.4.15.0.3 for details - * Note: - * 1. all parameters in nanosecond (ns) - * 2. a0cs{rd,wr}_set_hld are controlled by the same register bits - * in pxa27x and pxa3xx, initialize them to the same value or - * the larger one will be used - * 3. same to {rd,wr}_pulse_width - * - * 4. LCD_PCLK_EDGE_{RISE,FALL} controls the L_PCLK_WR polarity - * 5. sync & FB_SYNC_HOR_HIGH_ACT controls the L_LCLK_A0 - * 6. sync & FB_SYNC_VERT_HIGH_ACT controls the L_LCLK_RD - */ - unsigned a0csrd_set_hld; /* A0 and CS Setup/Hold Time before/after L_FCLK_RD */ - unsigned a0cswr_set_hld; /* A0 and CS Setup/Hold Time before/after L_PCLK_WR */ - unsigned wr_pulse_width; /* L_PCLK_WR pulse width */ - unsigned rd_pulse_width; /* L_FCLK_RD pulse width */ - unsigned cmd_inh_time; /* Command Inhibit time between two writes */ - unsigned op_hold_time; /* Output Hold time from L_FCLK_RD negation */ -}; - -struct pxafb_mach_info { - struct pxafb_mode_info *modes; - unsigned int num_modes; - - unsigned int lcd_conn; - unsigned long video_mem_size; - - u_int fixed_modes:1, - cmap_inverse:1, - cmap_static:1, - acceleration_enabled:1, - unused:28; - - /* The following should be defined in LCCR0 - * LCCR0_Act or LCCR0_Pas Active or Passive - * LCCR0_Sngl or LCCR0_Dual Single/Dual panel - * LCCR0_Mono or LCCR0_Color Mono/Color - * LCCR0_4PixMono or LCCR0_8PixMono (in mono single mode) - * LCCR0_DMADel(Tcpu) (optional) DMA request delay - * - * The following should not be defined in LCCR0: - * LCCR0_OUM, LCCR0_BM, LCCR0_QDM, LCCR0_DIS, LCCR0_EFM - * LCCR0_IUM, LCCR0_SFM, LCCR0_LDM, LCCR0_ENB - */ - u_int lccr0; - /* The following should be defined in LCCR3 - * LCCR3_OutEnH or LCCR3_OutEnL Output enable polarity - * LCCR3_PixRsEdg or LCCR3_PixFlEdg Pixel clock edge type - * LCCR3_Acb(X) AB Bias pin frequency - * LCCR3_DPC (optional) Double Pixel Clock mode (untested) - * - * The following should not be defined in LCCR3 - * LCCR3_HSP, LCCR3_VSP, LCCR0_Pcd(x), LCCR3_Bpp - */ - u_int lccr3; - /* The following should be defined in LCCR4 - * LCCR4_PAL_FOR_0 or LCCR4_PAL_FOR_1 or LCCR4_PAL_FOR_2 - * - * All other bits in LCCR4 should be left alone. - */ - u_int lccr4; - void (*pxafb_backlight_power)(int); - void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *); - void (*smart_update)(struct fb_info *); -}; - -void pxa_set_fb_info(struct device *, struct pxafb_mach_info *); -unsigned long pxafb_get_hsync_time(struct device *dev); - -#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); -#else -static inline int pxafb_smart_queue(struct fb_info *info, - uint16_t *cmds, int n) -{ - return 0; -} - -static inline int pxafb_smart_flush(struct fb_info *info) -{ - return 0; -} -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ac97.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ac97.h deleted file mode 100644 index b8d14bd9..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ac97.h +++ /dev/null @@ -1,101 +0,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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-lcd.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-lcd.h deleted file mode 100644 index f82dcea7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-lcd.h +++ /dev/null @@ -1,197 +0,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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ost.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ost.h deleted file mode 100644 index a3e5f86e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-ost.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __ASM_MACH_REGS_OST_H -#define __ASM_MACH_REGS_OST_H - -#include <mach/hardware.h> - -/* - * OS Timer & Match Registers - */ - -#define OSMR0 __REG(0x40A00000) /* */ -#define OSMR1 __REG(0x40A00004) /* */ -#define OSMR2 __REG(0x40A00008) /* */ -#define OSMR3 __REG(0x40A0000C) /* */ -#define OSMR4 __REG(0x40A00080) /* */ -#define OSCR __REG(0x40A00010) /* OS Timer Counter Register */ -#define OSCR4 __REG(0x40A00040) /* OS Timer Counter Register */ -#define OMCR4 __REG(0x40A000C0) /* */ -#define OSSR __REG(0x40A00014) /* OS Timer Status Register */ -#define OWER __REG(0x40A00018) /* OS Timer Watchdog Enable Register */ -#define OIER __REG(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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-rtc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-rtc.h deleted file mode 100644 index f0e4a589..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-rtc.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __ASM_MACH_REGS_RTC_H -#define __ASM_MACH_REGS_RTC_H - -#include <mach/hardware.h> - -/* - * Real Time Clock - */ - -#define RCNR __REG(0x40900000) /* RTC Count Register */ -#define RTAR __REG(0x40900004) /* RTC Alarm Register */ -#define RTSR __REG(0x40900008) /* RTC Status Register */ -#define RTTR __REG(0x4090000C) /* RTC Timer Trim Register */ -#define PIAR __REG(0x40900038) /* Periodic Interrupt Alarm Register */ - -#define RTSR_PICE (1 << 15) /* Periodic interrupt count enable */ -#define RTSR_PIALE (1 << 14) /* Periodic interrupt Alarm enable */ -#define RTSR_HZE (1 << 3) /* HZ interrupt enable */ -#define RTSR_ALE (1 << 2) /* RTC alarm interrupt enable */ -#define RTSR_HZ (1 << 1) /* HZ rising-edge detected */ -#define RTSR_AL (1 << 0) /* RTC alarm detected */ - -#endif /* __ASM_MACH_REGS_RTC_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-u2d.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-u2d.h deleted file mode 100644 index c15c0c57..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-u2d.h +++ /dev/null @@ -1,200 +0,0 @@ -#ifndef __ASM_ARCH_PXA3xx_U2D_H -#define __ASM_ARCH_PXA3xx_U2D_H - -#include <mach/bitfield.h> - -/* - * USB2 device controller registers and bits definitions - */ -#define U2DCR (0x0000) /* U2D Control Register */ -#define U2DCR_NDC (1 << 31) /* NAK During Config */ -#define U2DCR_HSTC (0x7 << 28) /* High Speed Timeout Calibration */ -#define U2DCR_SPEOREN (1 << 27) /* Short Packet EOR INTR generation Enable */ -#define U2DCR_FSTC (0x7 << 24) /* Full Speed Timeout Calibration */ -#define U2DCR_UCLKOVR (1 << 22) /* UTM Clock Override */ -#define U2DCR_ABP (1 << 21) /* Application Bus Power */ -#define U2DCR_ADD (1 << 20) /* Application Device Disconnect */ -#define U2DCR_CC (1 << 19) /* Configuration Change */ -#define U2DCR_HS (1 << 18) /* High Speed USB Detection */ -#define U2DCR_SMAC (1 << 17) /* Switch Endpoint Memory to Active Configuration */ -#define U2DCR_DWRE (1 << 16) /* Device Remote Wake-up Feature */ -#define U2DCR_ACN (0xf << 12) /* Active U2D Configuration Number */ -#define U2DCR_AIN (0xf << 8) /* Active U2D Interface Number */ -#define U2DCR_AAISN (0xf << 4) /* Active U2D Alternate Interface Setting Number */ -#define U2DCR_EMCE (1 << 3) /* Endpoint Memory Configuration Error */ -#define U2DCR_UDR (1 << 2) /* U2D Resume */ -#define U2DCR_UDA (1 << 1) /* U2D Active */ -#define U2DCR_UDE (1 << 0) /* U2D Enable */ - -#define U2DICR (0x0004) /* U2D Interrupt Control Register */ -#define U2DISR (0x000C) /* U2D Interrupt Status Register */ -#define U2DINT_CC (1 << 31) /* Interrupt - Configuration Change */ -#define U2DINT_SOF (1 << 30) /* Interrupt - SOF */ -#define U2DINT_USOF (1 << 29) /* Interrupt - micro SOF */ -#define U2DINT_RU (1 << 28) /* Interrupt - Resume */ -#define U2DINT_SU (1 << 27) /* Interrupt - Suspend */ -#define U2DINT_RS (1 << 26) /* Interrupt - Reset */ -#define U2DINT_DPE (1 << 25) /* Interrupt - Data Packet Error */ -#define U2DINT_FIFOERR (0x4) /* Interrupt - endpoint FIFO error */ -#define U2DINT_PACKETCMP (0x2) /* Interrupt - endpoint packet complete */ -#define U2DINT_SPACKETCMP (0x1) /* Interrupt - endpoint short packet complete */ - -#define U2DFNR (0x0014) /* U2D Frame Number Register */ - -#define U2DINT(n, intr) (((intr) & 0x07) << (((n) & 0x07) * 3)) -#define U2DICR2 (0x0008) /* U2D Interrupt Control Register 2 */ -#define U2DISR2 (0x0010) /* U2D Interrupt Status Register 2 */ - -#define U2DOTGCR (0x0020) /* U2D OTG Control Register */ -#define U2DOTGCR_OTGEN (1 << 31) /* On-The-Go Enable */ -#define U2DOTGCR_AALTHNP (1 << 30) /* A-device Alternate Host Negotiation Protocal Port Support */ -#define U2DOTGCR_AHNP (1 << 29) /* A-device Host Negotiation Protocal Support */ -#define U2DOTGCR_BHNP (1 << 28) /* B-device Host Negotiation Protocal Enable */ - -#ifdef CONFIG_CPU_PXA930 -#define U2DOTGCR_LPA (1 << 15) /* ULPI low power mode active */ -#define U2DOTGCR_IESI (1 << 13) /* OTG interrupt Enable */ -#define U2DOTGCR_ISSI (1 << 12) /* OTG interrupt status */ -#endif - -#define U2DOTGCR_CKAF (1 << 5) /* Carkit Mode Alternate Function Select */ -#define U2DOTGCR_UTMID (1 << 4) /* UTMI Interface Disable */ -#define U2DOTGCR_ULAF (1 << 3) /* ULPI Mode Alternate Function Select */ -#define U2DOTGCR_SMAF (1 << 2) /* Serial Mode Alternate Function Select */ -#define U2DOTGCR_RTSM (1 << 1) /* Return to Synchronous Mode (ULPI Mode) */ -#define U2DOTGCR_ULE (1 << 0) /* ULPI Wrapper Enable */ - -#define U2DOTGICR (0x0024) /* U2D OTG Interrupt Control Register */ -#define U2DOTGISR (0x0028) /* U2D OTG Interrupt Status Register */ - -#define U2DOTGINT_SF (1 << 17) /* OTG Set Feature Command Received */ -#define U2DOTGINT_SI (1 << 16) /* OTG Interrupt */ -#define U2DOTGINT_RLS1 (1 << 14) /* RXCMD Linestate[1] Change Interrupt Rise */ -#define U2DOTGINT_RLS0 (1 << 13) /* RXCMD Linestate[0] Change Interrupt Rise */ -#define U2DOTGINT_RID (1 << 12) /* RXCMD OTG ID Change Interrupt Rise */ -#define U2DOTGINT_RSE (1 << 11) /* RXCMD OTG Session End Interrupt Rise */ -#define U2DOTGINT_RSV (1 << 10) /* RXCMD OTG Session Valid Interrupt Rise */ -#define U2DOTGINT_RVV (1 << 9) /* RXCMD OTG Vbus Valid Interrupt Rise */ -#define U2DOTGINT_RCK (1 << 8) /* RXCMD Carkit Interrupt Rise */ -#define U2DOTGINT_FLS1 (1 << 6) /* RXCMD Linestate[1] Change Interrupt Fall */ -#define U2DOTGINT_FLS0 (1 << 5) /* RXCMD Linestate[0] Change Interrupt Fall */ -#define U2DOTGINT_FID (1 << 4) /* RXCMD OTG ID Change Interrupt Fall */ -#define U2DOTGINT_FSE (1 << 3) /* RXCMD OTG Session End Interrupt Fall */ -#define U2DOTGINT_FSV (1 << 2) /* RXCMD OTG Session Valid Interrupt Fall */ -#define U2DOTGINT_FVV (1 << 1) /* RXCMD OTG Vbus Valid Interrupt Fall */ -#define U2DOTGINT_FCK (1 << 0) /* RXCMD Carkit Interrupt Fall */ - -#define U2DOTGUSR (0x002C) /* U2D OTG ULPI Status Register */ -#define U2DOTGUSR_LPA (1 << 31) /* ULPI Low Power Mode Active */ -#define U2DOTGUSR_S6A (1 << 30) /* ULPI Serial Mode (6-pin) Active */ -#define U2DOTGUSR_S3A (1 << 29) /* ULPI Serial Mode (3-pin) Active */ -#define U2DOTGUSR_CKA (1 << 28) /* ULPI Car Kit Mode Active */ -#define U2DOTGUSR_LS1 (1 << 6) /* RXCMD Linestate 1 Status */ -#define U2DOTGUSR_LS0 (1 << 5) /* RXCMD Linestate 0 Status */ -#define U2DOTGUSR_ID (1 << 4) /* OTG IDGnd Status */ -#define U2DOTGUSR_SE (1 << 3) /* OTG Session End Status */ -#define U2DOTGUSR_SV (1 << 2) /* OTG Session Valid Status */ -#define U2DOTGUSR_VV (1 << 1) /* OTG Vbus Valid Status */ -#define U2DOTGUSR_CK (1 << 0) /* Carkit Interrupt Status */ - -#define U2DOTGUCR (0x0030) /* U2D OTG ULPI Control Register */ -#define U2DOTGUCR_RUN (1 << 25) /* RUN */ -#define U2DOTGUCR_RNW (1 << 24) /* Read or Write operation */ -#define U2DOTGUCR_ADDR (0x3f << 16) /* Address of the ULPI PHY register */ -#define U2DOTGUCR_WDATA (0xff << 8) /* The data for a WRITE command */ -#define U2DOTGUCR_RDATA (0xff << 0) /* The data for a READ command */ - -#define U2DP3CR (0x0034) /* U2D Port 3 Control Register */ -#define U2DP3CR_P2SS (0x3 << 8) /* Host Port 2 Serial Mode Select */ -#define U2DP3CR_P3SS (0x7 << 4) /* Host Port 3 Serial Mode Select */ -#define U2DP3CR_VPVMBEN (0x1 << 2) /* Host Port 3 Vp/Vm Block Enable */ -#define U2DP3CR_CFG (0x3 << 0) /* Host Port 3 Configuration */ - -#define U2DCSR0 (0x0100) /* U2D Control/Status Register - Endpoint 0 */ -#define U2DCSR0_IPA (1 << 8) /* IN Packet Adjusted */ -#define U2DCSR0_SA (1 << 7) /* SETUP Active */ -#define U2DCSR0_RNE (1 << 6) /* Receive FIFO Not Empty */ -#define U2DCSR0_FST (1 << 5) /* Force Stall */ -#define U2DCSR0_SST (1 << 4) /* Send Stall */ -#define U2DCSR0_DME (1 << 3) /* DMA Enable */ -#define U2DCSR0_FTF (1 << 2) /* Flush Transmit FIFO */ -#define U2DCSR0_IPR (1 << 1) /* IN Packet Ready */ -#define U2DCSR0_OPC (1 << 0) /* OUT Packet Complete */ - -#define U2DCSR(x) (0x0100 + ((x) << 2)) /* U2D Control/Status Register - Endpoint x */ -#define U2DCSR_BF (1 << 10) /* Buffer Full, for OUT eps */ -#define U2DCSR_BE (1 << 10) /* Buffer Empty, for IN eps */ -#define U2DCSR_DPE (1 << 9) /* Data Packet Error, for ISO eps only */ -#define U2DCSR_FEF (1 << 8) /* Flush Endpoint FIFO */ -#define U2DCSR_SP (1 << 7) /* Short Packet Control/Status, for OUT eps only, readonly */ -#define U2DCSR_BNE (1 << 6) /* Buffer Not Empty, for OUT eps */ -#define U2DCSR_BNF (1 << 6) /* Buffer Not Full, for IN eps */ -#define U2DCSR_FST (1 << 5) /* Force STALL, write 1 set */ -#define U2DCSR_SST (1 << 4) /* Sent STALL, write 1 clear */ -#define U2DCSR_DME (1 << 3) /* DMA Enable */ -#define U2DCSR_TRN (1 << 2) /* Tx/Rx NAK, write 1 clear */ -#define U2DCSR_PC (1 << 1) /* Packet Complete, write 1 clear */ -#define U2DCSR_FS (1 << 0) /* FIFO needs Service */ - -#define U2DBCR0 (0x0200) /* U2D Byte Count Register - Endpoint 0 */ -#define U2DBCR(x) (0x0200 + ((x) << 2)) /* U2D Byte Count Register - Endpoint x */ - -#define U2DDR0 (0x0300) /* U2D Data Register - Endpoint 0 */ - -#define U2DEPCR(x) (0x0400 + ((x) << 2)) /* U2D Configuration Register - Endpoint x */ -#define U2DEPCR_EE (1 << 0) /* Endpoint Enable */ -#define U2DEPCR_BS_MASK (0x3FE) /* Buffer Size, BS*8=FIFO size, max 8184B = 8KB */ - -#define U2DSCA (0x0500) /* U2D Setup Command Address */ -#define U2DSCA_VALUE (0x0120) - -#define U2DEN0 (0x0504) /* U2D Endpoint Information Register - Endpoint 0 */ -#define U2DEN(x) (0x0504 + ((x) << 2)) /* U2D Endpoint Information Register - Endpoint x */ - -/* U2DMA registers */ -#define U2DMACSR0 (0x1000) /* U2DMA Control/Status Register - Channel 0 */ -#define U2DMACSR(x) (0x1000 + ((x) << 2)) /* U2DMA Control/Status Register - Channel x */ -#define U2DMACSR_RUN (1 << 31) /* Run Bit (read / write) */ -#define U2DMACSR_STOPIRQEN (1 << 29) /* Stop Interrupt Enable (read / write) */ -#define U2DMACSR_EORIRQEN (1 << 28) /* End of Receive Interrupt Enable (R/W) */ -#define U2DMACSR_EORJMPEN (1 << 27) /* Jump to next descriptor on EOR */ -#define U2DMACSR_EORSTOPEN (1 << 26) /* STOP on an EOR */ -#define U2DMACSR_RASIRQEN (1 << 23) /* Request After Cnannel Stopped Interrupt Enable */ -#define U2DMACSR_MASKRUN (1 << 22) /* Mask Run */ -#define U2DMACSR_SCEMC (3 << 18) /* System Bus Split Completion Error Message Class */ -#define U2DMACSR_SCEMI (0x1f << 13) /* System Bus Split Completion Error Message Index */ -#define U2DMACSR_BUSERRTYPE (7 << 10) /* PX Bus Error Type */ -#define U2DMACSR_EORINTR (1 << 9) /* End Of Receive */ -#define U2DMACSR_REQPEND (1 << 8) /* Request Pending */ -#define U2DMACSR_RASINTR (1 << 4) /* Request After Channel Stopped (read / write 1 clear) */ -#define U2DMACSR_STOPINTR (1 << 3) /* Stop Interrupt (read only) */ -#define U2DMACSR_ENDINTR (1 << 2) /* End Interrupt (read / write 1 clear) */ -#define U2DMACSR_STARTINTR (1 << 1) /* Start Interrupt (read / write 1 clear) */ -#define U2DMACSR_BUSERRINTR (1 << 0) /* Bus Error Interrupt (read / write 1 clear) */ - -#define U2DMACR (0x1080) /* U2DMA Control Register */ -#define U2DMAINT (0x10F0) /* U2DMA Interrupt Register */ - -#define U2DMABR0 (0x1100) /* U2DMA Branch Register - Channel 0 */ -#define U2DMABR(x) (0x1100 + (x) << 2) /* U2DMA Branch Register - Channel x */ - -#define U2DMADADR0 (0x1200) /* U2DMA Descriptor Address Register - Channel 0 */ -#define U2DMADADR(x) (0x1200 + (x) * 0x10) /* U2DMA Descriptor Address Register - Channel x */ - -#define U2DMADADR_STOP (1U << 0) - -#define U2DMASADR0 (0x1204) /* U2DMA Source Address Register - Channel 0 */ -#define U2DMASADR(x) (0x1204 + (x) * 0x10) /* U2DMA Source Address Register - Channel x */ -#define U2DMATADR0 (0x1208) /* U2DMA Target Address Register - Channel 0 */ -#define U2DMATADR(x) (0x1208 + (x) * 0x10) /* U2DMA Target Address Register - Channel x */ - -#define U2DMACMDR0 (0x120C) /* U2DMA Command Address Register - Channel 0 */ -#define U2DMACMDR(x) (0x120C + (x) * 0x10) /* U2DMA Command Address Register - Channel x */ - -#define U2DMACMDR_XFRDIS (1 << 31) /* Transfer Direction */ -#define U2DMACMDR_STARTIRQEN (1 << 22) /* Start Interrupt Enable */ -#define U2DMACMDR_ENDIRQEN (1 << 21) /* End Interrupt Enable */ -#define U2DMACMDR_PACKCOMP (1 << 13) /* Packet Complete */ -#define U2DMACMDR_LEN (0x07ff) /* length mask (max = 2K - 1) */ - -#endif /* __ASM_ARCH_PXA3xx_U2D_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-uart.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-uart.h deleted file mode 100644 index 55aeb7fb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/regs-uart.h +++ /dev/null @@ -1,143 +0,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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/reset.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/reset.h deleted file mode 100644 index b6c10556..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/reset.h +++ /dev/null @@ -1,21 +0,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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/sharpsl_pm.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/sharpsl_pm.h deleted file mode 100644 index 905be675..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/sharpsl_pm.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * SharpSL Battery/PM Driver - * - * Copyright (c) 2004-2005 Richard Purdie - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef _MACH_SHARPSL_PM -#define _MACH_SHARPSL_PM - -struct sharpsl_charger_machinfo { - void (*init)(void); - void (*exit)(void); - int gpio_acin; - int gpio_batfull; - int batfull_irq; - int gpio_batlock; - int gpio_fatal; - void (*discharge)(int); - void (*discharge1)(int); - void (*charge)(int); - void (*measure_temp)(int); - void (*presuspend)(void); - void (*postsuspend)(void); - void (*earlyresume)(void); - unsigned long (*read_devdata)(int); -#define SHARPSL_BATT_VOLT 1 -#define SHARPSL_BATT_TEMP 2 -#define SHARPSL_ACIN_VOLT 3 -#define SHARPSL_STATUS_ACIN 4 -#define SHARPSL_STATUS_LOCK 5 -#define SHARPSL_STATUS_CHRGFULL 6 -#define SHARPSL_STATUS_FATAL 7 - unsigned long (*charger_wakeup)(void); - int (*should_wakeup)(unsigned int resume_on_alarm); - void (*backlight_limit)(int); - int (*backlight_get_status) (void); - int charge_on_volt; - int charge_on_temp; - int charge_acin_high; - int charge_acin_low; - int fatal_acin_volt; - int fatal_noacin_volt; - int bat_levels; - struct battery_thresh *bat_levels_noac; - struct battery_thresh *bat_levels_acin; - struct battery_thresh *bat_levels_noac_bl; - struct battery_thresh *bat_levels_acin_bl; - int status_high_acin; - int status_low_acin; - int status_high_noac; - int status_low_noac; -}; - -struct battery_thresh { - int voltage; - int percentage; -}; - -struct battery_stat { - int ac_status; /* APM AC Present/Not Present */ - int mainbat_status; /* APM Main Battery Status */ - int mainbat_percent; /* Main Battery Percentage Charge */ - int mainbat_voltage; /* Main Battery Voltage */ -}; - -struct sharpsl_pm_status { - struct device *dev; - struct timer_list ac_timer; - struct timer_list chrg_full_timer; - - int charge_mode; -#define CHRG_ERROR (-1) -#define CHRG_OFF (0) -#define CHRG_ON (1) -#define CHRG_DONE (2) - - unsigned int flags; -#define SHARPSL_SUSPENDED (1 << 0) /* Device is Suspended */ -#define SHARPSL_ALARM_ACTIVE (1 << 1) /* Alarm is for charging event (not user) */ -#define SHARPSL_BL_LIMIT (1 << 2) /* Backlight Intensity Limited */ -#define SHARPSL_APM_QUEUED (1 << 3) /* APM Event Queued */ -#define SHARPSL_DO_OFFLINE_CHRG (1 << 4) /* Trigger the offline charger */ - - int full_count; - unsigned long charge_start_time; - struct sharpsl_charger_machinfo *machinfo; - struct battery_stat battstat; -}; - -extern struct sharpsl_pm_status sharpsl_pm; - -extern struct battery_thresh sharpsl_battery_levels_acin[]; -extern struct battery_thresh sharpsl_battery_levels_noac[]; - -#define SHARPSL_LED_ERROR 2 -#define SHARPSL_LED_ON 1 -#define SHARPSL_LED_OFF 0 - -void sharpsl_battery_kick(void); -void sharpsl_pm_led(int val); - -/* MAX1111 Channel Definitions */ -#define MAX1111_BATT_VOLT 4u -#define MAX1111_BATT_TEMP 2u -#define MAX1111_ACIN_VOLT 6u -int sharpsl_pm_pxa_read_max1111(int channel); - -void corgi_lcd_limit_intensity(int limit); -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/smemc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/smemc.h deleted file mode 100644 index b7de471b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/smemc.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Static memory controller register definitions for PXA CPUs - * - * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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 */ - -/* - * 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/spitz.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/spitz.h deleted file mode 100644 index 0bfe6507..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/spitz.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * 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 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef __ASM_ARCH_SPITZ_H -#define __ASM_ARCH_SPITZ_H 1 -#endif - -#include <linux/fb.h> -#include <linux/gpio.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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/timex.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/timex.h deleted file mode 100644 index af6760a5..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/timex.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/timex.h - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -/* Various drivers are still using the constant of CLOCK_TICK_RATE, for - * those drivers to at least work, the definition is provided here. - * - * NOTE: this is no longer accurate when multiple processors and boards - * are selected, newer drivers should not depend on this any more. Use - * either the clocksource/clockevent or get this at run-time by calling - * get_clock_tick_rate() (as defined in generic.c). - */ - -#if defined(CONFIG_PXA25x) -/* PXA250/210 timer base */ -#define CLOCK_TICK_RATE 3686400 -#elif defined(CONFIG_PXA27x) -/* PXA27x timer base */ -#ifdef CONFIG_MACH_MAINSTONE -#define CLOCK_TICK_RATE 3249600 -#else -#define CLOCK_TICK_RATE 3250000 -#endif -#else -#define CLOCK_TICK_RATE 3250000 -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa.h deleted file mode 100644 index 2bb0e862..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Hardware specific definitions for Sharp SL-C6000x series of PDAs - * - * Copyright (c) 2005 Dirk Opfer - * - * Based on Sharp's 2.4 kernel patches - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef _ASM_ARCH_TOSA_H_ -#define _ASM_ARCH_TOSA_H_ 1 - -/* 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) - -/* - * Timing Generator - */ -#define TG_PNLCTL 0x00 -#define TG_TPOSCTL 0x01 -#define TG_DUTYCTL 0x02 -#define TG_GPOSR 0x03 -#define TG_GPODR1 0x04 -#define TG_GPODR2 0x05 -#define TG_PINICTL 0x06 -#define TG_HPOSCTL 0x07 - -/* - * 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 - -struct spi_device; -extern int tosa_bl_enable(struct spi_device *spi, int enable); - -#endif /* _ASM_ARCH_TOSA_H_ */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa_bt.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa_bt.h deleted file mode 100644 index efc3c3d3..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/tosa_bt.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Tosa bluetooth built-in chip control. - * - * Later it may be shared with some other platforms. - * - * Copyright (c) 2008 Dmitry Baryshkov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ -#ifndef TOSA_BT_H -#define TOSA_BT_H - -struct tosa_bt_data { - int gpio_pwr; - int gpio_reset; -}; - -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/trizeps4.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/trizeps4.h deleted file mode 100644 index d2ca0105..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/trizeps4.h +++ /dev/null @@ -1,162 +0,0 @@ -/************************************************************************ - * Include file for TRIZEPS4 SoM and ConXS eval-board - * Copyright (c) Jürgen Schindele - * 2006 - ************************************************************************/ - -/* - * Includes/Defines - */ -#ifndef _TRIPEPS4_H_ -#define _TRIPEPS4_H_ - -/* 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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/udc.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/udc.h deleted file mode 100644 index 2f82332e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/udc.h +++ /dev/null @@ -1,8 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/udc.h - * - */ -#include <asm/mach/udc_pxa2xx.h> - -extern void pxa_set_udc_info(struct pxa2xx_udc_mach_info *info); - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/uncompress.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/uncompress.h deleted file mode 100644 index 5519a34b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/uncompress.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/uncompress.h - * - * Author: Nicolas Pitre - * Copyright: (C) 2001 MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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_intelmote2() - || machine_is_csb726() || machine_is_stargate2() - || 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; - } -} - -/* - * nothing to do - */ -#define arch_decomp_wdog() diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/viper.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/viper.h deleted file mode 100644 index 5f5fbf1f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/viper.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/viper.h - * - * Author: Ian Campbell - * Created: Feb 03, 2003 - * Copyright: Arcom Control Systems. - * - * Maintained by Marc Zyngier <maz@misterjones.org> - * <marc.zyngier@altran.com> - * - * Created based on lubbock.h: - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef ARCH_VIPER_H -#define ARCH_VIPER_H - -#define VIPER_BOOT_PHYS PXA_CS0_PHYS -#define VIPER_FLASH_PHYS PXA_CS1_PHYS -#define VIPER_ETH_PHYS PXA_CS2_PHYS -#define VIPER_USB_PHYS PXA_CS3_PHYS -#define VIPER_ETH_DATA_PHYS PXA_CS4_PHYS -#define VIPER_CPLD_PHYS PXA_CS5_PHYS - -#define VIPER_CPLD_BASE (0xf0000000) -#define VIPER_PC104IO_BASE (0xf1000000) -#define VIPER_USB_BASE (0xf1800000) - -#define VIPER_ETH_GPIO (0) -#define VIPER_CPLD_GPIO (1) -#define VIPER_USB_GPIO (2) -#define VIPER_UARTA_GPIO (4) -#define VIPER_UARTB_GPIO (3) -#define VIPER_CF_CD_GPIO (32) -#define VIPER_CF_RDY_GPIO (8) -#define VIPER_BCKLIGHT_EN_GPIO (9) -#define VIPER_LCD_EN_GPIO (10) -#define VIPER_PSU_DATA_GPIO (6) -#define VIPER_PSU_CLK_GPIO (11) -#define VIPER_UART_SHDN_GPIO (12) -#define VIPER_BRIGHTNESS_GPIO (16) -#define VIPER_PSU_nCS_LD_GPIO (19) -#define VIPER_UPS_GPIO (20) -#define VIPER_CF_POWER_GPIO (82) -#define VIPER_TPM_I2C_SDA_GPIO (26) -#define VIPER_TPM_I2C_SCL_GPIO (27) -#define VIPER_RTC_I2C_SDA_GPIO (83) -#define VIPER_RTC_I2C_SCL_GPIO (84) - -#define VIPER_CPLD_P2V(x) ((x) - VIPER_CPLD_PHYS + VIPER_CPLD_BASE) -#define VIPER_CPLD_V2P(x) ((x) - VIPER_CPLD_BASE + VIPER_CPLD_PHYS) - -#ifndef __ASSEMBLY__ -# define __VIPER_CPLD_REG(x) (*((volatile u16 *)VIPER_CPLD_P2V(x))) -#endif - -/* board level registers in the CPLD: (offsets from CPLD_BASE) ... */ - -/* ... Physical addresses */ -#define _VIPER_LO_IRQ_STATUS (VIPER_CPLD_PHYS + 0x100000) -#define _VIPER_ICR_PHYS (VIPER_CPLD_PHYS + 0x100002) -#define _VIPER_HI_IRQ_STATUS (VIPER_CPLD_PHYS + 0x100004) -#define _VIPER_VERSION_PHYS (VIPER_CPLD_PHYS + 0x100006) -#define VIPER_UARTA_PHYS (VIPER_CPLD_PHYS + 0x300010) -#define VIPER_UARTB_PHYS (VIPER_CPLD_PHYS + 0x300000) -#define _VIPER_SRAM_BASE (VIPER_CPLD_PHYS + 0x800000) - -/* ... Virtual addresses */ -#define VIPER_LO_IRQ_STATUS __VIPER_CPLD_REG(_VIPER_LO_IRQ_STATUS) -#define VIPER_HI_IRQ_STATUS __VIPER_CPLD_REG(_VIPER_HI_IRQ_STATUS) -#define VIPER_VERSION __VIPER_CPLD_REG(_VIPER_VERSION_PHYS) -#define VIPER_ICR __VIPER_CPLD_REG(_VIPER_ICR_PHYS) - -/* Decode VIPER_VERSION register */ -#define VIPER_CPLD_REVISION(x) (((x) >> 5) & 0x7) -#define VIPER_BOARD_VERSION(x) (((x) >> 3) & 0x3) -#define VIPER_BOARD_ISSUE(x) (((x) >> 0) & 0x7) - -/* Interrupt and Configuration Register (VIPER_ICR) */ -/* This is a write only register. Only CF_RST is used under Linux */ - -#define VIPER_ICR_RETRIG (1 << 0) -#define VIPER_ICR_AUTO_CLR (1 << 1) -#define VIPER_ICR_R_DIS (1 << 2) -#define VIPER_ICR_CF_RST (1 << 3) - -#endif - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/vpac270.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/vpac270.h deleted file mode 100644 index 7bfa3dd0..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/vpac270.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * GPIOs and interrupts for Voipac PXA270 - * - * Copyright (C) 2010 - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#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/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/z2.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/z2.h deleted file mode 100644 index 7b0f71ef..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/z2.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/z2.h - * - * Author: Ken McGuire - * Created: Feb 6, 2009 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#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 diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zeus.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zeus.h deleted file mode 100644 index 56024f81..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zeus.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * arch/arm/mach-pxa/include/mach/zeus.h - * - * Author: David Vrabel - * Created: Sept 28, 2005 - * Copyright: Arcom Control Systems Ltd. - * - * Maintained by: Marc Zyngier <maz@misterjones.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#ifndef _MACH_ZEUS_H -#define _MACH_ZEUS_H - -#define ZEUS_NR_IRQS (IRQ_BOARD_START + 48) - -/* Physical addresses */ -#define ZEUS_FLASH_PHYS PXA_CS0_PHYS -#define ZEUS_ETH0_PHYS PXA_CS1_PHYS -#define ZEUS_ETH1_PHYS PXA_CS2_PHYS -#define ZEUS_CPLD_PHYS (PXA_CS4_PHYS+0x2000000) -#define ZEUS_SRAM_PHYS PXA_CS5_PHYS -#define ZEUS_PC104IO_PHYS (0x30000000) - -#define ZEUS_CPLD_VERSION_PHYS (ZEUS_CPLD_PHYS + 0x00000000) -#define ZEUS_CPLD_ISA_IRQ_PHYS (ZEUS_CPLD_PHYS + 0x00800000) -#define ZEUS_CPLD_CONTROL_PHYS (ZEUS_CPLD_PHYS + 0x01000000) -#define ZEUS_CPLD_EXTWDOG_PHYS (ZEUS_CPLD_PHYS + 0x01800000) - -/* GPIOs */ -#define ZEUS_AC97_GPIO 0 -#define ZEUS_WAKEUP_GPIO 1 -#define ZEUS_UARTA_GPIO 9 -#define ZEUS_UARTB_GPIO 10 -#define ZEUS_UARTC_GPIO 12 -#define ZEUS_UARTD_GPIO 11 -#define ZEUS_ETH0_GPIO 14 -#define ZEUS_ISA_GPIO 17 -#define ZEUS_BKLEN_GPIO 19 -#define ZEUS_USB2_PWREN_GPIO 22 -#define ZEUS_PTT_GPIO 27 -#define ZEUS_CF_CD_GPIO 35 -#define ZEUS_MMC_WP_GPIO 52 -#define ZEUS_MMC_CD_GPIO 53 -#define ZEUS_EXTGPIO_GPIO 91 -#define ZEUS_CF_PWEN_GPIO 97 -#define ZEUS_CF_RDY_GPIO 99 -#define ZEUS_LCD_EN_GPIO 101 -#define ZEUS_ETH1_GPIO 113 -#define ZEUS_CAN_GPIO 116 - -#define ZEUS_EXT0_GPIO_BASE 128 -#define ZEUS_EXT1_GPIO_BASE 160 -#define ZEUS_USER_GPIO_BASE 192 - -#define ZEUS_EXT0_GPIO(x) (ZEUS_EXT0_GPIO_BASE + (x)) -#define ZEUS_EXT1_GPIO(x) (ZEUS_EXT1_GPIO_BASE + (x)) -#define ZEUS_USER_GPIO(x) (ZEUS_USER_GPIO_BASE + (x)) - -#define ZEUS_CAN_SHDN_GPIO ZEUS_EXT1_GPIO(2) - -/* - * CPLD registers: - * Only 4 registers, but spread over a 32MB address space. - * Be gentle, and remap that over 32kB... - */ - -#define ZEUS_CPLD IOMEM(0xf0000000) -#define ZEUS_CPLD_VERSION (ZEUS_CPLD + 0x0000) -#define ZEUS_CPLD_ISA_IRQ (ZEUS_CPLD + 0x1000) -#define ZEUS_CPLD_CONTROL (ZEUS_CPLD + 0x2000) - -/* CPLD register bits */ -#define ZEUS_CPLD_CONTROL_CF_RST 0x01 - -#define ZEUS_PC104IO IOMEM(0xf1000000) - -#define ZEUS_SRAM_SIZE (256 * 1024) - -#endif - - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zylonite.h b/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zylonite.h deleted file mode 100644 index ecca976f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/include/mach/zylonite.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef __ASM_ARCH_ZYLONITE_H -#define __ASM_ARCH_ZYLONITE_H - -#define ZYLONITE_ETH_PHYS 0x14000000 - -#define EXT_GPIO(x) (128 + (x)) - -#define ZYLONITE_NR_IRQS (IRQ_BOARD_START + 32) - -/* the following variables are processor specific and initialized - * by the corresponding zylonite_pxa3xx_init() - */ -extern int gpio_eth_irq; -extern int gpio_debug_led1; -extern int gpio_debug_led2; - -extern int wm9713_irq; - -extern int lcd_id; -extern int lcd_orientation; - -#ifdef CONFIG_MACH_ZYLONITE300 -extern void zylonite_pxa300_init(void); -#else -static inline void zylonite_pxa300_init(void) -{ - if (cpu_is_pxa300() || cpu_is_pxa310()) - panic("%s: PXA300/PXA310 not supported\n", __func__); -} -#endif - -#ifdef CONFIG_MACH_ZYLONITE320 -extern void zylonite_pxa320_init(void); -#else -static inline void zylonite_pxa320_init(void) -{ - if (cpu_is_pxa320()) - panic("%s: PXA320 not supported\n", __func__); -} -#endif - -#endif /* __ASM_ARCH_ZYLONITE_H */ diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/irq.c b/ANDROID_3.4.5/arch/arm/mach-pxa/irq.c deleted file mode 100644 index 5dae15ea..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/irq.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/irq.c - * - * Generic PXA IRQ handling - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/init.h> -#include <linux/module.h> -#include <linux/interrupt.h> -#include <linux/syscore_ops.h> -#include <linux/io.h> -#include <linux/irq.h> - -#include <asm/exception.h> - -#include <mach/hardware.h> -#include <mach/irqs.h> - -#include "generic.h" - -#define IRQ_BASE io_p2v(0x40d00000) - -#define ICIP (0x000) -#define ICMR (0x004) -#define ICLR (0x008) -#define ICFR (0x00c) -#define ICPR (0x010) -#define ICCR (0x014) -#define ICHP (0x018) -#define IPR(i) (((i) < 32) ? (0x01c + ((i) << 2)) : \ - ((i) < 64) ? (0x0b0 + (((i) - 32) << 2)) : \ - (0x144 + (((i) - 64) << 2))) -#define ICHP_VAL_IRQ (1 << 31) -#define ICHP_IRQ(i) (((i) >> 16) & 0x7fff) -#define IPR_VALID (1 << 31) -#define IRQ_BIT(n) (((n) - PXA_IRQ(0)) & 0x1f) - -#define MAX_INTERNAL_IRQS 128 - -/* - * This is for peripheral IRQs internal to the PXA chip. - */ - -static int pxa_internal_irq_nr; - -static inline int cpu_has_ipr(void) -{ - return !cpu_is_pxa25x(); -} - -static inline void __iomem *irq_base(int i) -{ - static unsigned long phys_base[] = { - 0x40d00000, - 0x40d0009c, - 0x40d00130, - }; - - return io_p2v(phys_base[i]); -} - -void pxa_mask_irq(struct irq_data *d) -{ - void __iomem *base = irq_data_get_irq_chip_data(d); - uint32_t icmr = __raw_readl(base + ICMR); - - icmr &= ~(1 << IRQ_BIT(d->irq)); - __raw_writel(icmr, base + ICMR); -} - -void pxa_unmask_irq(struct irq_data *d) -{ - void __iomem *base = irq_data_get_irq_chip_data(d); - uint32_t icmr = __raw_readl(base + ICMR); - - icmr |= 1 << IRQ_BIT(d->irq); - __raw_writel(icmr, base + ICMR); -} - -static struct irq_chip pxa_internal_irq_chip = { - .name = "SC", - .irq_ack = pxa_mask_irq, - .irq_mask = pxa_mask_irq, - .irq_unmask = pxa_unmask_irq, -}; - -asmlinkage void __exception_irq_entry icip_handle_irq(struct pt_regs *regs) -{ - uint32_t icip, icmr, mask; - - do { - icip = __raw_readl(IRQ_BASE + ICIP); - icmr = __raw_readl(IRQ_BASE + ICMR); - mask = icip & icmr; - - if (mask == 0) - break; - - handle_IRQ(PXA_IRQ(fls(mask) - 1), regs); - } while (1); -} - -asmlinkage void __exception_irq_entry ichp_handle_irq(struct pt_regs *regs) -{ - uint32_t ichp; - - do { - __asm__ __volatile__("mrc p6, 0, %0, c5, c0, 0\n": "=r"(ichp)); - - if ((ichp & ICHP_VAL_IRQ) == 0) - break; - - handle_IRQ(PXA_IRQ(ICHP_IRQ(ichp)), regs); - } while (1); -} - -void __init pxa_init_irq(int irq_nr, int (*fn)(struct irq_data *, unsigned int)) -{ - int irq, i, n; - - BUG_ON(irq_nr > MAX_INTERNAL_IRQS); - - pxa_internal_irq_nr = irq_nr; - - for (n = 0; n < irq_nr; n += 32) { - void __iomem *base = irq_base(n >> 5); - - __raw_writel(0, base + ICMR); /* disable all IRQs */ - __raw_writel(0, base + ICLR); /* all IRQs are IRQ, not FIQ */ - for (i = n; (i < (n + 32)) && (i < irq_nr); i++) { - /* initialize interrupt priority */ - if (cpu_has_ipr()) - __raw_writel(i | IPR_VALID, IRQ_BASE + IPR(i)); - - irq = PXA_IRQ(i); - irq_set_chip_and_handler(irq, &pxa_internal_irq_chip, - handle_level_irq); - irq_set_chip_data(irq, base); - set_irq_flags(irq, IRQF_VALID); - } - } - - /* only unmasked interrupts kick us out of idle */ - __raw_writel(1, irq_base(0) + ICCR); - - pxa_internal_irq_chip.irq_set_wake = fn; -} - -#ifdef CONFIG_PM -static unsigned long saved_icmr[MAX_INTERNAL_IRQS/32]; -static unsigned long saved_ipr[MAX_INTERNAL_IRQS]; - -static int pxa_irq_suspend(void) -{ - int i; - - for (i = 0; i < pxa_internal_irq_nr / 32; i++) { - void __iomem *base = irq_base(i); - - saved_icmr[i] = __raw_readl(base + ICMR); - __raw_writel(0, base + ICMR); - } - - if (cpu_has_ipr()) { - for (i = 0; i < pxa_internal_irq_nr; i++) - saved_ipr[i] = __raw_readl(IRQ_BASE + IPR(i)); - } - - return 0; -} - -static void pxa_irq_resume(void) -{ - int i; - - for (i = 0; i < pxa_internal_irq_nr / 32; i++) { - void __iomem *base = irq_base(i); - - __raw_writel(saved_icmr[i], base + ICMR); - __raw_writel(0, base + ICLR); - } - - if (cpu_has_ipr()) - for (i = 0; i < pxa_internal_irq_nr; i++) - __raw_writel(saved_ipr[i], IRQ_BASE + IPR(i)); - - __raw_writel(1, IRQ_BASE + ICCR); -} -#else -#define pxa_irq_suspend NULL -#define pxa_irq_resume NULL -#endif - -struct syscore_ops pxa_irq_syscore_ops = { - .suspend = pxa_irq_suspend, - .resume = pxa_irq_resume, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-idp.c b/ANDROID_3.4.5/arch/arm/mach-pxa/leds-idp.c deleted file mode 100644 index 06b06002..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-idp.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/leds-idp.c - * - * Copyright (C) 2000 John Dorsey <john+@cs.cmu.edu> - * - * Copyright (c) 2001 Jeff Sutherland <jeffs@accelent.com> - * - * Original (leds-footbridge.c) by Russell King - * - * Macros for actual LED manipulation should be in machine specific - * files in this 'mach' directory. - */ - - -#include <linux/init.h> - -#include <mach/hardware.h> -#include <asm/leds.h> - -#include <mach/pxa25x.h> -#include <mach/idp.h> - -#include "leds.h" - -#define LED_STATE_ENABLED 1 -#define LED_STATE_CLAIMED 2 - -static unsigned int led_state; -static unsigned int hw_led_state; - -void idp_leds_event(led_event_t evt) -{ - unsigned long flags; - - local_irq_save(flags); - - switch (evt) { - case led_start: - hw_led_state = IDP_HB_LED | IDP_BUSY_LED; - led_state = LED_STATE_ENABLED; - break; - - case led_stop: - led_state &= ~LED_STATE_ENABLED; - break; - - case led_claim: - led_state |= LED_STATE_CLAIMED; - hw_led_state = IDP_HB_LED | IDP_BUSY_LED; - break; - - case led_release: - led_state &= ~LED_STATE_CLAIMED; - hw_led_state = IDP_HB_LED | IDP_BUSY_LED; - break; - -#ifdef CONFIG_LEDS_TIMER - case led_timer: - if (!(led_state & LED_STATE_CLAIMED)) - hw_led_state ^= IDP_HB_LED; - break; -#endif - -#ifdef CONFIG_LEDS_CPU - case led_idle_start: - if (!(led_state & LED_STATE_CLAIMED)) - hw_led_state &= ~IDP_BUSY_LED; - break; - - case led_idle_end: - if (!(led_state & LED_STATE_CLAIMED)) - hw_led_state |= IDP_BUSY_LED; - break; -#endif - - case led_halted: - break; - - case led_green_on: - if (led_state & LED_STATE_CLAIMED) - hw_led_state |= IDP_HB_LED; - break; - - case led_green_off: - if (led_state & LED_STATE_CLAIMED) - hw_led_state &= ~IDP_HB_LED; - break; - - case led_amber_on: - break; - - case led_amber_off: - break; - - case led_red_on: - if (led_state & LED_STATE_CLAIMED) - hw_led_state |= IDP_BUSY_LED; - break; - - case led_red_off: - if (led_state & LED_STATE_CLAIMED) - hw_led_state &= ~IDP_BUSY_LED; - break; - - default: - break; - } - - if (led_state & LED_STATE_ENABLED) - IDP_CPLD_LED_CONTROL = ( (IDP_CPLD_LED_CONTROL | IDP_LEDS_MASK) & ~hw_led_state); - else - IDP_CPLD_LED_CONTROL |= IDP_LEDS_MASK; - - local_irq_restore(flags); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-lubbock.c b/ANDROID_3.4.5/arch/arm/mach-pxa/leds-lubbock.c deleted file mode 100644 index 0bd85c88..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-lubbock.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/leds-lubbock.c - * - * Copyright (C) 2000 John Dorsey <john+@cs.cmu.edu> - * - * Copyright (c) 2001 Jeff Sutherland <jeffs@accelent.com> - * - * Original (leds-footbridge.c) by Russell King - * - * Major surgery on April 2004 by Nicolas Pitre for less global - * namespace collision. Mostly adapted the Mainstone version. - */ - -#include <linux/init.h> - -#include <mach/hardware.h> -#include <asm/leds.h> -#include <mach/pxa25x.h> -#include <mach/lubbock.h> - -#include "leds.h" - -/* - * 8 discrete leds available for general use: - * - * Note: bits [15-8] are used to enable/blank the 8 7 segment hex displays - * so be sure to not monkey with them here. - */ - -#define D28 (1 << 0) -#define D27 (1 << 1) -#define D26 (1 << 2) -#define D25 (1 << 3) -#define D24 (1 << 4) -#define D23 (1 << 5) -#define D22 (1 << 6) -#define D21 (1 << 7) - -#define LED_STATE_ENABLED 1 -#define LED_STATE_CLAIMED 2 - -static unsigned int led_state; -static unsigned int hw_led_state; - -void lubbock_leds_event(led_event_t evt) -{ - unsigned long flags; - - local_irq_save(flags); - - switch (evt) { - case led_start: - hw_led_state = 0; - led_state = LED_STATE_ENABLED; - break; - - case led_stop: - led_state &= ~LED_STATE_ENABLED; - break; - - case led_claim: - led_state |= LED_STATE_CLAIMED; - hw_led_state = 0; - break; - - case led_release: - led_state &= ~LED_STATE_CLAIMED; - hw_led_state = 0; - break; - -#ifdef CONFIG_LEDS_TIMER - case led_timer: - hw_led_state ^= D26; - break; -#endif - -#ifdef CONFIG_LEDS_CPU - case led_idle_start: - hw_led_state &= ~D27; - break; - - case led_idle_end: - hw_led_state |= D27; - break; -#endif - - case led_halted: - break; - - case led_green_on: - hw_led_state |= D21; - break; - - case led_green_off: - hw_led_state &= ~D21; - break; - - case led_amber_on: - hw_led_state |= D22; - break; - - case led_amber_off: - hw_led_state &= ~D22; - break; - - case led_red_on: - hw_led_state |= D23; - break; - - case led_red_off: - hw_led_state &= ~D23; - break; - - default: - break; - } - - if (led_state & LED_STATE_ENABLED) - LUB_DISC_BLNK_LED = (LUB_DISC_BLNK_LED | 0xff) & ~hw_led_state; - else - LUB_DISC_BLNK_LED |= 0xff; - - local_irq_restore(flags); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-mainstone.c b/ANDROID_3.4.5/arch/arm/mach-pxa/leds-mainstone.c deleted file mode 100644 index 4058ab34..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/leds-mainstone.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/leds-mainstone.c - * - * Author: Nicolas Pitre - * Created: Nov 05, 2002 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> - -#include <mach/hardware.h> -#include <asm/leds.h> - -#include <mach/pxa27x.h> -#include <mach/mainstone.h> - -#include "leds.h" - - -/* 8 discrete leds available for general use: */ -#define D28 (1 << 0) -#define D27 (1 << 1) -#define D26 (1 << 2) -#define D25 (1 << 3) -#define D24 (1 << 4) -#define D23 (1 << 5) -#define D22 (1 << 6) -#define D21 (1 << 7) - -#define LED_STATE_ENABLED 1 -#define LED_STATE_CLAIMED 2 - -static unsigned int led_state; -static unsigned int hw_led_state; - -void mainstone_leds_event(led_event_t evt) -{ - unsigned long flags; - - local_irq_save(flags); - - switch (evt) { - case led_start: - hw_led_state = 0; - led_state = LED_STATE_ENABLED; - break; - - case led_stop: - led_state &= ~LED_STATE_ENABLED; - break; - - case led_claim: - led_state |= LED_STATE_CLAIMED; - hw_led_state = 0; - break; - - case led_release: - led_state &= ~LED_STATE_CLAIMED; - hw_led_state = 0; - break; - -#ifdef CONFIG_LEDS_TIMER - case led_timer: - hw_led_state ^= D26; - break; -#endif - -#ifdef CONFIG_LEDS_CPU - case led_idle_start: - hw_led_state &= ~D27; - break; - - case led_idle_end: - hw_led_state |= D27; - break; -#endif - - case led_halted: - break; - - case led_green_on: - hw_led_state |= D21; - break; - - case led_green_off: - hw_led_state &= ~D21; - break; - - case led_amber_on: - hw_led_state |= D22; - break; - - case led_amber_off: - hw_led_state &= ~D22; - break; - - case led_red_on: - hw_led_state |= D23; - break; - - case led_red_off: - hw_led_state &= ~D23; - break; - - default: - break; - } - - if (led_state & LED_STATE_ENABLED) - MST_LEDCTRL = (MST_LEDCTRL | 0xff) & ~hw_led_state; - else - MST_LEDCTRL |= 0xff; - - local_irq_restore(flags); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/leds.c b/ANDROID_3.4.5/arch/arm/mach-pxa/leds.c deleted file mode 100644 index bbe4d5f6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/leds.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/leds.c - * - * xscale LEDs dispatcher - * - * Copyright (C) 2001 Nicolas Pitre - * - * Copyright (c) 2001 Jeff Sutherland, Accelent Systems Inc. - */ -#include <linux/compiler.h> -#include <linux/init.h> - -#include <asm/leds.h> -#include <asm/mach-types.h> - -#include "leds.h" - -static int __init -pxa_leds_init(void) -{ - if (machine_is_lubbock()) - leds_event = lubbock_leds_event; - if (machine_is_mainstone()) - leds_event = mainstone_leds_event; - if (machine_is_pxa_idp()) - leds_event = idp_leds_event; - - leds_event(led_start); - return 0; -} - -core_initcall(pxa_leds_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/leds.h b/ANDROID_3.4.5/arch/arm/mach-pxa/leds.h deleted file mode 100644 index 7f0dfe01..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/leds.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * arch/arm/mach-pxa/leds.h - * - * Copyright (c) 2001 Jeff Sutherland, Accelent Systems Inc. - * - * blinky lights for various PXA-based systems: - * - */ - -extern void idp_leds_event(led_event_t evt); -extern void lubbock_leds_event(led_event_t evt); -extern void mainstone_leds_event(led_event_t evt); -extern void trizeps4_leds_event(led_event_t evt); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/littleton.c b/ANDROID_3.4.5/arch/arm/mach-pxa/littleton.c deleted file mode 100644 index 1fb86edb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/littleton.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/littleton.c - * - * Support for the Marvell Littleton Development Platform. - * - * Author: Jason Chagas (largely modified code) - * Created: Nov 20, 2006 - * Copyright: (C) Copyright 2006 Marvell International Ltd. - * - * 2007-11-22 modified to align with latest kernel - * eric miao <eric.miao@marvell.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * publishhed by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/interrupt.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/clk.h> -#include <linux/gpio.h> -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/smc91x.h> -#include <linux/i2c.h> -#include <linux/leds.h> -#include <linux/mfd/da903x.h> -#include <linux/i2c/max732x.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/types.h> -#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> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> - -#include <mach/pxa300.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <plat/pxa27x_keypad.h> -#include <mach/littleton.h> -#include <plat/pxa3xx_nand.h> - -#include "generic.h" - -#define GPIO_MMC1_CARD_DETECT mfp_to_gpio(MFP_PIN_GPIO15) - -/* Littleton MFP configurations */ -static mfp_cfg_t littleton_mfp_cfg[] __initdata = { - /* LCD */ - GPIO54_LCD_LDD_0, - GPIO55_LCD_LDD_1, - GPIO56_LCD_LDD_2, - GPIO57_LCD_LDD_3, - GPIO58_LCD_LDD_4, - GPIO59_LCD_LDD_5, - GPIO60_LCD_LDD_6, - GPIO61_LCD_LDD_7, - GPIO62_LCD_LDD_8, - GPIO63_LCD_LDD_9, - GPIO64_LCD_LDD_10, - GPIO65_LCD_LDD_11, - GPIO66_LCD_LDD_12, - GPIO67_LCD_LDD_13, - GPIO68_LCD_LDD_14, - GPIO69_LCD_LDD_15, - GPIO70_LCD_LDD_16, - GPIO71_LCD_LDD_17, - GPIO72_LCD_FCLK, - GPIO73_LCD_LCLK, - GPIO74_LCD_PCLK, - GPIO75_LCD_BIAS, - - /* SSP2 */ - GPIO25_SSP2_SCLK, - GPIO27_SSP2_TXD, - GPIO17_GPIO, /* SFRM as chip-select */ - - /* Debug Ethernet */ - GPIO90_GPIO, - - /* Keypad */ - GPIO107_KP_DKIN_0, - GPIO108_KP_DKIN_1, - GPIO115_KP_MKIN_0, - GPIO116_KP_MKIN_1, - GPIO117_KP_MKIN_2, - GPIO118_KP_MKIN_3, - GPIO119_KP_MKIN_4, - GPIO120_KP_MKIN_5, - GPIO121_KP_MKOUT_0, - GPIO122_KP_MKOUT_1, - GPIO123_KP_MKOUT_2, - GPIO124_KP_MKOUT_3, - GPIO125_KP_MKOUT_4, - - /* MMC1 */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, - GPIO15_GPIO, /* card detect */ - - /* UART3 */ - GPIO107_UART3_CTS, - GPIO108_UART3_RTS, - GPIO109_UART3_TXD, - GPIO110_UART3_RXD, -}; - -static struct resource smc91x_resources[] = { - [0] = { - .start = (LITTLETON_ETH_PHYS + 0x300), - .end = (LITTLETON_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO90)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO90)), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, - } -}; - -static struct smc91x_platdata littleton_smc91x_info = { - .flags = SMC91X_USE_8BIT | SMC91X_USE_16BIT | - SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &littleton_smc91x_info, - }, -}; - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info tpo_tdo24mtea1_modes[] = { - [0] = { - /* VGA */ - .pixclock = 38250, - .xres = 480, - .yres = 640, - .bpp = 16, - .hsync_len = 8, - .left_margin = 8, - .right_margin = 24, - .vsync_len = 2, - .upper_margin = 2, - .lower_margin = 4, - .sync = 0, - }, - [1] = { - /* QVGA */ - .pixclock = 153000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 8, - .left_margin = 8, - .right_margin = 88, - .vsync_len = 2, - .upper_margin = 2, - .lower_margin = 2, - .sync = 0, - }, -}; - -static struct pxafb_mach_info littleton_lcd_info = { - .modes = tpo_tdo24mtea1_modes, - .num_modes = 2, - .lcd_conn = LCD_COLOR_TFT_16BPP, -}; - -static void littleton_init_lcd(void) -{ - pxa_set_fb_info(NULL, &littleton_lcd_info); -} -#else -static inline void littleton_init_lcd(void) {}; -#endif /* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */ - -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static struct pxa2xx_spi_master littleton_spi_info = { - .num_chipselect = 1, -}; - -static struct pxa2xx_spi_chip littleton_tdo24m_chip = { - .rx_threshold = 1, - .tx_threshold = 1, - .gpio_cs = LITTLETON_GPIO_LCD_CS, -}; - -static struct spi_board_info littleton_spi_devices[] __initdata = { - { - .modalias = "tdo24m", - .max_speed_hz = 1000000, - .bus_num = 2, - .chip_select = 0, - .controller_data= &littleton_tdo24m_chip, - }, -}; - -static void __init littleton_init_spi(void) -{ - pxa2xx_set_spi_info(2, &littleton_spi_info); - spi_register_board_info(ARRAY_AND_SIZE(littleton_spi_devices)); -} -#else -static inline void littleton_init_spi(void) {} -#endif - -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int littleton_matrix_key_map[] = { - /* KEY(row, col, key_code) */ - KEY(1, 3, KEY_0), KEY(0, 0, KEY_1), KEY(1, 0, KEY_2), KEY(2, 0, KEY_3), - KEY(0, 1, KEY_4), KEY(1, 1, KEY_5), KEY(2, 1, KEY_6), KEY(0, 2, KEY_7), - KEY(1, 2, KEY_8), KEY(2, 2, KEY_9), - - KEY(0, 3, KEY_KPASTERISK), /* * */ - KEY(2, 3, KEY_KPDOT), /* # */ - - KEY(5, 4, KEY_ENTER), - - KEY(5, 0, KEY_UP), - KEY(5, 1, KEY_DOWN), - KEY(5, 2, KEY_LEFT), - KEY(5, 3, KEY_RIGHT), - KEY(3, 2, KEY_HOME), - KEY(4, 1, KEY_END), - KEY(3, 3, KEY_BACK), - - KEY(4, 0, KEY_SEND), - KEY(4, 2, KEY_VOLUMEUP), - KEY(4, 3, KEY_VOLUMEDOWN), - - KEY(3, 0, KEY_F22), /* soft1 */ - KEY(3, 1, KEY_F23), /* soft2 */ -}; - -static struct pxa27x_keypad_platform_data littleton_keypad_info = { - .matrix_key_rows = 6, - .matrix_key_cols = 5, - .matrix_key_map = littleton_matrix_key_map, - .matrix_key_map_size = ARRAY_SIZE(littleton_matrix_key_map), - - .enable_rotary0 = 1, - .rotary0_up_key = KEY_UP, - .rotary0_down_key = KEY_DOWN, - - .debounce_interval = 30, -}; -static void __init littleton_init_keypad(void) -{ - pxa_set_keypad_info(&littleton_keypad_info); -} -#else -static inline void littleton_init_keypad(void) {} -#endif - -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data littleton_mci_platform_data = { - .detect_delay_ms = 200, - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_card_detect = GPIO_MMC1_CARD_DETECT, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void __init littleton_init_mmc(void) -{ - pxa_set_mci_info(&littleton_mci_platform_data); -} -#else -static inline void littleton_init_mmc(void) {} -#endif - -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -static struct mtd_partition littleton_nand_partitions[] = { - [0] = { - .name = "Bootloader", - .offset = 0, - .size = 0x060000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [1] = { - .name = "Kernel", - .offset = 0x060000, - .size = 0x200000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [2] = { - .name = "Filesystem", - .offset = 0x0260000, - .size = 0x3000000, /* 48M - rootfs */ - }, - [3] = { - .name = "MassStorage", - .offset = 0x3260000, - .size = 0x3d40000, - }, - [4] = { - .name = "BBT", - .offset = 0x6FA0000, - .size = 0x80000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - /* NOTE: we reserve some blocks at the end of the NAND flash for - * bad block management, and the max number of relocation blocks - * differs on different platforms. Please take care with it when - * defining the partition table. - */ -}; - -static struct pxa3xx_nand_platform_data littleton_nand_info = { - .enable_arbiter = 1, - .num_cs = 1, - .parts[0] = littleton_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(littleton_nand_partitions), -}; - -static void __init littleton_init_nand(void) -{ - pxa3xx_set_nand_info(&littleton_nand_info); -} -#else -static inline void littleton_init_nand(void) {} -#endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ - -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct led_info littleton_da9034_leds[] = { - [0] = { - .name = "littleton:keypad1", - .flags = DA9034_LED_RAMP, - }, - [1] = { - .name = "littleton:keypad2", - .flags = DA9034_LED_RAMP, - }, - [2] = { - .name = "littleton:vibra", - .flags = 0, - }, -}; - -static struct da9034_touch_pdata littleton_da9034_touch = { - .x_inverted = 1, - .interval_ms = 20, -}; - -static struct da903x_subdev_info littleton_da9034_subdevs[] = { - { - .name = "da903x-led", - .id = DA9034_ID_LED_1, - .platform_data = &littleton_da9034_leds[0], - }, { - .name = "da903x-led", - .id = DA9034_ID_LED_2, - .platform_data = &littleton_da9034_leds[1], - }, { - .name = "da903x-led", - .id = DA9034_ID_VIBRA, - .platform_data = &littleton_da9034_leds[2], - }, { - .name = "da903x-backlight", - .id = DA9034_ID_WLED, - }, { - .name = "da9034-touch", - .id = DA9034_ID_TOUCH, - .platform_data = &littleton_da9034_touch, - }, -}; - -static struct da903x_platform_data littleton_da9034_info = { - .num_subdevs = ARRAY_SIZE(littleton_da9034_subdevs), - .subdevs = littleton_da9034_subdevs, -}; - -static struct max732x_platform_data littleton_max7320_info = { - .gpio_base = EXT0_GPIO_BASE, -}; - -static struct i2c_board_info littleton_i2c_info[] = { - [0] = { - .type = "da9034", - .addr = 0x34, - .platform_data = &littleton_da9034_info, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO18)), - }, - [1] = { - .type = "max7320", - .addr = 0x50, - .platform_data = &littleton_max7320_info, - }, -}; - -static void __init littleton_init_i2c(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(littleton_i2c_info)); -} -#else -static inline void littleton_init_i2c(void) {} -#endif /* CONFIG_I2C_PXA || CONFIG_I2C_PXA_MODULE */ - -static void __init littleton_init(void) -{ - /* initialize MFP configurations */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(littleton_mfp_cfg)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - /* - * Note: we depend bootloader set the correct - * value to MSC register for SMC91x. - */ - platform_device_register(&smc91x_device); - - littleton_init_spi(); - littleton_init_i2c(); - littleton_init_mmc(); - littleton_init_lcd(); - littleton_init_keypad(); - littleton_init_nand(); -} - -MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleton)") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = LITTLETON_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = littleton_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/lpd270.c b/ANDROID_3.4.5/arch/arm/mach-pxa/lpd270.c deleted file mode 100644 index cee9ce2f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/lpd270.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/lpd270.c - * - * Support for the LogicPD PXA270 Card Engine. - * Derived from the mainstone code, which carries these notices: - * - * Author: Nicolas Pitre - * Created: Nov 05, 2002 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/interrupt.h> -#include <linux/sched.h> -#include <linux/bitops.h> -#include <linux/fb.h> -#include <linux/ioport.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/pwm_backlight.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa27x.h> -#include <mach/lpd270.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/irda.h> -#include <mach/ohci.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" - -static unsigned long lpd270_pin_config[] __initdata = { - /* Chip Selects */ - GPIO15_nCS_1, /* Mainboard Flash */ - GPIO78_nCS_2, /* CPLD + Ethernet */ - - /* LCD - 16bpp Active TFT */ - GPIO58_LCD_LDD_0, - GPIO59_LCD_LDD_1, - GPIO60_LCD_LDD_2, - GPIO61_LCD_LDD_3, - GPIO62_LCD_LDD_4, - GPIO63_LCD_LDD_5, - GPIO64_LCD_LDD_6, - GPIO65_LCD_LDD_7, - GPIO66_LCD_LDD_8, - GPIO67_LCD_LDD_9, - GPIO68_LCD_LDD_10, - GPIO69_LCD_LDD_11, - GPIO70_LCD_LDD_12, - GPIO71_LCD_LDD_13, - GPIO72_LCD_LDD_14, - GPIO73_LCD_LDD_15, - GPIO74_LCD_FCLK, - GPIO75_LCD_LCLK, - GPIO76_LCD_PCLK, - GPIO77_LCD_BIAS, - GPIO16_PWM0_OUT, /* Backlight */ - - /* USB Host */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO45_AC97_SYSCLK, - - GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, -}; - -static unsigned int lpd270_irq_enabled; - -static void lpd270_mask_irq(struct irq_data *d) -{ - int lpd270_irq = d->irq - LPD270_IRQ(0); - - __raw_writew(~(1 << lpd270_irq), LPD270_INT_STATUS); - - lpd270_irq_enabled &= ~(1 << lpd270_irq); - __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); -} - -static void lpd270_unmask_irq(struct irq_data *d) -{ - int lpd270_irq = d->irq - LPD270_IRQ(0); - - lpd270_irq_enabled |= 1 << lpd270_irq; - __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); -} - -static struct irq_chip lpd270_irq_chip = { - .name = "CPLD", - .irq_ack = lpd270_mask_irq, - .irq_mask = lpd270_mask_irq, - .irq_unmask = lpd270_unmask_irq, -}; - -static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending; - - pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled; - do { - /* clear useless edge notification */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - if (likely(pending)) { - irq = LPD270_IRQ(0) + __ffs(pending); - generic_handle_irq(irq); - - pending = __raw_readw(LPD270_INT_STATUS) & - lpd270_irq_enabled; - } - } while (pending); -} - -static void __init lpd270_init_irq(void) -{ - int irq; - - pxa27x_init_irq(); - - __raw_writew(0, LPD270_INT_MASK); - __raw_writew(0, LPD270_INT_STATUS); - - /* setup extra LogicPD PXA270 irqs */ - for (irq = LPD270_IRQ(2); irq <= LPD270_IRQ(4); irq++) { - irq_set_chip_and_handler(irq, &lpd270_irq_chip, - handle_level_irq); - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); - } - irq_set_chained_handler(PXA_GPIO_TO_IRQ(0), lpd270_irq_handler); - irq_set_irq_type(PXA_GPIO_TO_IRQ(0), IRQ_TYPE_EDGE_FALLING); -} - - -#ifdef CONFIG_PM -static void lpd270_irq_resume(void) -{ - __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); -} - -static struct syscore_ops lpd270_irq_syscore_ops = { - .resume = lpd270_irq_resume, -}; - -static int __init lpd270_irq_device_init(void) -{ - if (machine_is_logicpd_pxa270()) { - register_syscore_ops(&lpd270_irq_syscore_ops); - return 0; - } - return -ENODEV; -} - -device_initcall(lpd270_irq_device_init); -#endif - - -static struct resource smc91x_resources[] = { - [0] = { - .start = LPD270_ETH_PHYS, - .end = (LPD270_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = LPD270_ETHERNET_IRQ, - .end = LPD270_ETHERNET_IRQ, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, -}; - -static struct resource lpd270_flash_resources[] = { - [0] = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct mtd_partition lpd270_flash0_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, { - .name = "Kernel", - .size = 0x00400000, - .offset = 0x00040000, - }, { - .name = "Filesystem", - .size = MTDPART_SIZ_FULL, - .offset = 0x00440000 - }, -}; - -static struct flash_platform_data lpd270_flash_data[2] = { - { - .name = "processor-flash", - .map_name = "cfi_probe", - .parts = lpd270_flash0_partitions, - .nr_parts = ARRAY_SIZE(lpd270_flash0_partitions), - }, { - .name = "mainboard-flash", - .map_name = "cfi_probe", - .parts = NULL, - .nr_parts = 0, - } -}; - -static struct platform_device lpd270_flash_device[2] = { - { - .name = "pxa2xx-flash", - .id = 0, - .dev = { - .platform_data = &lpd270_flash_data[0], - }, - .resource = &lpd270_flash_resources[0], - .num_resources = 1, - }, { - .name = "pxa2xx-flash", - .id = 1, - .dev = { - .platform_data = &lpd270_flash_data[1], - }, - .resource = &lpd270_flash_resources[1], - .num_resources = 1, - }, -}; - -static struct platform_pwm_backlight_data lpd270_backlight_data = { - .pwm_id = 0, - .max_brightness = 1, - .dft_brightness = 1, - .pwm_period_ns = 78770, -}; - -static struct platform_device lpd270_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &lpd270_backlight_data, - }, -}; - -/* 5.7" TFT QVGA (LoLo display number 1) */ -static struct pxafb_mode_info sharp_lq057q3dc02_mode = { - .pixclock = 150000, - .xres = 320, - .yres = 240, - .bpp = 16, - .hsync_len = 0x14, - .left_margin = 0x28, - .right_margin = 0x0a, - .vsync_len = 0x02, - .upper_margin = 0x08, - .lower_margin = 0x14, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq057q3dc02 = { - .modes = &sharp_lq057q3dc02_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -/* 12.1" TFT SVGA (LoLo display number 2) */ -static struct pxafb_mode_info sharp_lq121s1dg31_mode = { - .pixclock = 50000, - .xres = 800, - .yres = 600, - .bpp = 16, - .hsync_len = 0x05, - .left_margin = 0x52, - .right_margin = 0x05, - .vsync_len = 0x04, - .upper_margin = 0x14, - .lower_margin = 0x0a, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq121s1dg31 = { - .modes = &sharp_lq121s1dg31_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -/* 3.6" TFT QVGA (LoLo display number 3) */ -static struct pxafb_mode_info sharp_lq036q1da01_mode = { - .pixclock = 150000, - .xres = 320, - .yres = 240, - .bpp = 16, - .hsync_len = 0x0e, - .left_margin = 0x04, - .right_margin = 0x0a, - .vsync_len = 0x03, - .upper_margin = 0x03, - .lower_margin = 0x03, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq036q1da01 = { - .modes = &sharp_lq036q1da01_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -/* 6.4" TFT VGA (LoLo display number 5) */ -static struct pxafb_mode_info sharp_lq64d343_mode = { - .pixclock = 25000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 0x31, - .left_margin = 0x89, - .right_margin = 0x19, - .vsync_len = 0x12, - .upper_margin = 0x22, - .lower_margin = 0x00, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq64d343 = { - .modes = &sharp_lq64d343_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -/* 10.4" TFT VGA (LoLo display number 7) */ -static struct pxafb_mode_info sharp_lq10d368_mode = { - .pixclock = 25000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 0x31, - .left_margin = 0x89, - .right_margin = 0x19, - .vsync_len = 0x12, - .upper_margin = 0x22, - .lower_margin = 0x00, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq10d368 = { - .modes = &sharp_lq10d368_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -/* 3.5" TFT QVGA (LoLo display number 8) */ -static struct pxafb_mode_info sharp_lq035q7db02_20_mode = { - .pixclock = 150000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 0x0e, - .left_margin = 0x0a, - .right_margin = 0x0a, - .vsync_len = 0x03, - .upper_margin = 0x05, - .lower_margin = 0x14, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info sharp_lq035q7db02_20 = { - .modes = &sharp_lq035q7db02_20_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL | - LCD_ALTERNATE_MAPPING, -}; - -static struct pxafb_mach_info *lpd270_lcd_to_use; - -static int __init lpd270_set_lcd(char *str) -{ - if (!strnicmp(str, "lq057q3dc02", 11)) { - lpd270_lcd_to_use = &sharp_lq057q3dc02; - } else if (!strnicmp(str, "lq121s1dg31", 11)) { - lpd270_lcd_to_use = &sharp_lq121s1dg31; - } else if (!strnicmp(str, "lq036q1da01", 11)) { - lpd270_lcd_to_use = &sharp_lq036q1da01; - } else if (!strnicmp(str, "lq64d343", 8)) { - lpd270_lcd_to_use = &sharp_lq64d343; - } else if (!strnicmp(str, "lq10d368", 8)) { - lpd270_lcd_to_use = &sharp_lq10d368; - } else if (!strnicmp(str, "lq035q7db02-20", 14)) { - lpd270_lcd_to_use = &sharp_lq035q7db02_20; - } else { - printk(KERN_INFO "lpd270: unknown lcd panel [%s]\n", str); - } - - return 1; -} - -__setup("lcd=", lpd270_set_lcd); - -static struct platform_device *platform_devices[] __initdata = { - &smc91x_device, - &lpd270_backlight_device, - &lpd270_flash_device[0], - &lpd270_flash_device[1], -}; - -static struct pxaohci_platform_data lpd270_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -static void __init lpd270_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(lpd270_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - lpd270_flash_data[0].width = (__raw_readl(BOOT_DEF) & 1) ? 2 : 4; - lpd270_flash_data[1].width = 4; - - /* - * System bus arbiter setting: - * - Core_Park - * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4 - */ - ARB_CNTRL = ARB_CORE_PARK | 0x234; - - platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); - - pxa_set_ac97_info(NULL); - - if (lpd270_lcd_to_use != NULL) - pxa_set_fb_info(NULL, lpd270_lcd_to_use); - - pxa_set_ohci_info(&lpd270_ohci_platform_data); -} - - -static struct map_desc lpd270_io_desc[] __initdata = { - { - .virtual = (unsigned long)LPD270_CPLD_VIRT, - .pfn = __phys_to_pfn(LPD270_CPLD_PHYS), - .length = LPD270_CPLD_SIZE, - .type = MT_DEVICE, - }, -}; - -static void __init lpd270_map_io(void) -{ - pxa27x_map_io(); - iotable_init(lpd270_io_desc, ARRAY_SIZE(lpd270_io_desc)); - - /* for use I SRAM as framebuffer. */ - PSLR |= 0x00000F04; - PCFR = 0x00000066; -} - -MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine") - /* Maintainer: Peter Barada */ - .atag_offset = 0x100, - .map_io = lpd270_map_io, - .nr_irqs = LPD270_NR_IRQS, - .init_irq = lpd270_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = lpd270_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/lubbock.c b/ANDROID_3.4.5/arch/arm/mach-pxa/lubbock.c deleted file mode 100644 index 6bb3f47b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/lubbock.c +++ /dev/null @@ -1,561 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/lubbock.c - * - * Support for the Intel DBPXA250 Development Platform. - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/major.h> -#include <linux/fb.h> -#include <linux/interrupt.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/smc91x.h> - -#include <linux/spi/spi.h> -#include <linux/spi/ads7846.h> -#include <linux/spi/pxa2xx_spi.h> - -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <asm/hardware/sa1111.h> - -#include <mach/pxa25x.h> -#include <mach/audio.h> -#include <mach/lubbock.h> -#include <mach/udc.h> -#include <mach/irda.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/pm.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "clock.h" -#include "devices.h" - -static unsigned long lubbock_pin_config[] __initdata = { - GPIO15_nCS_1, /* CS1 - Flash */ - GPIO78_nCS_2, /* CS2 - Baseboard FGPA */ - GPIO79_nCS_3, /* CS3 - SMC ethernet */ - GPIO80_nCS_4, /* CS4 - SA1111 */ - - /* SSP data pins */ - GPIO23_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* LCD - 16bpp DSTN */ - GPIOxx_LCD_DSTN_16BPP, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - - /* wakeup */ - GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, -}; - -#define LUB_HEXLED __LUB_REG(LUBBOCK_FPGA_PHYS + 0x010) -#define LUB_MISC_WR __LUB_REG(LUBBOCK_FPGA_PHYS + 0x080) - -void lubbock_set_hexled(uint32_t value) -{ - LUB_HEXLED = value; -} - -void lubbock_set_misc_wr(unsigned int mask, unsigned int set) -{ - unsigned long flags; - - local_irq_save(flags); - LUB_MISC_WR = (LUB_MISC_WR & ~mask) | (set & mask); - local_irq_restore(flags); -} -EXPORT_SYMBOL(lubbock_set_misc_wr); - -static unsigned long lubbock_irq_enabled; - -static void lubbock_mask_irq(struct irq_data *d) -{ - int lubbock_irq = (d->irq - LUBBOCK_IRQ(0)); - LUB_IRQ_MASK_EN = (lubbock_irq_enabled &= ~(1 << lubbock_irq)); -} - -static void lubbock_unmask_irq(struct irq_data *d) -{ - int lubbock_irq = (d->irq - LUBBOCK_IRQ(0)); - /* the irq can be acknowledged only if deasserted, so it's done here */ - LUB_IRQ_SET_CLR &= ~(1 << lubbock_irq); - LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); -} - -static struct irq_chip lubbock_irq_chip = { - .name = "FPGA", - .irq_ack = lubbock_mask_irq, - .irq_mask = lubbock_mask_irq, - .irq_unmask = lubbock_unmask_irq, -}; - -static void lubbock_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; - do { - /* clear our parent irq */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - if (likely(pending)) { - irq = LUBBOCK_IRQ(0) + __ffs(pending); - generic_handle_irq(irq); - } - pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; - } while (pending); -} - -static void __init lubbock_init_irq(void) -{ - int irq; - - pxa25x_init_irq(); - - /* setup extra lubbock irqs */ - for (irq = LUBBOCK_IRQ(0); irq <= LUBBOCK_LAST_IRQ; irq++) { - irq_set_chip_and_handler(irq, &lubbock_irq_chip, - handle_level_irq); - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); - } - - irq_set_chained_handler(PXA_GPIO_TO_IRQ(0), lubbock_irq_handler); - irq_set_irq_type(PXA_GPIO_TO_IRQ(0), IRQ_TYPE_EDGE_FALLING); -} - -#ifdef CONFIG_PM - -static void lubbock_irq_resume(void) -{ - LUB_IRQ_MASK_EN = lubbock_irq_enabled; -} - -static struct syscore_ops lubbock_irq_syscore_ops = { - .resume = lubbock_irq_resume, -}; - -static int __init lubbock_irq_device_init(void) -{ - if (machine_is_lubbock()) { - register_syscore_ops(&lubbock_irq_syscore_ops); - return 0; - } - return -ENODEV; -} - -device_initcall(lubbock_irq_device_init); - -#endif - -static int lubbock_udc_is_connected(void) -{ - return (LUB_MISC_RD & (1 << 9)) == 0; -} - -static struct pxa2xx_udc_mach_info udc_info __initdata = { - .udc_is_connected = lubbock_udc_is_connected, - // no D+ pullup; lubbock can't connect/disconnect in software -}; - -static struct resource sa1111_resources[] = { - [0] = { - .start = 0x10000000, - .end = 0x10001fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = LUBBOCK_SA1111_IRQ, - .end = LUBBOCK_SA1111_IRQ, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct sa1111_platform_data sa1111_info = { - .irq_base = LUBBOCK_SA1111_IRQ_BASE, - .disable_devs = SA1111_DEVID_SAC, -}; - -static struct platform_device sa1111_device = { - .name = "sa1111", - .id = -1, - .num_resources = ARRAY_SIZE(sa1111_resources), - .resource = sa1111_resources, - .dev = { - .platform_data = &sa1111_info, - }, -}; - -/* ADS7846 is connected through SSP ... and if your board has J5 populated, - * you can select it to replace the ucb1400 by switching the touchscreen cable - * (to J5) and poking board registers (as done below). Else it's only useful - * for the temperature sensors. - */ -static struct pxa2xx_spi_master pxa_ssp_master_info = { - .num_chipselect = 1, -}; - -static int lubbock_ads7846_pendown_state(void) -{ - /* TS_BUSY is bit 8 in LUB_MISC_RD, but pendown is irq-only */ - return 0; -} - -static struct ads7846_platform_data ads_info = { - .model = 7846, - .vref_delay_usecs = 100, /* internal, no cap */ - .get_pendown_state = lubbock_ads7846_pendown_state, - // .x_plate_ohms = 500, /* GUESS! */ - // .y_plate_ohms = 500, /* GUESS! */ -}; - -static void ads7846_cs(u32 command) -{ - static const unsigned TS_nCS = 1 << 11; - lubbock_set_misc_wr(TS_nCS, (command == PXA2XX_CS_ASSERT) ? 0 : TS_nCS); -} - -static struct pxa2xx_spi_chip ads_hw = { - .tx_threshold = 1, - .rx_threshold = 2, - .cs_control = ads7846_cs, -}; - -static struct spi_board_info spi_board_info[] __initdata = { { - .modalias = "ads7846", - .platform_data = &ads_info, - .controller_data = &ads_hw, - .irq = LUBBOCK_BB_IRQ, - .max_speed_hz = 120000 /* max sample rate at 3V */ - * 26 /* command + data + overhead */, - .bus_num = 1, - .chip_select = 0, -}, -}; - -static struct resource smc91x_resources[] = { - [0] = { - .name = "smc91x-regs", - .start = 0x0c000c00, - .end = 0x0c0fffff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = LUBBOCK_ETH_IRQ, - .end = LUBBOCK_ETH_IRQ, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - }, - [2] = { - .name = "smc91x-attrib", - .start = 0x0e000000, - .end = 0x0e0fffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct smc91x_platdata lubbock_smc91x_info = { - .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT | SMC91X_IO_SHIFT_2, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = -1, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &lubbock_smc91x_info, - }, -}; - -static struct resource flash_resources[] = { - [0] = { - .start = 0x00000000, - .end = SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = 0x04000000, - .end = 0x04000000 + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct mtd_partition lubbock_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE /* force read-only */ - },{ - .name = "Kernel", - .size = 0x00100000, - .offset = 0x00040000, - },{ - .name = "Filesystem", - .size = MTDPART_SIZ_FULL, - .offset = 0x00140000 - } -}; - -static struct flash_platform_data lubbock_flash_data[2] = { - { - .map_name = "cfi_probe", - .parts = lubbock_partitions, - .nr_parts = ARRAY_SIZE(lubbock_partitions), - }, { - .map_name = "cfi_probe", - .parts = NULL, - .nr_parts = 0, - } -}; - -static struct platform_device lubbock_flash_device[2] = { - { - .name = "pxa2xx-flash", - .id = 0, - .dev = { - .platform_data = &lubbock_flash_data[0], - }, - .resource = &flash_resources[0], - .num_resources = 1, - }, - { - .name = "pxa2xx-flash", - .id = 1, - .dev = { - .platform_data = &lubbock_flash_data[1], - }, - .resource = &flash_resources[1], - .num_resources = 1, - }, -}; - -static struct platform_device *devices[] __initdata = { - &sa1111_device, - &smc91x_device, - &lubbock_flash_device[0], - &lubbock_flash_device[1], -}; - -static struct pxafb_mode_info sharp_lm8v31_mode = { - .pixclock = 270000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 1, - .left_margin = 3, - .right_margin = 3, - .vsync_len = 1, - .upper_margin = 0, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info sharp_lm8v31 = { - .modes = &sharp_lm8v31_mode, - .num_modes = 1, - .cmap_inverse = 0, - .cmap_static = 0, - .lcd_conn = LCD_COLOR_DSTN_16BPP | LCD_PCLK_EDGE_FALL | - LCD_AC_BIAS_FREQ(255), -}; - -#define MMC_POLL_RATE msecs_to_jiffies(1000) - -static void lubbock_mmc_poll(unsigned long); -static irq_handler_t mmc_detect_int; - -static struct timer_list mmc_timer = { - .function = lubbock_mmc_poll, -}; - -static void lubbock_mmc_poll(unsigned long data) -{ - unsigned long flags; - - /* clear any previous irq state, then ... */ - local_irq_save(flags); - LUB_IRQ_SET_CLR &= ~(1 << 0); - local_irq_restore(flags); - - /* poll until mmc/sd card is removed */ - if (LUB_IRQ_SET_CLR & (1 << 0)) - mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); - else { - (void) mmc_detect_int(LUBBOCK_SD_IRQ, (void *)data); - enable_irq(LUBBOCK_SD_IRQ); - } -} - -static irqreturn_t lubbock_detect_int(int irq, void *data) -{ - /* IRQ is level triggered; disable, and poll for removal */ - disable_irq(irq); - mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); - - return mmc_detect_int(irq, data); -} - -static int lubbock_mci_init(struct device *dev, - irq_handler_t detect_int, - void *data) -{ - /* detect card insert/eject */ - mmc_detect_int = detect_int; - init_timer(&mmc_timer); - mmc_timer.data = (unsigned long) data; - return request_irq(LUBBOCK_SD_IRQ, lubbock_detect_int, - IRQF_SAMPLE_RANDOM, "lubbock-sd-detect", data); -} - -static int lubbock_mci_get_ro(struct device *dev) -{ - return (LUB_MISC_RD & (1 << 2)) != 0; -} - -static void lubbock_mci_exit(struct device *dev, void *data) -{ - free_irq(LUBBOCK_SD_IRQ, data); - del_timer_sync(&mmc_timer); -} - -static struct pxamci_platform_data lubbock_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .detect_delay_ms = 10, - .init = lubbock_mci_init, - .get_ro = lubbock_mci_get_ro, - .exit = lubbock_mci_exit, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void lubbock_irda_transceiver_mode(struct device *dev, int mode) -{ - unsigned long flags; - - local_irq_save(flags); - if (mode & IR_SIRMODE) { - LUB_MISC_WR &= ~(1 << 4); - } else if (mode & IR_FIRMODE) { - LUB_MISC_WR |= 1 << 4; - } - pxa2xx_transceiver_mode(dev, mode); - local_irq_restore(flags); -} - -static struct pxaficp_platform_data lubbock_ficp_platform_data = { - .gpio_pwdown = -1, - .transceiver_cap = IR_SIRMODE | IR_FIRMODE, - .transceiver_mode = lubbock_irda_transceiver_mode, -}; - -static void __init lubbock_init(void) -{ - int flashboot = (LUB_CONF_SWITCHES & 1); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL); - pxa_set_udc_info(&udc_info); - pxa_set_fb_info(NULL, &sharp_lm8v31); - pxa_set_mci_info(&lubbock_mci_platform_data); - pxa_set_ficp_info(&lubbock_ficp_platform_data); - pxa_set_ac97_info(NULL); - - lubbock_flash_data[0].width = lubbock_flash_data[1].width = - (__raw_readl(BOOT_DEF) & 1) ? 2 : 4; - /* Compensate for the nROMBT switch which swaps the flash banks */ - printk(KERN_NOTICE "Lubbock configured to boot from %s (bank %d)\n", - flashboot?"Flash":"ROM", flashboot); - - lubbock_flash_data[flashboot^1].name = "application-flash"; - lubbock_flash_data[flashboot].name = "boot-rom"; - (void) platform_add_devices(devices, ARRAY_SIZE(devices)); - - pxa2xx_set_spi_info(1, &pxa_ssp_master_info); - spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); -} - -static struct map_desc lubbock_io_desc[] __initdata = { - { /* CPLD */ - .virtual = LUBBOCK_FPGA_VIRT, - .pfn = __phys_to_pfn(LUBBOCK_FPGA_PHYS), - .length = 0x00100000, - .type = MT_DEVICE - } -}; - -static void __init lubbock_map_io(void) -{ - pxa25x_map_io(); - iotable_init(lubbock_io_desc, ARRAY_SIZE(lubbock_io_desc)); - - PCFR |= PCFR_OPDE; -} - -MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") - /* Maintainer: MontaVista Software Inc. */ - .map_io = lubbock_map_io, - .nr_irqs = LUBBOCK_NR_IRQS, - .init_irq = lubbock_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = lubbock_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/magician.c b/ANDROID_3.4.5/arch/arm/mach-pxa/magician.c deleted file mode 100644 index 8de0651d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/magician.c +++ /dev/null @@ -1,784 +0,0 @@ -/* - * Support for HTC Magician PDA phones: - * i-mate JAM, O2 Xda mini, Orange SPV M500, Qtek s100, Qtek s110 - * and T-Mobile MDA Compact. - * - * Copyright (c) 2006-2007 Philipp Zabel - * - * Based on hx4700.c, spitz.c and others. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/mfd/htc-egpio.h> -#include <linux/mfd/htc-pasic3.h> -#include <linux/mtd/physmap.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/regulator/driver.h> -#include <linux/regulator/gpio-regulator.h> -#include <linux/regulator/machine.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/i2c/pxa-i2c.h> - -#include <mach/hardware.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/system_info.h> - -#include <mach/pxa27x.h> -#include <mach/magician.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/irda.h> -#include <mach/ohci.h> - -#include "devices.h" -#include "generic.h" - -static unsigned long magician_pin_config[] __initdata = { - - /* SDRAM and Static Memory I/O Signals */ - GPIO20_nSDCS_2, - GPIO21_nSDCS_3, - GPIO15_nCS_1, - GPIO78_nCS_2, /* PASIC3 */ - GPIO79_nCS_3, /* EGPIO CPLD */ - GPIO80_nCS_4, - GPIO33_nCS_5, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* PWM 0 */ - GPIO16_PWM0_OUT, - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO31_I2S_SYNC, - GPIO113_I2S_SYSCLK, - - /* SSP 1 */ - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO25_SSP1_TXD, - - /* SSP 2 */ - GPIO19_SSP2_SCLK, - GPIO14_SSP2_SFRM, - GPIO89_SSP2_TXD, - GPIO88_SSP2_RXD, - - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* QCI */ - GPIO12_CIF_DD_7, - GPIO17_CIF_DD_6, - GPIO50_CIF_DD_3, - GPIO51_CIF_DD_2, - GPIO52_CIF_DD_4, - GPIO53_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO55_CIF_DD_1, - GPIO81_CIF_DD_0, - GPIO82_CIF_DD_5, - GPIO84_CIF_FV, - GPIO85_CIF_LV, - - /* Magician specific input GPIOs */ - GPIO9_GPIO, /* unknown */ - GPIO10_GPIO, /* GSM_IRQ */ - GPIO13_GPIO, /* CPLD_IRQ */ - GPIO107_GPIO, /* DS1WM_IRQ */ - GPIO108_GPIO, /* GSM_READY */ - GPIO115_GPIO, /* nPEN_IRQ */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, -}; - -/* - * IRDA - */ - -static struct pxaficp_platform_data magician_ficp_info = { - .gpio_pwdown = GPIO83_MAGICIAN_nIR_EN, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -/* - * GPIO Keys - */ - -#define INIT_KEY(_code, _gpio, _desc) \ - { \ - .code = KEY_##_code, \ - .gpio = _gpio, \ - .desc = _desc, \ - .type = EV_KEY, \ - .wakeup = 1, \ - } - -static struct gpio_keys_button magician_button_table[] = { - INIT_KEY(POWER, GPIO0_MAGICIAN_KEY_POWER, "Power button"), - INIT_KEY(ESC, GPIO37_MAGICIAN_KEY_HANGUP, "Hangup button"), - INIT_KEY(F10, GPIO38_MAGICIAN_KEY_CONTACTS, "Contacts button"), - INIT_KEY(CALENDAR, GPIO90_MAGICIAN_KEY_CALENDAR, "Calendar button"), - INIT_KEY(CAMERA, GPIO91_MAGICIAN_KEY_CAMERA, "Camera button"), - INIT_KEY(UP, GPIO93_MAGICIAN_KEY_UP, "Up button"), - INIT_KEY(DOWN, GPIO94_MAGICIAN_KEY_DOWN, "Down button"), - INIT_KEY(LEFT, GPIO95_MAGICIAN_KEY_LEFT, "Left button"), - INIT_KEY(RIGHT, GPIO96_MAGICIAN_KEY_RIGHT, "Right button"), - INIT_KEY(KPENTER, GPIO97_MAGICIAN_KEY_ENTER, "Action button"), - INIT_KEY(RECORD, GPIO98_MAGICIAN_KEY_RECORD, "Record button"), - INIT_KEY(VOLUMEUP, GPIO100_MAGICIAN_KEY_VOL_UP, "Volume up"), - INIT_KEY(VOLUMEDOWN, GPIO101_MAGICIAN_KEY_VOL_DOWN, "Volume down"), - INIT_KEY(PHONE, GPIO102_MAGICIAN_KEY_PHONE, "Phone button"), - INIT_KEY(PLAY, GPIO99_MAGICIAN_HEADPHONE_IN, "Headset button"), -}; - -static struct gpio_keys_platform_data gpio_keys_data = { - .buttons = magician_button_table, - .nbuttons = ARRAY_SIZE(magician_button_table), -}; - -static struct platform_device gpio_keys = { - .name = "gpio-keys", - .dev = { - .platform_data = &gpio_keys_data, - }, - .id = -1, -}; - - -/* - * EGPIO (Xilinx CPLD) - * - * 7 32-bit aligned 8-bit registers: 3x output, 1x irq, 3x input - */ - -static struct resource egpio_resources[] = { - [0] = { - .start = PXA_CS3_PHYS, - .end = PXA_CS3_PHYS + 0x20 - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(GPIO13_MAGICIAN_CPLD_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO13_MAGICIAN_CPLD_IRQ), - .flags = IORESOURCE_IRQ, - }, -}; - -static struct htc_egpio_chip egpio_chips[] = { - [0] = { - .reg_start = 0, - .gpio_base = MAGICIAN_EGPIO(0, 0), - .num_gpios = 24, - .direction = HTC_EGPIO_OUTPUT, - .initial_values = 0x40, /* EGPIO_MAGICIAN_GSM_RESET */ - }, - [1] = { - .reg_start = 4, - .gpio_base = MAGICIAN_EGPIO(4, 0), - .num_gpios = 24, - .direction = HTC_EGPIO_INPUT, - }, -}; - -static struct htc_egpio_platform_data egpio_info = { - .reg_width = 8, - .bus_width = 32, - .irq_base = IRQ_BOARD_START, - .num_irqs = 4, - .ack_register = 3, - .chip = egpio_chips, - .num_chips = ARRAY_SIZE(egpio_chips), -}; - -static struct platform_device egpio = { - .name = "htc-egpio", - .id = -1, - .resource = egpio_resources, - .num_resources = ARRAY_SIZE(egpio_resources), - .dev = { - .platform_data = &egpio_info, - }, -}; - -/* - * LCD - Toppoly TD028STEB1 or Samsung LTP280QV - */ - -static struct pxafb_mode_info toppoly_modes[] = { - { - .pixclock = 96153, - .bpp = 16, - .xres = 240, - .yres = 320, - .hsync_len = 11, - .vsync_len = 3, - .left_margin = 19, - .upper_margin = 2, - .right_margin = 10, - .lower_margin = 2, - .sync = 0, - }, -}; - -static struct pxafb_mode_info samsung_modes[] = { - { - .pixclock = 96153, - .bpp = 16, - .xres = 240, - .yres = 320, - .hsync_len = 8, - .vsync_len = 4, - .left_margin = 9, - .upper_margin = 4, - .right_margin = 9, - .lower_margin = 4, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - }, -}; - -static void toppoly_lcd_power(int on, struct fb_var_screeninfo *si) -{ - pr_debug("Toppoly LCD power\n"); - - if (on) { - pr_debug("on\n"); - gpio_set_value(EGPIO_MAGICIAN_TOPPOLY_POWER, 1); - gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1); - udelay(2000); - gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1); - udelay(2000); - /* FIXME: enable LCDC here */ - udelay(2000); - gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1); - udelay(2000); - gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1); - } else { - pr_debug("off\n"); - msleep(15); - gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0); - udelay(500); - gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0); - udelay(1000); - gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0); - gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 0); - } -} - -static void samsung_lcd_power(int on, struct fb_var_screeninfo *si) -{ - pr_debug("Samsung LCD power\n"); - - if (on) { - pr_debug("on\n"); - if (system_rev < 3) - gpio_set_value(GPIO75_MAGICIAN_SAMSUNG_POWER, 1); - else - gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1); - mdelay(10); - gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1); - mdelay(10); - gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1); - mdelay(30); - gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1); - mdelay(10); - } else { - pr_debug("off\n"); - mdelay(10); - gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0); - mdelay(30); - gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0); - mdelay(10); - gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0); - mdelay(10); - if (system_rev < 3) - gpio_set_value(GPIO75_MAGICIAN_SAMSUNG_POWER, 0); - else - gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 0); - } -} - -static struct pxafb_mach_info toppoly_info = { - .modes = toppoly_modes, - .num_modes = 1, - .fixed_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP, - .pxafb_lcd_power = toppoly_lcd_power, -}; - -static struct pxafb_mach_info samsung_info = { - .modes = samsung_modes, - .num_modes = 1, - .fixed_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL |\ - LCD_ALTERNATE_MAPPING, - .pxafb_lcd_power = samsung_lcd_power, -}; - -/* - * Backlight - */ - -static struct gpio magician_bl_gpios[] = { - { EGPIO_MAGICIAN_BL_POWER, GPIOF_DIR_OUT, "Backlight power" }, - { EGPIO_MAGICIAN_BL_POWER2, GPIOF_DIR_OUT, "Backlight power 2" }, -}; - -static int magician_backlight_init(struct device *dev) -{ - return gpio_request_array(ARRAY_AND_SIZE(magician_bl_gpios)); -} - -static int magician_backlight_notify(struct device *dev, int brightness) -{ - gpio_set_value(EGPIO_MAGICIAN_BL_POWER, brightness); - if (brightness >= 200) { - gpio_set_value(EGPIO_MAGICIAN_BL_POWER2, 1); - return brightness - 72; - } else { - gpio_set_value(EGPIO_MAGICIAN_BL_POWER2, 0); - return brightness; - } -} - -static void magician_backlight_exit(struct device *dev) -{ - gpio_free_array(ARRAY_AND_SIZE(magician_bl_gpios)); -} - -static struct platform_pwm_backlight_data backlight_data = { - .pwm_id = 0, - .max_brightness = 272, - .dft_brightness = 100, - .pwm_period_ns = 30923, - .init = magician_backlight_init, - .notify = magician_backlight_notify, - .exit = magician_backlight_exit, -}; - -static struct platform_device backlight = { - .name = "pwm-backlight", - .id = -1, - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &backlight_data, - }, -}; - -/* - * LEDs - */ - -static struct gpio_led gpio_leds[] = { - { - .name = "magician::vibra", - .default_trigger = "none", - .gpio = GPIO22_MAGICIAN_VIBRA_EN, - }, - { - .name = "magician::phone_bl", - .default_trigger = "backlight", - .gpio = GPIO103_MAGICIAN_LED_KP, - }, -}; - -static struct gpio_led_platform_data gpio_led_info = { - .leds = gpio_leds, - .num_leds = ARRAY_SIZE(gpio_leds), -}; - -static struct platform_device leds_gpio = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &gpio_led_info, - }, -}; - -static struct pasic3_led pasic3_leds[] = { - { - .led = { - .name = "magician:red", - .default_trigger = "ds2760-battery.0-charging", - }, - .hw_num = 0, - .bit2 = PASIC3_BIT2_LED0, - .mask = PASIC3_MASK_LED0, - }, - { - .led = { - .name = "magician:green", - .default_trigger = "ds2760-battery.0-charging-or-full", - }, - .hw_num = 1, - .bit2 = PASIC3_BIT2_LED1, - .mask = PASIC3_MASK_LED1, - }, - { - .led = { - .name = "magician:blue", - .default_trigger = "bluetooth", - }, - .hw_num = 2, - .bit2 = PASIC3_BIT2_LED2, - .mask = PASIC3_MASK_LED2, - }, -}; - -static struct pasic3_leds_machinfo pasic3_leds_info = { - .num_leds = ARRAY_SIZE(pasic3_leds), - .power_gpio = EGPIO_MAGICIAN_LED_POWER, - .leds = pasic3_leds, -}; - -/* - * PASIC3 with DS1WM - */ - -static struct resource pasic3_resources[] = { - [0] = { - .start = PXA_CS2_PHYS, - .end = PXA_CS2_PHYS + 0x1b, - .flags = IORESOURCE_MEM, - }, - /* No IRQ handler in the PASIC3, DS1WM needs an external IRQ */ - [1] = { - .start = PXA_GPIO_TO_IRQ(GPIO107_MAGICIAN_DS1WM_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO107_MAGICIAN_DS1WM_IRQ), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct pasic3_platform_data pasic3_platform_data = { - .led_pdata = &pasic3_leds_info, - .clock_rate = 4000000, -}; - -static struct platform_device pasic3 = { - .name = "pasic3", - .id = -1, - .num_resources = ARRAY_SIZE(pasic3_resources), - .resource = pasic3_resources, - .dev = { - .platform_data = &pasic3_platform_data, - }, -}; - -/* - * USB "Transceiver" - */ - -static struct resource gpio_vbus_resource = { - .flags = IORESOURCE_IRQ, - .start = IRQ_MAGICIAN_VBUS, - .end = IRQ_MAGICIAN_VBUS, -}; - -static struct gpio_vbus_mach_info gpio_vbus_info = { - .gpio_pullup = GPIO27_MAGICIAN_USBC_PUEN, - .gpio_vbus = EGPIO_MAGICIAN_CABLE_STATE_USB, -}; - -static struct platform_device gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .num_resources = 1, - .resource = &gpio_vbus_resource, - .dev = { - .platform_data = &gpio_vbus_info, - }, -}; - -/* - * External power - */ - -static int power_supply_init(struct device *dev) -{ - return gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC"); -} - -static int magician_is_ac_online(void) -{ - return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC); -} - -static void power_supply_exit(struct device *dev) -{ - gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); -} - -static char *magician_supplicants[] = { - "ds2760-battery.0", "backup-battery" -}; - -static struct pda_power_pdata power_supply_info = { - .init = power_supply_init, - .is_ac_online = magician_is_ac_online, - .exit = power_supply_exit, - .supplied_to = magician_supplicants, - .num_supplicants = ARRAY_SIZE(magician_supplicants), -}; - -static struct resource power_supply_resources[] = { - [0] = { - .name = "ac", - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - .start = IRQ_MAGICIAN_VBUS, - .end = IRQ_MAGICIAN_VBUS, - }, - [1] = { - .name = "usb", - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - .start = IRQ_MAGICIAN_VBUS, - .end = IRQ_MAGICIAN_VBUS, - }, -}; - -static struct platform_device power_supply = { - .name = "pda-power", - .id = -1, - .dev = { - .platform_data = &power_supply_info, - }, - .resource = power_supply_resources, - .num_resources = ARRAY_SIZE(power_supply_resources), -}; - -/* - * Battery charger - */ - -static struct regulator_consumer_supply bq24022_consumers[] = { - { - .supply = "vbus_draw", - }, - { - .supply = "ac_draw", - }, -}; - -static struct regulator_init_data bq24022_init_data = { - .constraints = { - .max_uA = 500000, - .valid_ops_mask = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS, - }, - .num_consumer_supplies = ARRAY_SIZE(bq24022_consumers), - .consumer_supplies = bq24022_consumers, -}; - -static struct gpio bq24022_gpios[] = { - { EGPIO_MAGICIAN_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" }, -}; - -static struct gpio_regulator_state bq24022_states[] = { - { .value = 100000, .gpios = (0 << 0) }, - { .value = 500000, .gpios = (1 << 0) }, -}; - -static struct gpio_regulator_config bq24022_info = { - .supply_name = "bq24022", - - .enable_gpio = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN, - .enable_high = 0, - .enabled_at_boot = 0, - - .gpios = bq24022_gpios, - .nr_gpios = ARRAY_SIZE(bq24022_gpios), - - .states = bq24022_states, - .nr_states = ARRAY_SIZE(bq24022_states), - - .type = REGULATOR_CURRENT, - .init_data = &bq24022_init_data, -}; - -static struct platform_device bq24022 = { - .name = "gpio-regulator", - .id = -1, - .dev = { - .platform_data = &bq24022_info, - }, -}; - -/* - * MMC/SD - */ - -static int magician_mci_init(struct device *dev, - irq_handler_t detect_irq, void *data) -{ - return request_irq(IRQ_MAGICIAN_SD, detect_irq, - IRQF_DISABLED | IRQF_SAMPLE_RANDOM, - "mmc card detect", data); -} - -static void magician_mci_exit(struct device *dev, void *data) -{ - free_irq(IRQ_MAGICIAN_SD, data); -} - -static struct pxamci_platform_data magician_mci_info = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .init = magician_mci_init, - .exit = magician_mci_exit, - .gpio_card_detect = -1, - .gpio_card_ro = EGPIO_MAGICIAN_nSD_READONLY, - .gpio_card_ro_invert = 1, - .gpio_power = EGPIO_MAGICIAN_SD_POWER, -}; - - -/* - * USB OHCI - */ - -static struct pxaohci_platform_data magician_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT3 | POWER_CONTROL_LOW, - .power_budget = 0, -}; - - -/* - * StrataFlash - */ - -static void magician_set_vpp(struct platform_device *pdev, int vpp) -{ - gpio_set_value(EGPIO_MAGICIAN_FLASH_VPP, vpp); -} - -static struct resource strataflash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct physmap_flash_data strataflash_data = { - .width = 4, - .set_vpp = magician_set_vpp, -}; - -static struct platform_device strataflash = { - .name = "physmap-flash", - .id = -1, - .resource = &strataflash_resource, - .num_resources = 1, - .dev = { - .platform_data = &strataflash_data, - }, -}; - -/* - * I2C - */ - -static struct i2c_pxa_platform_data i2c_info = { - .fast_mode = 1, -}; - -/* - * Platform devices - */ - -static struct platform_device *devices[] __initdata = { - &gpio_keys, - &egpio, - &backlight, - &pasic3, - &bq24022, - &gpio_vbus, - &power_supply, - &strataflash, - &leds_gpio, -}; - -static struct gpio magician_global_gpios[] = { - { GPIO13_MAGICIAN_CPLD_IRQ, GPIOF_IN, "CPLD_IRQ" }, - { GPIO107_MAGICIAN_DS1WM_IRQ, GPIOF_IN, "DS1WM_IRQ" }, - { GPIO104_MAGICIAN_LCD_POWER_1, GPIOF_OUT_INIT_LOW, "LCD power 1" }, - { GPIO105_MAGICIAN_LCD_POWER_2, GPIOF_OUT_INIT_LOW, "LCD power 2" }, - { GPIO106_MAGICIAN_LCD_POWER_3, GPIOF_OUT_INIT_LOW, "LCD power 3" }, - { GPIO83_MAGICIAN_nIR_EN, GPIOF_OUT_INIT_HIGH, "nIR_EN" }, -}; - -static void __init magician_init(void) -{ - void __iomem *cpld; - int lcd_select; - int err; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(magician_pin_config)); - err = gpio_request_array(ARRAY_AND_SIZE(magician_global_gpios)); - if (err) - pr_err("magician: Failed to request GPIOs: %d\n", err); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_add_devices(ARRAY_AND_SIZE(devices)); - - pxa_set_ficp_info(&magician_ficp_info); - pxa27x_set_i2c_power_info(NULL); - pxa_set_i2c_info(&i2c_info); - pxa_set_mci_info(&magician_mci_info); - pxa_set_ohci_info(&magician_ohci_info); - - /* Check LCD type we have */ - cpld = ioremap_nocache(PXA_CS3_PHYS, 0x1000); - if (cpld) { - u8 board_id = __raw_readb(cpld+0x14); - iounmap(cpld); - system_rev = board_id & 0x7; - lcd_select = board_id & 0x8; - pr_info("LCD type: %s\n", lcd_select ? "Samsung" : "Toppoly"); - if (lcd_select && (system_rev < 3)) - gpio_request_one(GPIO75_MAGICIAN_SAMSUNG_POWER, - GPIOF_OUT_INIT_LOW, "SAMSUNG_POWER"); - pxa_set_fb_info(NULL, lcd_select ? &samsung_info : &toppoly_info); - } else - pr_err("LCD detection: CPLD mapping failed\n"); -} - - -MACHINE_START(MAGICIAN, "HTC Magician") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = MAGICIAN_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = magician_init, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mainstone.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mainstone.c deleted file mode 100644 index 1aebaf71..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mainstone.c +++ /dev/null @@ -1,626 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/mainstone.c - * - * Support for the Intel HCDDBBVA0 Development Platform. - * (go figure how they came up with such name...) - * - * Author: Nicolas Pitre - * Created: Nov 05, 2002 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/interrupt.h> -#include <linux/sched.h> -#include <linux/bitops.h> -#include <linux/fb.h> -#include <linux/ioport.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/input.h> -#include <linux/gpio_keys.h> -#include <linux/pwm_backlight.h> -#include <linux/smc91x.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa27x.h> -#include <mach/mainstone.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/irda.h> -#include <mach/ohci.h> -#include <plat/pxa27x_keypad.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" - -static unsigned long mainstone_pin_config[] = { - /* Chip Select */ - GPIO15_nCS_1, - - /* LCD - 16bpp Active TFT */ - GPIOxx_LCD_TFT_16BPP, - GPIO16_PWM0_OUT, /* Backlight */ - - /* MMC */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - - /* USB Host Port 1 */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO79_PSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO45_AC97_SYSCLK, - - /* Keypad */ - GPIO93_KP_DKIN_0, - GPIO94_KP_DKIN_1, - GPIO95_KP_DKIN_2, - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, - GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, - GPIO96_KP_MKOUT_6, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* GPIO */ - GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, -}; - -static unsigned long mainstone_irq_enabled; - -static void mainstone_mask_irq(struct irq_data *d) -{ - int mainstone_irq = (d->irq - MAINSTONE_IRQ(0)); - MST_INTMSKENA = (mainstone_irq_enabled &= ~(1 << mainstone_irq)); -} - -static void mainstone_unmask_irq(struct irq_data *d) -{ - int mainstone_irq = (d->irq - MAINSTONE_IRQ(0)); - /* the irq can be acknowledged only if deasserted, so it's done here */ - MST_INTSETCLR &= ~(1 << mainstone_irq); - MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); -} - -static struct irq_chip mainstone_irq_chip = { - .name = "FPGA", - .irq_ack = mainstone_mask_irq, - .irq_mask = mainstone_mask_irq, - .irq_unmask = mainstone_unmask_irq, -}; - -static void mainstone_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled; - do { - /* clear useless edge notification */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - if (likely(pending)) { - irq = MAINSTONE_IRQ(0) + __ffs(pending); - generic_handle_irq(irq); - } - pending = MST_INTSETCLR & mainstone_irq_enabled; - } while (pending); -} - -static void __init mainstone_init_irq(void) -{ - int irq; - - pxa27x_init_irq(); - - /* setup extra Mainstone irqs */ - for(irq = MAINSTONE_IRQ(0); irq <= MAINSTONE_IRQ(15); irq++) { - irq_set_chip_and_handler(irq, &mainstone_irq_chip, - handle_level_irq); - if (irq == MAINSTONE_IRQ(10) || irq == MAINSTONE_IRQ(14)) - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE | IRQF_NOAUTOEN); - else - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); - } - set_irq_flags(MAINSTONE_IRQ(8), 0); - set_irq_flags(MAINSTONE_IRQ(12), 0); - - MST_INTMSKENA = 0; - MST_INTSETCLR = 0; - - irq_set_chained_handler(PXA_GPIO_TO_IRQ(0), mainstone_irq_handler); - irq_set_irq_type(PXA_GPIO_TO_IRQ(0), IRQ_TYPE_EDGE_FALLING); -} - -#ifdef CONFIG_PM - -static void mainstone_irq_resume(void) -{ - MST_INTMSKENA = mainstone_irq_enabled; -} - -static struct syscore_ops mainstone_irq_syscore_ops = { - .resume = mainstone_irq_resume, -}; - -static int __init mainstone_irq_device_init(void) -{ - if (machine_is_mainstone()) - register_syscore_ops(&mainstone_irq_syscore_ops); - - return 0; -} - -device_initcall(mainstone_irq_device_init); - -#endif - - -static struct resource smc91x_resources[] = { - [0] = { - .start = (MST_ETH_PHYS + 0x300), - .end = (MST_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = MAINSTONE_IRQ(3), - .end = MAINSTONE_IRQ(3), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct smc91x_platdata mainstone_smc91x_info = { - .flags = SMC91X_USE_8BIT | SMC91X_USE_16BIT | SMC91X_USE_32BIT | - SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &mainstone_smc91x_info, - }, -}; - -static int mst_audio_startup(struct snd_pcm_substream *substream, void *priv) -{ - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF; - return 0; -} - -static void mst_audio_shutdown(struct snd_pcm_substream *substream, void *priv) -{ - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF; -} - -static long mst_audio_suspend_mask; - -static void mst_audio_suspend(void *priv) -{ - mst_audio_suspend_mask = MST_MSCWR2; - MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF; -} - -static void mst_audio_resume(void *priv) -{ - MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF; -} - -static pxa2xx_audio_ops_t mst_audio_ops = { - .startup = mst_audio_startup, - .shutdown = mst_audio_shutdown, - .suspend = mst_audio_suspend, - .resume = mst_audio_resume, -}; - -static struct resource flash_resources[] = { - [0] = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct mtd_partition mainstoneflash0_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE /* force read-only */ - },{ - .name = "Kernel", - .size = 0x00400000, - .offset = 0x00040000, - },{ - .name = "Filesystem", - .size = MTDPART_SIZ_FULL, - .offset = 0x00440000 - } -}; - -static struct flash_platform_data mst_flash_data[2] = { - { - .map_name = "cfi_probe", - .parts = mainstoneflash0_partitions, - .nr_parts = ARRAY_SIZE(mainstoneflash0_partitions), - }, { - .map_name = "cfi_probe", - .parts = NULL, - .nr_parts = 0, - } -}; - -static struct platform_device mst_flash_device[2] = { - { - .name = "pxa2xx-flash", - .id = 0, - .dev = { - .platform_data = &mst_flash_data[0], - }, - .resource = &flash_resources[0], - .num_resources = 1, - }, - { - .name = "pxa2xx-flash", - .id = 1, - .dev = { - .platform_data = &mst_flash_data[1], - }, - .resource = &flash_resources[1], - .num_resources = 1, - }, -}; - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct platform_pwm_backlight_data mainstone_backlight_data = { - .pwm_id = 0, - .max_brightness = 1023, - .dft_brightness = 1023, - .pwm_period_ns = 78770, -}; - -static struct platform_device mainstone_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &mainstone_backlight_data, - }, -}; - -static void __init mainstone_backlight_register(void) -{ - int ret = platform_device_register(&mainstone_backlight_device); - if (ret) - printk(KERN_ERR "mainstone: failed to register backlight device: %d\n", ret); -} -#else -#define mainstone_backlight_register() do { } while (0) -#endif - -static struct pxafb_mode_info toshiba_ltm04c380k_mode = { - .pixclock = 50000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 1, - .left_margin = 0x9f, - .right_margin = 1, - .vsync_len = 44, - .upper_margin = 0, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mode_info toshiba_ltm035a776c_mode = { - .pixclock = 110000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 4, - .left_margin = 8, - .right_margin = 20, - .vsync_len = 3, - .upper_margin = 1, - .lower_margin = 10, - .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info mainstone_pxafb_info = { - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_int, void *data) -{ - int err; - - /* make sure SD/Memory Stick multiplexer's signals - * are routed to MMC controller - */ - MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL; - - err = request_irq(MAINSTONE_MMC_IRQ, mstone_detect_int, IRQF_DISABLED, - "MMC card detect", data); - if (err) - printk(KERN_ERR "mainstone_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); - - return err; -} - -static void mainstone_mci_setpower(struct device *dev, unsigned int vdd) -{ - struct pxamci_platform_data* p_d = dev->platform_data; - - if (( 1 << vdd) & p_d->ocr_mask) { - printk(KERN_DEBUG "%s: on\n", __func__); - MST_MSCWR1 |= MST_MSCWR1_MMC_ON; - MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL; - } else { - printk(KERN_DEBUG "%s: off\n", __func__); - MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON; - } -} - -static void mainstone_mci_exit(struct device *dev, void *data) -{ - free_irq(MAINSTONE_MMC_IRQ, data); -} - -static struct pxamci_platform_data mainstone_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .init = mainstone_mci_init, - .setpower = mainstone_mci_setpower, - .exit = mainstone_mci_exit, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static void mainstone_irda_transceiver_mode(struct device *dev, int mode) -{ - unsigned long flags; - - local_irq_save(flags); - if (mode & IR_SIRMODE) { - MST_MSCWR1 &= ~MST_MSCWR1_IRDA_FIR; - } else if (mode & IR_FIRMODE) { - MST_MSCWR1 |= MST_MSCWR1_IRDA_FIR; - } - pxa2xx_transceiver_mode(dev, mode); - if (mode & IR_OFF) { - MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_OFF; - } else { - MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_FULL; - } - local_irq_restore(flags); -} - -static struct pxaficp_platform_data mainstone_ficp_platform_data = { - .gpio_pwdown = -1, - .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF, - .transceiver_mode = mainstone_irda_transceiver_mode, -}; - -static struct gpio_keys_button gpio_keys_button[] = { - [0] = { - .desc = "wakeup", - .code = KEY_SUSPEND, - .type = EV_KEY, - .gpio = 1, - .wakeup = 1, - }, -}; - -static struct gpio_keys_platform_data mainstone_gpio_keys = { - .buttons = gpio_keys_button, - .nbuttons = 1, -}; - -static struct platform_device mst_gpio_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &mainstone_gpio_keys, - }, -}; - -static struct platform_device *platform_devices[] __initdata = { - &smc91x_device, - &mst_flash_device[0], - &mst_flash_device[1], - &mst_gpio_keys_device, -}; - -static struct pxaohci_platform_data mainstone_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int mainstone_matrix_keys[] = { - KEY(0, 0, KEY_A), KEY(1, 0, KEY_B), KEY(2, 0, KEY_C), - KEY(3, 0, KEY_D), KEY(4, 0, KEY_E), KEY(5, 0, KEY_F), - KEY(0, 1, KEY_G), KEY(1, 1, KEY_H), KEY(2, 1, KEY_I), - KEY(3, 1, KEY_J), KEY(4, 1, KEY_K), KEY(5, 1, KEY_L), - KEY(0, 2, KEY_M), KEY(1, 2, KEY_N), KEY(2, 2, KEY_O), - KEY(3, 2, KEY_P), KEY(4, 2, KEY_Q), KEY(5, 2, KEY_R), - KEY(0, 3, KEY_S), KEY(1, 3, KEY_T), KEY(2, 3, KEY_U), - KEY(3, 3, KEY_V), KEY(4, 3, KEY_W), KEY(5, 3, KEY_X), - KEY(2, 4, KEY_Y), KEY(3, 4, KEY_Z), - - KEY(0, 4, KEY_DOT), /* . */ - KEY(1, 4, KEY_CLOSE), /* @ */ - KEY(4, 4, KEY_SLASH), - KEY(5, 4, KEY_BACKSLASH), - KEY(0, 5, KEY_HOME), - KEY(1, 5, KEY_LEFTSHIFT), - KEY(2, 5, KEY_SPACE), - KEY(3, 5, KEY_SPACE), - KEY(4, 5, KEY_ENTER), - KEY(5, 5, KEY_BACKSPACE), - - KEY(0, 6, KEY_UP), - KEY(1, 6, KEY_DOWN), - KEY(2, 6, KEY_LEFT), - KEY(3, 6, KEY_RIGHT), - KEY(4, 6, KEY_SELECT), -}; - -struct pxa27x_keypad_platform_data mainstone_keypad_info = { - .matrix_key_rows = 6, - .matrix_key_cols = 7, - .matrix_key_map = mainstone_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(mainstone_matrix_keys), - - .enable_rotary0 = 1, - .rotary0_up_key = KEY_UP, - .rotary0_down_key = KEY_DOWN, - - .debounce_interval = 30, -}; - -static void __init mainstone_init_keypad(void) -{ - pxa_set_keypad_info(&mainstone_keypad_info); -} -#else -static inline void mainstone_init_keypad(void) {} -#endif - -static void __init mainstone_init(void) -{ - int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ - - pxa2xx_mfp_config(ARRAY_AND_SIZE(mainstone_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - mst_flash_data[0].width = (__raw_readl(BOOT_DEF) & 1) ? 2 : 4; - mst_flash_data[1].width = 4; - - /* Compensate for SW7 which swaps the flash banks */ - mst_flash_data[SW7].name = "processor-flash"; - mst_flash_data[SW7 ^ 1].name = "mainboard-flash"; - - printk(KERN_NOTICE "Mainstone configured to boot from %s\n", - mst_flash_data[0].name); - - /* system bus arbiter setting - * - Core_Park - * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4 - */ - ARB_CNTRL = ARB_CORE_PARK | 0x234; - - platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); - - /* reading Mainstone's "Virtual Configuration Register" - might be handy to select LCD type here */ - if (0) - mainstone_pxafb_info.modes = &toshiba_ltm04c380k_mode; - else - mainstone_pxafb_info.modes = &toshiba_ltm035a776c_mode; - - pxa_set_fb_info(NULL, &mainstone_pxafb_info); - mainstone_backlight_register(); - - pxa_set_mci_info(&mainstone_mci_platform_data); - pxa_set_ficp_info(&mainstone_ficp_platform_data); - pxa_set_ohci_info(&mainstone_ohci_platform_data); - pxa_set_i2c_info(NULL); - pxa_set_ac97_info(&mst_audio_ops); - - mainstone_init_keypad(); -} - - -static struct map_desc mainstone_io_desc[] __initdata = { - { /* CPLD */ - .virtual = MST_FPGA_VIRT, - .pfn = __phys_to_pfn(MST_FPGA_PHYS), - .length = 0x00100000, - .type = MT_DEVICE - } -}; - -static void __init mainstone_map_io(void) -{ - pxa27x_map_io(); - iotable_init(mainstone_io_desc, ARRAY_SIZE(mainstone_io_desc)); - - /* for use I SRAM as framebuffer. */ - PSLR |= 0xF04; - PCFR = 0x66; -} - -MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") - /* Maintainer: MontaVista Software Inc. */ - .atag_offset = 0x100, /* BLOB boot parameter setting */ - .map_io = mainstone_map_io, - .nr_irqs = MAINSTONE_NR_IRQS, - .init_irq = mainstone_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = mainstone_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa2xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa2xx.c deleted file mode 100644 index ef0426a1..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa2xx.c +++ /dev/null @@ -1,441 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/mfp-pxa2xx.c - * - * PXA2xx pin mux configuration support - * - * The GPIOs on PXA2xx can be configured as one of many alternate - * functions, this is by concept samilar to the MFP configuration - * on PXA3xx, what's more important, the low power pin state and - * wakeup detection are also supported by the same framework. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/gpio-pxa.h> -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/pxa2xx-regs.h> -#include <mach/mfp-pxa2xx.h> - -#include "generic.h" - -#define PGSR(x) __REG2(0x40F00020, (x) << 2) -#define __GAFR(u, x) __REG2((u) ? 0x40E00058 : 0x40E00054, (x) << 3) -#define GAFR_L(x) __GAFR(0, x) -#define GAFR_U(x) __GAFR(1, x) - -#define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) -#define GPLR(x) __REG2(0x40E00000, BANK_OFF((x) >> 5)) -#define GPDR(x) __REG2(0x40E00000, BANK_OFF((x) >> 5) + 0x0c) -#define GPSR(x) __REG2(0x40E00000, BANK_OFF((x) >> 5) + 0x18) -#define GPCR(x) __REG2(0x40E00000, BANK_OFF((x) >> 5) + 0x24) - -#define PWER_WE35 (1 << 24) - -struct gpio_desc { - unsigned valid : 1; - unsigned can_wakeup : 1; - unsigned keypad_gpio : 1; - unsigned dir_inverted : 1; - unsigned int mask; /* bit mask in PWER or PKWR */ - unsigned int mux_mask; /* bit mask of muxed gpio bits, 0 if no mux */ - unsigned long config; -}; - -static struct gpio_desc gpio_desc[MFP_PIN_GPIO127 + 1]; - -static unsigned long gpdr_lpm[4]; - -static int __mfp_config_gpio(unsigned gpio, unsigned long c) -{ - unsigned long gafr, mask = GPIO_bit(gpio); - int bank = gpio_to_bank(gpio); - int uorl = !!(gpio & 0x10); /* GAFRx_U or GAFRx_L ? */ - int shft = (gpio & 0xf) << 1; - int fn = MFP_AF(c); - int is_out = (c & MFP_DIR_OUT) ? 1 : 0; - - if (fn > 3) - return -EINVAL; - - /* alternate function and direction at run-time */ - gafr = (uorl == 0) ? GAFR_L(bank) : GAFR_U(bank); - gafr = (gafr & ~(0x3 << shft)) | (fn << shft); - - if (uorl == 0) - GAFR_L(bank) = gafr; - else - GAFR_U(bank) = gafr; - - if (is_out ^ gpio_desc[gpio].dir_inverted) - GPDR(gpio) |= mask; - else - GPDR(gpio) &= ~mask; - - /* alternate function and direction at low power mode */ - switch (c & MFP_LPM_STATE_MASK) { - case MFP_LPM_DRIVE_HIGH: - PGSR(bank) |= mask; - is_out = 1; - break; - case MFP_LPM_DRIVE_LOW: - PGSR(bank) &= ~mask; - is_out = 1; - break; - case MFP_LPM_INPUT: - case MFP_LPM_DEFAULT: - break; - default: - /* warning and fall through, treat as MFP_LPM_DEFAULT */ - pr_warning("%s: GPIO%d: unsupported low power mode\n", - __func__, gpio); - break; - } - - if (is_out ^ gpio_desc[gpio].dir_inverted) - gpdr_lpm[bank] |= mask; - else - gpdr_lpm[bank] &= ~mask; - - /* give early warning if MFP_LPM_CAN_WAKEUP is set on the - * configurations of those pins not able to wakeup - */ - if ((c & MFP_LPM_CAN_WAKEUP) && !gpio_desc[gpio].can_wakeup) { - pr_warning("%s: GPIO%d unable to wakeup\n", - __func__, gpio); - return -EINVAL; - } - - if ((c & MFP_LPM_CAN_WAKEUP) && is_out) { - pr_warning("%s: output GPIO%d unable to wakeup\n", - __func__, gpio); - return -EINVAL; - } - - return 0; -} - -static inline int __mfp_validate(int mfp) -{ - int gpio = mfp_to_gpio(mfp); - - if ((mfp > MFP_PIN_GPIO127) || !gpio_desc[gpio].valid) { - pr_warning("%s: GPIO%d is invalid pin\n", __func__, gpio); - return -1; - } - - return gpio; -} - -void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num) -{ - unsigned long flags; - unsigned long *c; - int i, gpio; - - for (i = 0, c = mfp_cfgs; i < num; i++, c++) { - - gpio = __mfp_validate(MFP_PIN(*c)); - if (gpio < 0) - continue; - - local_irq_save(flags); - - gpio_desc[gpio].config = *c; - __mfp_config_gpio(gpio, *c); - - local_irq_restore(flags); - } -} - -void pxa2xx_mfp_set_lpm(int mfp, unsigned long lpm) -{ - unsigned long flags, c; - int gpio; - - gpio = __mfp_validate(mfp); - if (gpio < 0) - return; - - local_irq_save(flags); - - c = gpio_desc[gpio].config; - c = (c & ~MFP_LPM_STATE_MASK) | lpm; - __mfp_config_gpio(gpio, c); - - local_irq_restore(flags); -} - -int gpio_set_wake(unsigned int gpio, unsigned int on) -{ - struct gpio_desc *d; - unsigned long c, mux_taken; - - if (gpio > mfp_to_gpio(MFP_PIN_GPIO127)) - return -EINVAL; - - d = &gpio_desc[gpio]; - c = d->config; - - if (!d->valid) - return -EINVAL; - - /* Allow keypad GPIOs to wakeup system when - * configured as generic GPIOs. - */ - if (d->keypad_gpio && (MFP_AF(d->config) == 0) && - (d->config & MFP_LPM_CAN_WAKEUP)) { - if (on) - PKWR |= d->mask; - else - PKWR &= ~d->mask; - return 0; - } - - mux_taken = (PWER & d->mux_mask) & (~d->mask); - if (on && mux_taken) - return -EBUSY; - - if (d->can_wakeup && (c & MFP_LPM_CAN_WAKEUP)) { - if (on) { - PWER = (PWER & ~d->mux_mask) | d->mask; - - if (c & MFP_LPM_EDGE_RISE) - PRER |= d->mask; - else - PRER &= ~d->mask; - - if (c & MFP_LPM_EDGE_FALL) - PFER |= d->mask; - else - PFER &= ~d->mask; - } else { - PWER &= ~d->mask; - PRER &= ~d->mask; - PFER &= ~d->mask; - } - } - return 0; -} - -#ifdef CONFIG_PXA25x -static void __init pxa25x_mfp_init(void) -{ - int i; - - /* running before pxa_gpio_probe() */ -#ifdef CONFIG_CPU_PXA26x - pxa_last_gpio = 89; -#else - pxa_last_gpio = 84; -#endif - for (i = 0; i <= pxa_last_gpio; i++) - gpio_desc[i].valid = 1; - - for (i = 0; i <= 15; i++) { - gpio_desc[i].can_wakeup = 1; - gpio_desc[i].mask = GPIO_bit(i); - } - - /* PXA26x has additional 4 GPIOs (86/87/88/89) which has the - * direction bit inverted in GPDR2. See PXA26x DM 4.1.1. - */ - for (i = 86; i <= pxa_last_gpio; i++) - gpio_desc[i].dir_inverted = 1; -} -#else -static inline void pxa25x_mfp_init(void) {} -#endif /* CONFIG_PXA25x */ - -#ifdef CONFIG_PXA27x -static int pxa27x_pkwr_gpio[] = { - 13, 16, 17, 34, 36, 37, 38, 39, 90, 91, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102 -}; - -int keypad_set_wake(unsigned int on) -{ - unsigned int i, gpio, mask = 0; - struct gpio_desc *d; - - for (i = 0; i < ARRAY_SIZE(pxa27x_pkwr_gpio); i++) { - - gpio = pxa27x_pkwr_gpio[i]; - d = &gpio_desc[gpio]; - - /* skip if configured as generic GPIO */ - if (MFP_AF(d->config) == 0) - continue; - - if (d->config & MFP_LPM_CAN_WAKEUP) - mask |= gpio_desc[gpio].mask; - } - - if (on) - PKWR |= mask; - else - PKWR &= ~mask; - return 0; -} - -#define PWER_WEMUX2_GPIO38 (1 << 16) -#define PWER_WEMUX2_GPIO53 (2 << 16) -#define PWER_WEMUX2_GPIO40 (3 << 16) -#define PWER_WEMUX2_GPIO36 (4 << 16) -#define PWER_WEMUX2_MASK (7 << 16) -#define PWER_WEMUX3_GPIO31 (1 << 19) -#define PWER_WEMUX3_GPIO113 (2 << 19) -#define PWER_WEMUX3_MASK (3 << 19) - -#define INIT_GPIO_DESC_MUXED(mux, gpio) \ -do { \ - gpio_desc[(gpio)].can_wakeup = 1; \ - gpio_desc[(gpio)].mask = PWER_ ## mux ## _GPIO ##gpio; \ - gpio_desc[(gpio)].mux_mask = PWER_ ## mux ## _MASK; \ -} while (0) - -static void __init pxa27x_mfp_init(void) -{ - int i, gpio; - - pxa_last_gpio = 120; /* running before pxa_gpio_probe() */ - for (i = 0; i <= pxa_last_gpio; i++) { - /* skip GPIO2, 5, 6, 7, 8, they are not - * valid pins allow configuration - */ - if (i == 2 || i == 5 || i == 6 || i == 7 || i == 8) - continue; - - gpio_desc[i].valid = 1; - } - - /* Keypad GPIOs */ - for (i = 0; i < ARRAY_SIZE(pxa27x_pkwr_gpio); i++) { - gpio = pxa27x_pkwr_gpio[i]; - gpio_desc[gpio].can_wakeup = 1; - gpio_desc[gpio].keypad_gpio = 1; - gpio_desc[gpio].mask = 1 << i; - } - - /* Overwrite GPIO13 as a PWER wakeup source */ - for (i = 0; i <= 15; i++) { - /* skip GPIO2, 5, 6, 7, 8 */ - if (GPIO_bit(i) & 0x1e4) - continue; - - gpio_desc[i].can_wakeup = 1; - gpio_desc[i].mask = GPIO_bit(i); - } - - gpio_desc[35].can_wakeup = 1; - gpio_desc[35].mask = PWER_WE35; - - INIT_GPIO_DESC_MUXED(WEMUX3, 31); - INIT_GPIO_DESC_MUXED(WEMUX3, 113); - INIT_GPIO_DESC_MUXED(WEMUX2, 38); - INIT_GPIO_DESC_MUXED(WEMUX2, 53); - INIT_GPIO_DESC_MUXED(WEMUX2, 40); - INIT_GPIO_DESC_MUXED(WEMUX2, 36); -} -#else -static inline void pxa27x_mfp_init(void) {} -#endif /* CONFIG_PXA27x */ - -#ifdef CONFIG_PM -static unsigned long saved_gafr[2][4]; -static unsigned long saved_gpdr[4]; -static unsigned long saved_gplr[4]; -static unsigned long saved_pgsr[4]; - -static int pxa2xx_mfp_suspend(void) -{ - int i; - - /* set corresponding PGSR bit of those marked MFP_LPM_KEEP_OUTPUT */ - for (i = 0; i < pxa_last_gpio; i++) { - if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && - (GPDR(i) & GPIO_bit(i))) { - if (GPLR(i) & GPIO_bit(i)) - PGSR(gpio_to_bank(i)) |= GPIO_bit(i); - else - PGSR(gpio_to_bank(i)) &= ~GPIO_bit(i); - } - } - - for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { - saved_gafr[0][i] = GAFR_L(i); - saved_gafr[1][i] = GAFR_U(i); - saved_gpdr[i] = GPDR(i * 32); - saved_gplr[i] = GPLR(i * 32); - saved_pgsr[i] = PGSR(i); - - GPSR(i * 32) = PGSR(i); - GPCR(i * 32) = ~PGSR(i); - } - - /* set GPDR bits taking into account MFP_LPM_KEEP_OUTPUT */ - for (i = 0; i < pxa_last_gpio; i++) { - if ((gpdr_lpm[gpio_to_bank(i)] & GPIO_bit(i)) || - ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && - (saved_gpdr[gpio_to_bank(i)] & GPIO_bit(i)))) - GPDR(i) |= GPIO_bit(i); - else - GPDR(i) &= ~GPIO_bit(i); - } - - return 0; -} - -static void pxa2xx_mfp_resume(void) -{ - int i; - - for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { - GAFR_L(i) = saved_gafr[0][i]; - GAFR_U(i) = saved_gafr[1][i]; - GPSR(i * 32) = saved_gplr[i]; - GPCR(i * 32) = ~saved_gplr[i]; - GPDR(i * 32) = saved_gpdr[i]; - PGSR(i) = saved_pgsr[i]; - } - PSSR = PSSR_RDH | PSSR_PH; -} -#else -#define pxa2xx_mfp_suspend NULL -#define pxa2xx_mfp_resume NULL -#endif - -struct syscore_ops pxa2xx_mfp_syscore_ops = { - .suspend = pxa2xx_mfp_suspend, - .resume = pxa2xx_mfp_resume, -}; - -static int __init pxa2xx_mfp_init(void) -{ - int i; - - if (!cpu_is_pxa2xx()) - return 0; - - if (cpu_is_pxa25x()) - pxa25x_mfp_init(); - - if (cpu_is_pxa27x()) - pxa27x_mfp_init(); - - /* clear RDH bit to enable GPIO receivers after reset/sleep exit */ - PSSR = PSSR_RDH; - - /* initialize gafr_run[], pgsr_lpm[] from existing values */ - for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) - gpdr_lpm[i] = GPDR(i * 32); - - return 0; -} -postcore_initcall(pxa2xx_mfp_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa3xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa3xx.c deleted file mode 100644 index 89863a01..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mfp-pxa3xx.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/mfp.c - * - * PXA3xx Multi-Function Pin Support - * - * Copyright (C) 2007 Marvell Internation Ltd. - * - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/hardware.h> -#include <mach/mfp-pxa3xx.h> -#include <mach/pxa3xx-regs.h> - -#ifdef CONFIG_PM -/* - * Configure the MFPs appropriately for suspend/resume. - * FIXME: this should probably depend on which system state we're - * entering - for instance, we might not want to place MFP pins in - * a pull-down mode if they're an active low chip select, and we're - * just entering standby. - */ -static int pxa3xx_mfp_suspend(void) -{ - mfp_config_lpm(); - return 0; -} - -static void pxa3xx_mfp_resume(void) -{ - mfp_config_run(); - - /* clear RDH bit when MFP settings are restored - * - * NOTE: the last 3 bits DxS are write-1-to-clear so carefully - * preserve them here in case they will be referenced later - */ - ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); -} -#else -#define pxa3xx_mfp_suspend NULL -#define pxa3xx_mfp_resume NULL -#endif - -struct syscore_ops pxa3xx_mfp_syscore_ops = { - .suspend = pxa3xx_mfp_suspend, - .resume = pxa3xx_mfp_resume, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701.c deleted file mode 100644 index 061d5700..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701.c +++ /dev/null @@ -1,767 +0,0 @@ -/* - * Handles the Mitac Mio A701 Board - * - * Copyright (C) 2008 Robert Jarzmik - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/input.h> -#include <linux/delay.h> -#include <linux/gpio_keys.h> -#include <linux/pwm_backlight.h> -#include <linux/rtc.h> -#include <linux/leds.h> -#include <linux/gpio.h> -#include <linux/interrupt.h> -#include <linux/irq.h> -#include <linux/pda_power.h> -#include <linux/power_supply.h> -#include <linux/wm97xx.h> -#include <linux/mtd/physmap.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/regulator/max1586.h> -#include <linux/slab.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/regs-rtc.h> -#include <plat/pxa27x_keypad.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/pxa27x-udc.h> -#include <mach/camera.h> -#include <mach/audio.h> -#include <mach/smemc.h> -#include <media/soc_camera.h> - -#include <mach/mioa701.h> - -#include "generic.h" -#include "devices.h" - -static unsigned long mioa701_pin_config[] = { - /* Mio global */ - MIO_CFG_OUT(GPIO9_CHARGE_EN, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO18_POWEROFF, AF0, DRIVE_LOW), - MFP_CFG_OUT(GPIO3, AF0, DRIVE_HIGH), - MFP_CFG_OUT(GPIO4, AF0, DRIVE_HIGH), - MIO_CFG_IN(GPIO80_MAYBE_CHARGE_VDROP, AF0), - - /* Backlight PWM 0 */ - GPIO16_PWM0_OUT, - - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - MIO_CFG_IN(GPIO78_SDIO_RO, AF0), - MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0), - MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW), - - /* USB */ - MIO_CFG_IN(GPIO13_nUSB_DETECT, AF0), - MIO_CFG_OUT(GPIO22_USB_ENABLE, AF0, DRIVE_LOW), - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* QCI */ - GPIO12_CIF_DD_7, - GPIO17_CIF_DD_6, - GPIO50_CIF_DD_3, - GPIO51_CIF_DD_2, - GPIO52_CIF_DD_4, - GPIO53_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO55_CIF_DD_1, - GPIO81_CIF_DD_0, - GPIO82_CIF_DD_5, - GPIO84_CIF_FV, - GPIO85_CIF_LV, - - /* Bluetooth */ - MIO_CFG_IN(GPIO14_BT_nACTIVITY, AF0), - GPIO44_BTUART_CTS, - GPIO42_BTUART_RXD, - GPIO45_BTUART_RTS, - GPIO43_BTUART_TXD, - MIO_CFG_OUT(GPIO83_BT_ON, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO77_BT_UNKNOWN1, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO86_BT_MAYBE_nRESET, AF0, DRIVE_HIGH), - - /* GPS */ - MIO_CFG_OUT(GPIO23_GPS_UNKNOWN1, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO26_GPS_ON, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO27_GPS_RESET, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO106_GPS_UNKNOWN2, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO107_GPS_UNKNOWN3, AF0, DRIVE_LOW), - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* GSM */ - MIO_CFG_OUT(GPIO24_GSM_MOD_RESET_CMD, AF0, DRIVE_LOW), - MIO_CFG_OUT(GPIO88_GSM_nMOD_ON_CMD, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO90_GSM_nMOD_OFF_CMD, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO114_GSM_nMOD_DTE_UART_STATE, AF0, DRIVE_HIGH), - MIO_CFG_IN(GPIO25_GSM_MOD_ON_STATE, AF0), - MIO_CFG_IN(GPIO113_GSM_EVENT, AF0) | WAKEUP_ON_EDGE_BOTH, - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO36_FFUART_DCD, - GPIO37_FFUART_DSR, - GPIO39_FFUART_TXD, - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - - /* Sound */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - MIO_CFG_IN(GPIO12_HPJACK_INSERT, AF0), - - /* Leds */ - MIO_CFG_OUT(GPIO10_LED_nCharging, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO97_LED_nBlue, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO98_LED_nOrange, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO82_LED_nVibra, AF0, DRIVE_HIGH), - MIO_CFG_OUT(GPIO115_LED_nKeyboard, AF0, DRIVE_HIGH), - - /* Keyboard */ - MIO_CFG_IN(GPIO0_KEY_POWER, AF0) | WAKEUP_ON_EDGE_BOTH, - MIO_CFG_IN(GPIO93_KEY_VOLUME_UP, AF0), - MIO_CFG_IN(GPIO94_KEY_VOLUME_DOWN, AF0), - GPIO100_KP_MKIN_0, - GPIO101_KP_MKIN_1, - GPIO102_KP_MKIN_2, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* Unknown */ - MFP_CFG_IN(GPIO20, AF0), - MFP_CFG_IN(GPIO21, AF0), - MFP_CFG_IN(GPIO33, AF0), - MFP_CFG_OUT(GPIO49, AF0, DRIVE_HIGH), - MFP_CFG_OUT(GPIO57, AF0, DRIVE_HIGH), - MFP_CFG_IN(GPIO96, AF0), - MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH), -}; - -/* LCD Screen and Backlight */ -static struct platform_pwm_backlight_data mioa701_backlight_data = { - .pwm_id = 0, - .max_brightness = 100, - .dft_brightness = 50, - .pwm_period_ns = 4000 * 1024, /* Fl = 250kHz */ -}; - -/* - * LTM0305A776C LCD panel timings - * - * see: - * - the LTM0305A776C datasheet, - * - and the PXA27x Programmers' manual - */ -static struct pxafb_mode_info mioa701_ltm0305a776c = { - .pixclock = 220000, /* CLK=4.545 MHz */ - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 4, - .vsync_len = 2, - .left_margin = 6, - .right_margin = 4, - .upper_margin = 5, - .lower_margin = 3, -}; - -static void mioa701_lcd_power(int on, struct fb_var_screeninfo *si) -{ - gpio_set_value(GPIO87_LCD_POWER, on); -} - -static struct pxafb_mach_info mioa701_pxafb_info = { - .modes = &mioa701_ltm0305a776c, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = mioa701_lcd_power, -}; - -/* - * Keyboard configuration - */ -static unsigned int mioa701_matrix_keys[] = { - KEY(0, 0, KEY_UP), - KEY(0, 1, KEY_RIGHT), - KEY(0, 2, KEY_MEDIA), - KEY(1, 0, KEY_DOWN), - KEY(1, 1, KEY_ENTER), - KEY(1, 2, KEY_CONNECT), /* GPS key */ - KEY(2, 0, KEY_LEFT), - KEY(2, 1, KEY_PHONE), /* Phone Green key */ - KEY(2, 2, KEY_CAMERA) /* Camera key */ -}; -static struct pxa27x_keypad_platform_data mioa701_keypad_info = { - .matrix_key_rows = 3, - .matrix_key_cols = 3, - .matrix_key_map = mioa701_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(mioa701_matrix_keys), -}; - -/* - * GPIO Key Configuration - */ -#define MIO_KEY(key, _gpio, _desc, _wakeup) \ - { .code = (key), .gpio = (_gpio), .active_low = 0, \ - .desc = (_desc), .type = EV_KEY, .wakeup = (_wakeup) } -static struct gpio_keys_button mioa701_button_table[] = { - MIO_KEY(KEY_EXIT, GPIO0_KEY_POWER, "Power button", 1), - MIO_KEY(KEY_VOLUMEUP, GPIO93_KEY_VOLUME_UP, "Volume up", 0), - MIO_KEY(KEY_VOLUMEDOWN, GPIO94_KEY_VOLUME_DOWN, "Volume down", 0), - MIO_KEY(KEY_HP, GPIO12_HPJACK_INSERT, "HP jack detect", 0) -}; - -static struct gpio_keys_platform_data mioa701_gpio_keys_data = { - .buttons = mioa701_button_table, - .nbuttons = ARRAY_SIZE(mioa701_button_table), -}; - -/* - * Leds and vibrator - */ -#define ONE_LED(_gpio, _name) \ -{ .gpio = (_gpio), .name = (_name), .active_low = true } -static struct gpio_led gpio_leds[] = { - ONE_LED(GPIO10_LED_nCharging, "mioa701:charging"), - ONE_LED(GPIO97_LED_nBlue, "mioa701:blue"), - ONE_LED(GPIO98_LED_nOrange, "mioa701:orange"), - ONE_LED(GPIO82_LED_nVibra, "mioa701:vibra"), - ONE_LED(GPIO115_LED_nKeyboard, "mioa701:keyboard") -}; - -static struct gpio_led_platform_data gpio_led_info = { - .leds = gpio_leds, - .num_leds = ARRAY_SIZE(gpio_leds), -}; - -/* - * GSM Sagem XS200 chip - * - * GSM handling was purged from kernel. For history, this is the way to go : - * - init : GPIO24_GSM_MOD_RESET_CMD = 0, GPIO114_GSM_nMOD_DTE_UART_STATE = 1 - * GPIO88_GSM_nMOD_ON_CMD = 1, GPIO90_GSM_nMOD_OFF_CMD = 1 - * - reset : GPIO24_GSM_MOD_RESET_CMD = 1, msleep(100), - * GPIO24_GSM_MOD_RESET_CMD = 0 - * - turn on : GPIO88_GSM_nMOD_ON_CMD = 0, msleep(1000), - * GPIO88_GSM_nMOD_ON_CMD = 1 - * - turn off : GPIO90_GSM_nMOD_OFF_CMD = 0, msleep(1000), - * GPIO90_GSM_nMOD_OFF_CMD = 1 - */ -static int is_gsm_on(void) -{ - int is_on; - - is_on = !!gpio_get_value(GPIO25_GSM_MOD_ON_STATE); - return is_on; -} - -irqreturn_t gsm_on_irq(int irq, void *p) -{ - printk(KERN_DEBUG "Mioa701: GSM status changed to %s\n", - is_gsm_on() ? "on" : "off"); - return IRQ_HANDLED; -} - -static struct gpio gsm_gpios[] = { - { GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" }, - { GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" }, -}; - -static int __init gsm_init(void) -{ - int rc; - - rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios)); - if (rc) - goto err_gpio; - rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq, - IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, - "GSM XS200 Power Irq", NULL); - if (rc) - goto err_irq; - - gpio_set_wake(GPIO113_GSM_EVENT, 1); - return 0; - -err_irq: - printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n"); - gpio_free_array(ARRAY_AND_SIZE(gsm_gpios)); -err_gpio: - printk(KERN_ERR "Mioa701: gsm not available\n"); - return rc; -} - -static void gsm_exit(void) -{ - free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL); - gpio_free_array(ARRAY_AND_SIZE(gsm_gpios)); -} - -/* - * Bluetooth BRF6150 chip - * - * BT handling was purged from kernel. For history, this is the way to go : - * - turn on : GPIO83_BT_ON = 1 - * - turn off : GPIO83_BT_ON = 0 - */ - -/* - * GPS Sirf Star III chip - * - * GPS handling was purged from kernel. For history, this is the way to go : - * - init : GPIO23_GPS_UNKNOWN1 = 1, GPIO26_GPS_ON = 0, GPIO27_GPS_RESET = 0 - * GPIO106_GPS_UNKNOWN2 = 0, GPIO107_GPS_UNKNOWN3 = 0 - * - turn on : GPIO27_GPS_RESET = 1, GPIO26_GPS_ON = 1 - * - turn off : GPIO26_GPS_ON = 0, GPIO27_GPS_RESET = 0 - */ - -/* - * USB UDC - */ -static int is_usb_connected(void) -{ - return !gpio_get_value(GPIO13_nUSB_DETECT); -} - -static struct pxa2xx_udc_mach_info mioa701_udc_info = { - .udc_is_connected = is_usb_connected, - .gpio_pullup = GPIO22_USB_ENABLE, -}; - -struct gpio_vbus_mach_info gpio_vbus_data = { - .gpio_vbus = GPIO13_nUSB_DETECT, - .gpio_vbus_inverted = 1, - .gpio_pullup = -1, -}; - -/* - * SDIO/MMC Card controller - */ -/** - * The card detect interrupt isn't debounced so we delay it by 250ms - * to give the card a chance to fully insert/eject. - */ -static struct pxamci_platform_data mioa701_mci_info = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_card_detect = GPIO15_SDIO_INSERT, - .gpio_card_ro = GPIO78_SDIO_RO, - .gpio_power = GPIO91_SDIO_EN, -}; - -/* FlashRAM */ -static struct resource docg3_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_8K - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device docg3 = { - .name = "docg3", - .id = -1, - .resource = &docg3_resource, - .num_resources = 1, - .dev = { - .platform_data = NULL, - }, -}; - -/* - * Suspend/Resume bootstrap management - * - * MIO A701 reboot sequence is highly ROM dependent. From the one dissassembled, - * this sequence is as follows : - * - disables interrupts - * - initialize SDRAM (self refresh RAM into active RAM) - * - initialize GPIOs (depends on value at 0xa020b020) - * - initialize coprossessors - * - if edge detect on PWR_SCL(GPIO3), then proceed to cold start - * - or if value at 0xa020b000 not equal to 0x0f0f0f0f, proceed to cold start - * - else do a resume, ie. jump to addr 0xa0100000 - */ -#define RESUME_ENABLE_ADDR 0xa020b000 -#define RESUME_ENABLE_VAL 0x0f0f0f0f -#define RESUME_BT_ADDR 0xa020b020 -#define RESUME_UNKNOWN_ADDR 0xa020b024 -#define RESUME_VECTOR_ADDR 0xa0100000 -#define BOOTSTRAP_WORDS mioa701_bootstrap_lg/4 - -static u32 *save_buffer; - -static void install_bootstrap(void) -{ - int i; - u32 *rom_bootstrap = phys_to_virt(RESUME_VECTOR_ADDR); - u32 *src = &mioa701_bootstrap; - - for (i = 0; i < BOOTSTRAP_WORDS; i++) - rom_bootstrap[i] = src[i]; -} - - -static int mioa701_sys_suspend(void) -{ - int i = 0, is_bt_on; - u32 *mem_resume_vector = phys_to_virt(RESUME_VECTOR_ADDR); - u32 *mem_resume_enabler = phys_to_virt(RESUME_ENABLE_ADDR); - u32 *mem_resume_bt = phys_to_virt(RESUME_BT_ADDR); - u32 *mem_resume_unknown = phys_to_virt(RESUME_UNKNOWN_ADDR); - - /* Devices prepare suspend */ - is_bt_on = !!gpio_get_value(GPIO83_BT_ON); - pxa2xx_mfp_set_lpm(GPIO83_BT_ON, - is_bt_on ? MFP_LPM_DRIVE_HIGH : MFP_LPM_DRIVE_LOW); - - for (i = 0; i < BOOTSTRAP_WORDS; i++) - save_buffer[i] = mem_resume_vector[i]; - save_buffer[i++] = *mem_resume_enabler; - save_buffer[i++] = *mem_resume_bt; - save_buffer[i++] = *mem_resume_unknown; - - *mem_resume_enabler = RESUME_ENABLE_VAL; - *mem_resume_bt = is_bt_on; - - install_bootstrap(); - return 0; -} - -static void mioa701_sys_resume(void) -{ - int i = 0; - u32 *mem_resume_vector = phys_to_virt(RESUME_VECTOR_ADDR); - u32 *mem_resume_enabler = phys_to_virt(RESUME_ENABLE_ADDR); - u32 *mem_resume_bt = phys_to_virt(RESUME_BT_ADDR); - u32 *mem_resume_unknown = phys_to_virt(RESUME_UNKNOWN_ADDR); - - for (i = 0; i < BOOTSTRAP_WORDS; i++) - mem_resume_vector[i] = save_buffer[i]; - *mem_resume_enabler = save_buffer[i++]; - *mem_resume_bt = save_buffer[i++]; - *mem_resume_unknown = save_buffer[i++]; -} - -static struct syscore_ops mioa701_syscore_ops = { - .suspend = mioa701_sys_suspend, - .resume = mioa701_sys_resume, -}; - -static int __init bootstrap_init(void) -{ - int save_size = mioa701_bootstrap_lg + (sizeof(u32) * 3); - - register_syscore_ops(&mioa701_syscore_ops); - - save_buffer = kmalloc(save_size, GFP_KERNEL); - if (!save_buffer) - return -ENOMEM; - printk(KERN_INFO "MioA701: allocated %d bytes for bootstrap\n", - save_size); - return 0; -} - -static void bootstrap_exit(void) -{ - kfree(save_buffer); - unregister_syscore_ops(&mioa701_syscore_ops); - - printk(KERN_CRIT "Unregistering mioa701 suspend will hang next" - "resume !!!\n"); -} - -/* - * Power Supply - */ -static char *supplicants[] = { - "mioa701_battery" -}; - -static int is_ac_connected(void) -{ - return gpio_get_value(GPIO96_AC_DETECT); -} - -static void mioa701_set_charge(int flags) -{ - gpio_set_value(GPIO9_CHARGE_EN, (flags == PDA_POWER_CHARGE_USB)); -} - -static struct pda_power_pdata power_pdata = { - .is_ac_online = is_ac_connected, - .is_usb_online = is_usb_connected, - .set_charge = mioa701_set_charge, - .supplied_to = supplicants, - .num_supplicants = ARRAY_SIZE(supplicants), -}; - -static struct resource power_resources[] = { - [0] = { - .name = "ac", - .start = PXA_GPIO_TO_IRQ(GPIO96_AC_DETECT), - .end = PXA_GPIO_TO_IRQ(GPIO96_AC_DETECT), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - }, - [1] = { - .name = "usb", - .start = PXA_GPIO_TO_IRQ(GPIO13_nUSB_DETECT), - .end = PXA_GPIO_TO_IRQ(GPIO13_nUSB_DETECT), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - }, -}; - -static struct platform_device power_dev = { - .name = "pda-power", - .id = -1, - .resource = power_resources, - .num_resources = ARRAY_SIZE(power_resources), - .dev = { - .platform_data = &power_pdata, - }, -}; - -static struct wm97xx_batt_pdata mioa701_battery_data = { - .batt_aux = WM97XX_AUX_ID1, - .temp_aux = -1, - .charge_gpio = -1, - .min_voltage = 0xc00, - .max_voltage = 0xfc0, - .batt_tech = POWER_SUPPLY_TECHNOLOGY_LION, - .batt_div = 1, - .batt_mult = 1, - .batt_name = "mioa701_battery", -}; - -static struct wm97xx_pdata mioa701_wm97xx_pdata = { - .batt_pdata = &mioa701_battery_data, -}; - -/* - * Voltage regulation - */ -static struct regulator_consumer_supply max1586_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data max1586_v3_info = { - .constraints = { - .name = "vcc_core range", - .min_uV = 1000000, - .max_uV = 1705000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .num_consumer_supplies = ARRAY_SIZE(max1586_consumers), - .consumer_supplies = max1586_consumers, -}; - -static struct max1586_subdev_data max1586_subdevs[] = { - { .name = "vcc_core", .id = MAX1586_V3, - .platform_data = &max1586_v3_info }, -}; - -static struct max1586_platform_data max1586_info = { - .subdevs = max1586_subdevs, - .num_subdevs = ARRAY_SIZE(max1586_subdevs), - .v3_gain = MAX1586_GAIN_NO_R24, /* 700..1475 mV */ -}; - -/* - * Camera interface - */ -struct pxacamera_platform_data mioa701_pxacamera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN, - .mclk_10khz = 5000, -}; - -static struct i2c_board_info __initdata mioa701_pi2c_devices[] = { - { - I2C_BOARD_INFO("max1586", 0x14), - .platform_data = &max1586_info, - }, -}; - -/* Board I2C devices. */ -static struct i2c_board_info mioa701_i2c_devices[] = { - { - I2C_BOARD_INFO("mt9m111", 0x5d), - }, -}; - -static struct soc_camera_link iclink = { - .bus_id = 0, /* Match id in pxa27x_device_camera in device.c */ - .board_info = &mioa701_i2c_devices[0], - .i2c_adapter_id = 0, -}; - -struct i2c_pxa_platform_data i2c_pdata = { - .fast_mode = 1, -}; - -static pxa2xx_audio_ops_t mioa701_ac97_info = { - .reset_gpio = 95, - .codec_pdata = { &mioa701_wm97xx_pdata, }, -}; - -/* - * Mio global - */ - -/* Devices */ -#define MIO_PARENT_DEV(var, strname, tparent, pdata) \ -static struct platform_device var = { \ - .name = strname, \ - .id = -1, \ - .dev = { \ - .platform_data = pdata, \ - .parent = tparent, \ - }, \ -}; -#define MIO_SIMPLE_DEV(var, strname, pdata) \ - MIO_PARENT_DEV(var, strname, NULL, pdata) - -MIO_SIMPLE_DEV(mioa701_gpio_keys, "gpio-keys", &mioa701_gpio_keys_data) -MIO_PARENT_DEV(mioa701_backlight, "pwm-backlight", &pxa27x_device_pwm0.dev, - &mioa701_backlight_data); -MIO_SIMPLE_DEV(mioa701_led, "leds-gpio", &gpio_led_info) -MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL) -MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL) -MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL) -MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data); -MIO_SIMPLE_DEV(mioa701_camera, "soc-camera-pdrv",&iclink); - -static struct platform_device *devices[] __initdata = { - &mioa701_gpio_keys, - &mioa701_backlight, - &mioa701_led, - &pxa2xx_pcm, - &mioa701_sound, - &power_dev, - &docg3, - &gpio_vbus, - &mioa701_camera, - &mioa701_board, -}; - -static void mioa701_machine_exit(void); - -static void mioa701_poweroff(void) -{ - mioa701_machine_exit(); - pxa_restart('s', NULL); -} - -static void mioa701_restart(char c, const char *cmd) -{ - mioa701_machine_exit(); - pxa_restart('s', cmd); -} - -static struct gpio global_gpios[] = { - { GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" }, - { GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" }, - { GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" }, -}; - -static void __init mioa701_machine_init(void) -{ - int rc; - - PSLR = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */ - PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE; - RTTR = 32768 - 1; /* Reset crazy WinCE value */ - UP2OCR = UP2OCR_HXOE; - - /* - * Set up the flash memory : DiskOnChip G3 on first static memory bank - */ - __raw_writel(0x7ff02dd8, MSC0); - __raw_writel(0x0001c391, MCMEM0); - __raw_writel(0x0001c391, MCATT0); - __raw_writel(0x0001c391, MCIO0); - - - pxa2xx_mfp_config(ARRAY_AND_SIZE(mioa701_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); - if (rc) - pr_err("MioA701: Failed to request GPIOs: %d", rc); - bootstrap_init(); - pxa_set_fb_info(NULL, &mioa701_pxafb_info); - pxa_set_mci_info(&mioa701_mci_info); - pxa_set_keypad_info(&mioa701_keypad_info); - pxa_set_udc_info(&mioa701_udc_info); - pxa_set_ac97_info(&mioa701_ac97_info); - pm_power_off = mioa701_poweroff; - platform_add_devices(devices, ARRAY_SIZE(devices)); - gsm_init(); - - i2c_register_board_info(1, ARRAY_AND_SIZE(mioa701_pi2c_devices)); - pxa_set_i2c_info(&i2c_pdata); - pxa27x_set_i2c_power_info(NULL); - pxa_set_camera_info(&mioa701_pxacamera_platform_data); -} - -static void mioa701_machine_exit(void) -{ - bootstrap_exit(); - gsm_exit(); -} - -MACHINE_START(MIOA701, "MIO A701") - .atag_offset = 0x100, - .restart_mode = 's', - .map_io = &pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = &pxa27x_init_irq, - .handle_irq = &pxa27x_handle_irq, - .init_machine = mioa701_machine_init, - .timer = &pxa_timer, - .restart = mioa701_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701_bootresume.S b/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701_bootresume.S deleted file mode 100644 index 324d25a4..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mioa701_bootresume.S +++ /dev/null @@ -1,37 +0,0 @@ -/* Bootloader to resume MIO A701 - * - * 2007-1-12 Robert Jarzmik - * - * This code is licenced under the GPLv2. -*/ - -#include <linux/linkage.h> -#include <asm/assembler.h> - -/* - * Note: Yes, part of the following code is located into the .data section. - * This is to allow jumpaddr to be accessed with a relative load - * while we can't rely on any MMU translation. We could have put - * sleep_save_sp in the .text section as well, but some setups might - * insist on it to be truly read-only. - */ - .data -ENTRY(mioa701_bootstrap) -0: - b 1f -ENTRY(mioa701_jumpaddr) - .word 0x40f00008 @ PSPR in no-MMU mode -1: - mov r0, #0xa0000000 @ Don't suppose memory access works - orr r0, r0, #0x00200000 @ even if it's supposed to - orr r0, r0, #0x0000b000 - mov r1, #0 - str r1, [r0] @ Early disable resume for next boot - ldr r0, mioa701_jumpaddr @ (Murphy's Law) - ldr r0, [r0] - mov pc, r0 -2: - -ENTRY(mioa701_bootstrap_lg) - .data - .word 2b-0b diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mp900.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mp900.c deleted file mode 100644 index 152efbf0..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mp900.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/mp900.c - * - * Support for the NEC MobilePro900/C platform - * - * Based on mach-pxa/gumstix.c - * - * 2007, 2008 Kristoffer Ericson <kristoffer.ericson@gmail.com> - * 2007, 2008 Michael Petchkovsky <mkpetch@internode.on.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/device.h> -#include <linux/platform_device.h> -#include <linux/types.h> -#include <linux/usb/isp116x.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa25x.h> -#include "generic.h" - -static void isp116x_pfm_delay(struct device *dev, int delay) -{ - - /* 400Mhz PXA2 = 2.5ns / instruction */ - - int cyc = delay / 10; - - /* 4 Instructions = 4 x 2.5ns = 10ns */ - __asm__ volatile ("0:\n" - "subs %0, %1, #1\n" - "bge 0b\n" - :"=r" (cyc) - :"0"(cyc) - ); -} - -static struct isp116x_platform_data isp116x_pfm_data = { - .remote_wakeup_enable = 1, - .delay = isp116x_pfm_delay, -}; - -static struct resource isp116x_pfm_resources[] = { - [0] = { - .start = 0x0d000000, - .end = 0x0d000000 + 1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = 0x0d000000 + 4, - .end = 0x0d000000 + 5, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = 61, - .end = 61, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device mp900c_dummy_device = { - .name = "mp900c_dummy", - .id = -1, -}; - -static struct platform_device mp900c_usb = { - .name = "isp116x-hcd", - .num_resources = ARRAY_SIZE(isp116x_pfm_resources), - .resource = isp116x_pfm_resources, - .dev.platform_data = &isp116x_pfm_data, -}; - -static struct platform_device *devices[] __initdata = { - &mp900c_dummy_device, - &mp900c_usb, -}; - -static void __init mp900c_init(void) -{ - printk(KERN_INFO "MobilePro 900/C machine init\n"); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -/* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */ -MACHINE_START(NEC_MP900, "MobilePro900/C") - .atag_offset = 0x220100, - .timer = &pxa_timer, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = mp900c_init, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/mxm8x10.c b/ANDROID_3.4.5/arch/arm/mach-pxa/mxm8x10.c deleted file mode 100644 index 83570a79..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/mxm8x10.c +++ /dev/null @@ -1,475 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/mxm8x10.c - * - * Support for the Embedian MXM-8x10 Computer on Module - * - * Copyright (C) 2006 Marvell International Ltd. - * Copyright (C) 2009 Embedian Inc. - * Copyright (C) 2009 TMT Services & Supplies (Pty) Ltd. - * - * 2007-09-04: eric miao <eric.y.miao@gmail.com> - * rewrite to align with latest kernel - * - * 2010-01-09: Edwin Peer <epeer@tmtservices.co.za> - * Hennie van der Merwe <hvdmerwe@tmtservices.co.za> - * rework for upstream merge - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/serial_8250.h> -#include <linux/dm9000.h> -#include <linux/gpio.h> -#include <linux/i2c/pxa-i2c.h> - -#include <plat/pxa3xx_nand.h> - -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/pxa320.h> - -#include <mach/mxm8x10.h> - -#include "devices.h" -#include "generic.h" - -/* GPIO pin definition - -External device stuff - Leave unconfigured for now... ---------------------- -GPIO0 - DREQ (External DMA Request) -GPIO3 - nGCS2 (External Chip Select) Where is nGCS0; nGCS1; nGCS4; nGCS5 ? -GPIO4 - nGCS3 -GPIO15 - EXT_GPIO1 -GPIO16 - EXT_GPIO2 -GPIO17 - EXT_GPIO3 -GPIO24 - EXT_GPIO4 -GPIO25 - EXT_GPIO5 -GPIO26 - EXT_GPIO6 -GPIO27 - EXT_GPIO7 -GPIO28 - EXT_GPIO8 -GPIO29 - EXT_GPIO9 -GPIO30 - EXT_GPIO10 -GPIO31 - EXT_GPIO11 -GPIO57 - EXT_GPIO12 -GPIO74 - EXT_IRQ1 -GPIO75 - EXT_IRQ2 -GPIO76 - EXT_IRQ3 -GPIO77 - EXT_IRQ4 -GPIO78 - EXT_IRQ5 -GPIO79 - EXT_IRQ6 -GPIO80 - EXT_IRQ7 -GPIO81 - EXT_IRQ8 -GPIO87 - VCCIO_PWREN (External Device PWREN) - -Dallas 1-Wire - Leave unconfigured for now... -------------- -GPIO0_2 - DS - 1Wire - -Ethernet --------- -GPIO1 - DM9000 PWR -GPIO9 - DM9K_nIRQ -GPIO36 - DM9K_RESET - -Keypad - Leave unconfigured by for now... ------- -GPIO1_2 - KP_DKIN0 -GPIO5_2 - KP_MKOUT7 -GPIO82 - KP_DKIN1 -GPIO85 - KP_DKIN2 -GPIO86 - KP_DKIN3 -GPIO113 - KP_MKIN0 -GPIO114 - KP_MKIN1 -GPIO115 - KP_MKIN2 -GPIO116 - KP_MKIN3 -GPIO117 - KP_MKIN4 -GPIO118 - KP_MKIN5 -GPIO119 - KP_MKIN6 -GPIO120 - KP_MKIN7 -GPIO121 - KP_MKOUT0 -GPIO122 - KP_MKOUT1 -GPIO122 - KP_MKOUT2 -GPIO123 - KP_MKOUT3 -GPIO124 - KP_MKOUT4 -GPIO125 - KP_MKOUT5 -GPIO127 - KP_MKOUT6 - -Data Bus - Leave unconfigured for now... --------- -GPIO2 - nWait (Data Bus) - -USB Device ----------- -GPIO4_2 - USBD_PULLUP -GPIO10 - UTM_CLK (USB Device UTM Clk) -GPIO49 - USB 2.0 Device UTM_DATA0 -GPIO50 - USB 2.0 Device UTM_DATA1 -GPIO51 - USB 2.0 Device UTM_DATA2 -GPIO52 - USB 2.0 Device UTM_DATA3 -GPIO53 - USB 2.0 Device UTM_DATA4 -GPIO54 - USB 2.0 Device UTM_DATA5 -GPIO55 - USB 2.0 Device UTM_DATA6 -GPIO56 - USB 2.0 Device UTM_DATA7 -GPIO58 - UTM_RXVALID (USB 2.0 Device) -GPIO59 - UTM_RXACTIVE (USB 2.0 Device) -GPIO60 - UTM_RXERROR -GPIO61 - UTM_OPMODE0 -GPIO62 - UTM_OPMODE1 -GPIO71 - USBD_INT (USB Device?) -GPIO73 - UTM_TXREADY (USB 2.0 Device) -GPIO83 - UTM_TXVALID (USB 2.0 Device) -GPIO98 - UTM_RESET (USB 2.0 device) -GPIO99 - UTM_XCVR_SELECT -GPIO100 - UTM_TERM_SELECT -GPIO101 - UTM_SUSPENDM_X -GPIO102 - UTM_LINESTATE0 -GPIO103 - UTM_LINESTATE1 - -Card-Bus Interface - Leave unconfigured for now... ------------------- -GPIO5 - nPIOR (I/O space output enable) -GPIO6 - nPIOW (I/O space write enable) -GPIO7 - nIOS16 (Input from I/O space telling size of data bus) -GPIO8 - nPWAIT (Input for inserting wait states) - -LCD ---- -GPIO6_2 - LDD0 -GPIO7_2 - LDD1 -GPIO8_2 - LDD2 -GPIO9_2 - LDD3 -GPIO11_2 - LDD5 -GPIO12_2 - LDD6 -GPIO13_2 - LDD7 -GPIO14_2 - VSYNC -GPIO15_2 - HSYNC -GPIO16_2 - VCLK -GPIO17_2 - HCLK -GPIO18_2 - VDEN -GPIO63 - LDD8 (CPU LCD) -GPIO64 - LDD9 (CPU LCD) -GPIO65 - LDD10 (CPU LCD) -GPIO66 - LDD11 (CPU LCD) -GPIO67 - LDD12 (CPU LCD) -GPIO68 - LDD13 (CPU LCD) -GPIO69 - LDD14 (CPU LCD) -GPIO70 - LDD15 (CPU LCD) -GPIO88 - VCCLCD_PWREN (LCD Panel PWREN) -GPIO97 - BACKLIGHT_EN -GPIO104 - LCD_PWREN - -PWM - Leave unconfigured for now... ---- -GPIO11 - PWM0 -GPIO12 - PWM1 -GPIO13 - PWM2 -GPIO14 - PWM3 - -SD-CARD -------- -GPIO18 - SDDATA0 -GPIO19 - SDDATA1 -GPIO20 - SDDATA2 -GPIO21 - SDDATA3 -GPIO22 - SDCLK -GPIO23 - SDCMD -GPIO72 - SD_WP -GPIO84 - SD_nIRQ_CD (SD-Card) - -I2C ---- -GPIO32 - I2CSCL -GPIO33 - I2CSDA - -AC97 ----- -GPIO35 - AC97_SDATA_IN -GPIO37 - AC97_SDATA_OUT -GPIO38 - AC97_SYNC -GPIO39 - AC97_BITCLK -GPIO40 - AC97_nRESET - -UART1 ------ -GPIO41 - UART_RXD1 -GPIO42 - UART_TXD1 -GPIO43 - UART_CTS1 -GPIO44 - UART_DCD1 -GPIO45 - UART_DSR1 -GPIO46 - UART_nRI1 -GPIO47 - UART_DTR1 -GPIO48 - UART_RTS1 - -UART2 ------ -GPIO109 - RTS2 -GPIO110 - RXD2 -GPIO111 - TXD2 -GPIO112 - nCTS2 - -UART3 ------ -GPIO105 - nCTS3 -GPIO106 - nRTS3 -GPIO107 - TXD3 -GPIO108 - RXD3 - -SSP3 - Leave unconfigured for now... ----- -GPIO89 - SSP3_CLK -GPIO90 - SSP3_SFRM -GPIO91 - SSP3_TXD -GPIO92 - SSP3_RXD - -SSP4 -GPIO93 - SSP4_CLK -GPIO94 - SSP4_SFRM -GPIO95 - SSP4_TXD -GPIO96 - SSP4_RXD -*/ - -static mfp_cfg_t mfp_cfg[] __initdata = { - /* USB */ - GPIO10_UTM_CLK, - GPIO49_U2D_PHYDATA_0, - GPIO50_U2D_PHYDATA_1, - GPIO51_U2D_PHYDATA_2, - GPIO52_U2D_PHYDATA_3, - GPIO53_U2D_PHYDATA_4, - GPIO54_U2D_PHYDATA_5, - GPIO55_U2D_PHYDATA_6, - GPIO56_U2D_PHYDATA_7, - GPIO58_UTM_RXVALID, - GPIO59_UTM_RXACTIVE, - GPIO60_U2D_RXERROR, - GPIO61_U2D_OPMODE0, - GPIO62_U2D_OPMODE1, - GPIO71_GPIO, /* USBD_INT */ - GPIO73_UTM_TXREADY, - GPIO83_U2D_TXVALID, - GPIO98_U2D_RESET, - GPIO99_U2D_XCVR_SEL, - GPIO100_U2D_TERM_SEL, - GPIO101_U2D_SUSPEND, - GPIO102_UTM_LINESTATE_0, - GPIO103_UTM_LINESTATE_1, - GPIO4_2_GPIO | MFP_PULL_HIGH, /* UTM_PULLUP */ - - /* DM9000 */ - GPIO1_GPIO, - GPIO9_GPIO, - GPIO36_GPIO, - - /* AC97 */ - GPIO35_AC97_SDATA_IN_0, - GPIO37_AC97_SDATA_OUT, - GPIO38_AC97_SYNC, - GPIO39_AC97_BITCLK, - GPIO40_AC97_nACRESET, - - /* UARTS */ - GPIO41_UART1_RXD, - GPIO42_UART1_TXD, - GPIO43_UART1_CTS, - GPIO44_UART1_DCD, - GPIO45_UART1_DSR, - GPIO46_UART1_RI, - GPIO47_UART1_DTR, - GPIO48_UART1_RTS, - - GPIO109_UART2_RTS, - GPIO110_UART2_RXD, - GPIO111_UART2_TXD, - GPIO112_UART2_CTS, - - GPIO105_UART3_CTS, - GPIO106_UART3_RTS, - GPIO107_UART3_TXD, - GPIO108_UART3_RXD, - - GPIO78_GPIO, - GPIO79_GPIO, - GPIO80_GPIO, - GPIO81_GPIO, - - /* I2C */ - GPIO32_I2C_SCL, - GPIO33_I2C_SDA, - - /* MMC */ - GPIO18_MMC1_DAT0, - GPIO19_MMC1_DAT1, - GPIO20_MMC1_DAT2, - GPIO21_MMC1_DAT3, - GPIO22_MMC1_CLK, - GPIO23_MMC1_CMD, - GPIO72_GPIO | MFP_PULL_HIGH, /* Card Detect */ - GPIO84_GPIO | MFP_PULL_LOW, /* Write Protect */ - - /* IRQ */ - GPIO74_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ1 */ - GPIO75_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ2 */ - GPIO76_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ3 */ - GPIO77_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ4 */ - GPIO78_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ5 */ - GPIO79_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ6 */ - GPIO80_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ7 */ - GPIO81_GPIO | MFP_LPM_EDGE_RISE /* EXT_IRQ8 */ -}; - -/* MMC/MCI Support */ -#if defined(CONFIG_MMC) -static struct pxamci_platform_data mxm_8x10_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .detect_delay_ms = 10, - .gpio_card_detect = MXM_8X10_SD_nCD, - .gpio_card_ro = MXM_8X10_SD_WP, - .gpio_power = -1 -}; - -void __init mxm_8x10_mmc_init(void) -{ - pxa_set_mci_info(&mxm_8x10_mci_platform_data); -} -#endif - -/* USB Open Host Controller Interface */ -static struct pxaohci_platform_data mxm_8x10_ohci_platform_data = { - .port_mode = PMM_NPS_MODE, - .flags = ENABLE_PORT_ALL -}; - -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); -} - -/* NAND flash Support */ -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -#define NAND_BLOCK_SIZE SZ_128K -#define NB(x) (NAND_BLOCK_SIZE * (x)) -static struct mtd_partition mxm_8x10_nand_partitions[] = { - [0] = { - .name = "boot", - .size = NB(0x002), - .offset = NB(0x000), - .mask_flags = MTD_WRITEABLE - }, - [1] = { - .name = "kernel", - .size = NB(0x010), - .offset = NB(0x002), - .mask_flags = MTD_WRITEABLE - }, - [2] = { - .name = "root", - .size = NB(0x36c), - .offset = NB(0x012) - }, - [3] = { - .name = "bbt", - .size = NB(0x082), - .offset = NB(0x37e), - .mask_flags = MTD_WRITEABLE - } -}; - -static struct pxa3xx_nand_platform_data mxm_8x10_nand_info = { - .enable_arbiter = 1, - .keep_config = 1, - .num_cs = 1, - .parts[0] = mxm_8x10_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(mxm_8x10_nand_partitions) -}; - -static void __init mxm_8x10_nand_init(void) -{ - pxa3xx_set_nand_info(&mxm_8x10_nand_info); -} -#else -static inline void mxm_8x10_nand_init(void) {} -#endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ - -/* Ethernet support: Davicom DM9000 */ -static struct resource dm9k_resources[] = { - [0] = { - .start = MXM_8X10_ETH_PHYS + 0x300, - .end = MXM_8X10_ETH_PHYS + 0x300, - .flags = IORESOURCE_MEM - }, - [1] = { - .start = MXM_8X10_ETH_PHYS + 0x308, - .end = MXM_8X10_ETH_PHYS + 0x308, - .flags = IORESOURCE_MEM - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO9)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO9)), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE - } -}; - -static struct dm9000_plat_data dm9k_plat_data = { - .flags = DM9000_PLATF_16BITONLY -}; - -static struct platform_device dm9k_device = { - .name = "dm9000", - .id = 0, - .num_resources = ARRAY_SIZE(dm9k_resources), - .resource = dm9k_resources, - .dev = { - .platform_data = &dm9k_plat_data - } -}; - -static void __init mxm_8x10_ethernet_init(void) -{ - platform_device_register(&dm9k_device); -} - -/* PXA UARTs */ -static void __init mxm_8x10_uarts_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); -} - -/* I2C and Real Time Clock */ -static struct i2c_board_info __initdata mxm_8x10_i2c_devices[] = { - { - I2C_BOARD_INFO("ds1337", 0x68) - } -}; - -static void __init mxm_8x10_i2c_init(void) -{ - i2c_register_board_info(0, mxm_8x10_i2c_devices, - ARRAY_SIZE(mxm_8x10_i2c_devices)); - pxa_set_i2c_info(NULL); -} - -void __init mxm_8x10_barebones_init(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(mfp_cfg)); - - mxm_8x10_uarts_init(); - mxm_8x10_nand_init(); - mxm_8x10_i2c_init(); - mxm_8x10_ethernet_init(); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palm27x.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palm27x.c deleted file mode 100644 index fbc10d7b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palm27x.c +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Common code for Palm LD, T5, TX, Z72 - * - * Copyright (C) 2010-2011 Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/regulator/max1586.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <mach/udc.h> -#include <mach/palmasoc.h> -#include <mach/palm27x.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data palm27x_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .detect_delay_ms = 200, -}; - -void __init palm27x_mmc_init(int detect, int ro, int power, - int power_inverted) -{ - palm27x_mci_platform_data.gpio_card_detect = detect; - palm27x_mci_platform_data.gpio_card_ro = ro; - palm27x_mci_platform_data.gpio_power = power; - palm27x_mci_platform_data.gpio_power_invert = power_inverted; - - pxa_set_mci_info(&palm27x_mci_platform_data); -} -#endif - -/****************************************************************************** - * Power management - standby - ******************************************************************************/ -#if defined(CONFIG_SUSPEND) -void __init palm27x_pm_init(unsigned long str_base) -{ - static const unsigned long resume[] = { - 0xe3a00101, /* mov r0, #0x40000000 */ - 0xe380060f, /* orr r0, r0, #0x00f00000 */ - 0xe590f008, /* ldr pc, [r0, #0x08] */ - }; - - /* - * Copy the bootloader. - * NOTE: PalmZ72 uses a different wakeup method! - */ - memcpy(phys_to_virt(str_base), resume, sizeof(resume)); -} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -struct pxafb_mode_info palm_320x480_lcd_mode = { - .pixclock = 57692, - .xres = 320, - .yres = 480, - .bpp = 16, - - .left_margin = 32, - .right_margin = 1, - .upper_margin = 7, - .lower_margin = 1, - - .hsync_len = 4, - .vsync_len = 1, -}; - -struct pxafb_mode_info palm_320x320_lcd_mode = { - .pixclock = 115384, - .xres = 320, - .yres = 320, - .bpp = 16, - - .left_margin = 27, - .right_margin = 7, - .upper_margin = 7, - .lower_margin = 8, - - .hsync_len = 6, - .vsync_len = 1, -}; - -struct pxafb_mode_info palm_320x320_new_lcd_mode = { - .pixclock = 86538, - .xres = 320, - .yres = 320, - .bpp = 16, - - .left_margin = 20, - .right_margin = 8, - .upper_margin = 8, - .lower_margin = 5, - - .hsync_len = 4, - .vsync_len = 1, -}; - -static struct pxafb_mach_info palm27x_lcd_screen = { - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static int palm27x_lcd_power; -static void palm27x_lcd_ctl(int on, struct fb_var_screeninfo *info) -{ - gpio_set_value(palm27x_lcd_power, on); -} - -void __init palm27x_lcd_init(int power, struct pxafb_mode_info *mode) -{ - palm27x_lcd_screen.modes = mode; - - if (gpio_is_valid(power)) { - if (!gpio_request(power, "LCD power")) { - pr_err("Palm27x: failed to claim lcd power gpio!\n"); - return; - } - if (!gpio_direction_output(power, 1)) { - pr_err("Palm27x: lcd power configuration failed!\n"); - return; - } - palm27x_lcd_power = power; - palm27x_lcd_screen.pxafb_lcd_power = palm27x_lcd_ctl; - } - - pxa_set_fb_info(NULL, &palm27x_lcd_screen); -} -#endif - -/****************************************************************************** - * USB Gadget - ******************************************************************************/ -#if defined(CONFIG_USB_PXA27X) || \ - defined(CONFIG_USB_PXA27X_MODULE) -static struct gpio_vbus_mach_info palm27x_udc_info = { - .gpio_vbus_inverted = 1, -}; - -static struct platform_device palm27x_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &palm27x_udc_info, - }, -}; - -void __init palm27x_udc_init(int vbus, int pullup, int vbus_inverted) -{ - palm27x_udc_info.gpio_vbus = vbus; - palm27x_udc_info.gpio_pullup = pullup; - - palm27x_udc_info.gpio_vbus_inverted = vbus_inverted; - - if (!gpio_request(pullup, "USB Pullup")) { - gpio_direction_output(pullup, - palm27x_udc_info.gpio_vbus_inverted); - gpio_free(pullup); - } else - return; - - platform_device_register(&palm27x_gpio_vbus); -} -#endif - -/****************************************************************************** - * IrDA - ******************************************************************************/ -#if defined(CONFIG_IRDA) || defined(CONFIG_IRDA_MODULE) -static struct pxaficp_platform_data palm27x_ficp_platform_data = { - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -void __init palm27x_irda_init(int pwdn) -{ - palm27x_ficp_platform_data.gpio_pwdown = pwdn; - pxa_set_ficp_info(&palm27x_ficp_platform_data); -} -#endif - -/****************************************************************************** - * WM97xx audio, battery - ******************************************************************************/ -#if defined(CONFIG_TOUCHSCREEN_WM97XX) || \ - defined(CONFIG_TOUCHSCREEN_WM97XX_MODULE) -static struct wm97xx_batt_pdata palm27x_batt_pdata = { - .batt_aux = WM97XX_AUX_ID3, - .temp_aux = WM97XX_AUX_ID2, - .charge_gpio = -1, - .batt_mult = 1000, - .batt_div = 414, - .temp_mult = 1, - .temp_div = 1, - .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO, - .batt_name = "main-batt", -}; - -static struct wm97xx_pdata palm27x_wm97xx_pdata = { - .batt_pdata = &palm27x_batt_pdata, -}; - -static pxa2xx_audio_ops_t palm27x_ac97_pdata = { - .codec_pdata = { &palm27x_wm97xx_pdata, }, -}; - -static struct palm27x_asoc_info palm27x_asoc_pdata = { - .jack_gpio = -1, -}; - -static struct platform_device palm27x_asoc = { - .name = "palm27x-asoc", - .id = -1, - .dev = { - .platform_data = &palm27x_asoc_pdata, - }, -}; - -void __init palm27x_ac97_init(int minv, int maxv, int jack, int reset) -{ - palm27x_ac97_pdata.reset_gpio = reset; - palm27x_asoc_pdata.jack_gpio = jack; - - if (minv < 0 || maxv < 0) { - palm27x_ac97_pdata.codec_pdata[0] = NULL; - pxa_set_ac97_info(&palm27x_ac97_pdata); - } else { - palm27x_batt_pdata.min_voltage = minv, - palm27x_batt_pdata.max_voltage = maxv, - - pxa_set_ac97_info(&palm27x_ac97_pdata); - platform_device_register(&palm27x_asoc); - } -} -#endif - -/****************************************************************************** - * Backlight - ******************************************************************************/ -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -static int palm_bl_power; -static int palm_lcd_power; - -static int palm27x_backlight_init(struct device *dev) -{ - int ret; - - ret = gpio_request(palm_bl_power, "BL POWER"); - if (ret) - goto err; - ret = gpio_direction_output(palm_bl_power, 0); - if (ret) - goto err2; - - if (gpio_is_valid(palm_lcd_power)) { - ret = gpio_request(palm_lcd_power, "LCD POWER"); - if (ret) - goto err2; - ret = gpio_direction_output(palm_lcd_power, 0); - if (ret) - goto err3; - } - - return 0; -err3: - gpio_free(palm_lcd_power); -err2: - gpio_free(palm_bl_power); -err: - return ret; -} - -static int palm27x_backlight_notify(struct device *dev, int brightness) -{ - gpio_set_value(palm_bl_power, brightness); - if (gpio_is_valid(palm_lcd_power)) - gpio_set_value(palm_lcd_power, brightness); - return brightness; -} - -static void palm27x_backlight_exit(struct device *dev) -{ - gpio_free(palm_bl_power); - if (gpio_is_valid(palm_lcd_power)) - gpio_free(palm_lcd_power); -} - -static struct platform_pwm_backlight_data palm27x_backlight_data = { - .pwm_id = 0, - .max_brightness = 0xfe, - .dft_brightness = 0x7e, - .pwm_period_ns = 3500 * 1024, - .init = palm27x_backlight_init, - .notify = palm27x_backlight_notify, - .exit = palm27x_backlight_exit, -}; - -static struct platform_device palm27x_backlight = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &palm27x_backlight_data, - }, -}; - -void __init palm27x_pwm_init(int bl, int lcd) -{ - palm_bl_power = bl; - palm_lcd_power = lcd; - platform_device_register(&palm27x_backlight); -} -#endif - -/****************************************************************************** - * Power supply - ******************************************************************************/ -#if defined(CONFIG_PDA_POWER) || defined(CONFIG_PDA_POWER_MODULE) -static int palm_ac_state; -static int palm_usb_state; - -static int palm27x_power_supply_init(struct device *dev) -{ - int ret; - - ret = gpio_request(palm_ac_state, "AC state"); - if (ret) - goto err1; - ret = gpio_direction_input(palm_ac_state); - if (ret) - goto err2; - - if (gpio_is_valid(palm_usb_state)) { - ret = gpio_request(palm_usb_state, "USB state"); - if (ret) - goto err2; - ret = gpio_direction_input(palm_usb_state); - if (ret) - goto err3; - } - - return 0; -err3: - gpio_free(palm_usb_state); -err2: - gpio_free(palm_ac_state); -err1: - return ret; -} - -static void palm27x_power_supply_exit(struct device *dev) -{ - gpio_free(palm_usb_state); - gpio_free(palm_ac_state); -} - -static int palm27x_is_ac_online(void) -{ - return gpio_get_value(palm_ac_state); -} - -static int palm27x_is_usb_online(void) -{ - return !gpio_get_value(palm_usb_state); -} -static char *palm27x_supplicants[] = { - "main-battery", -}; - -static struct pda_power_pdata palm27x_ps_info = { - .init = palm27x_power_supply_init, - .exit = palm27x_power_supply_exit, - .is_ac_online = palm27x_is_ac_online, - .is_usb_online = palm27x_is_usb_online, - .supplied_to = palm27x_supplicants, - .num_supplicants = ARRAY_SIZE(palm27x_supplicants), -}; - -static struct platform_device palm27x_power_supply = { - .name = "pda-power", - .id = -1, - .dev = { - .platform_data = &palm27x_ps_info, - }, -}; - -void __init palm27x_power_init(int ac, int usb) -{ - palm_ac_state = ac; - palm_usb_state = usb; - platform_device_register(&palm27x_power_supply); -} -#endif - -/****************************************************************************** - * Core power regulator - ******************************************************************************/ -#if defined(CONFIG_REGULATOR_MAX1586) || \ - defined(CONFIG_REGULATOR_MAX1586_MODULE) -static struct regulator_consumer_supply palm27x_max1587a_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data palm27x_max1587a_v3_info = { - .constraints = { - .name = "vcc_core range", - .min_uV = 900000, - .max_uV = 1705000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .consumer_supplies = palm27x_max1587a_consumers, - .num_consumer_supplies = ARRAY_SIZE(palm27x_max1587a_consumers), -}; - -static struct max1586_subdev_data palm27x_max1587a_subdevs[] = { - { - .name = "vcc_core", - .id = MAX1586_V3, - .platform_data = &palm27x_max1587a_v3_info, - } -}; - -static struct max1586_platform_data palm27x_max1587a_info = { - .subdevs = palm27x_max1587a_subdevs, - .num_subdevs = ARRAY_SIZE(palm27x_max1587a_subdevs), - .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ -}; - -static struct i2c_board_info __initdata palm27x_pi2c_board_info[] = { - { - I2C_BOARD_INFO("max1586", 0x14), - .platform_data = &palm27x_max1587a_info, - }, -}; - -static struct i2c_pxa_platform_data palm27x_i2c_power_info = { - .use_pio = 1, -}; - -void __init palm27x_pmic_init(void) -{ - i2c_register_board_info(1, ARRAY_AND_SIZE(palm27x_pi2c_board_info)); - pxa27x_set_i2c_power_info(&palm27x_i2c_power_info); -} -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmld.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmld.c deleted file mode 100644 index 31e0433d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmld.c +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Hardware definitions for Palm LifeDrive - * - * Author: Marek Vasut <marek.vasut@gmail.com> - * - * Based on work of: - * Alex Osborne <ato@meshy.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/palmld.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <plat/pxa27x_keypad.h> -#include <mach/palmasoc.h> -#include <mach/palm27x.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmld_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO14_GPIO, /* SD detect */ - GPIO114_GPIO, /* SD power */ - GPIO116_GPIO, /* SD r/o switch */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - GPIO95_AC97_nRESET, - - /* IrDA */ - GPIO108_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* MATRIX KEYPAD */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* GPIO KEYS */ - GPIO10_GPIO, /* hotsync button */ - GPIO12_GPIO, /* power switch */ - GPIO15_GPIO, /* lock switch */ - - /* LEDs */ - GPIO52_GPIO, /* green led */ - GPIO94_GPIO, /* orange led */ - - /* PCMCIA */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO79_PSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO36_GPIO, /* wifi power */ - GPIO38_GPIO, /* wifi ready */ - GPIO81_GPIO, /* wifi reset */ - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO39_FFUART_TXD, - - /* HDD */ - GPIO98_GPIO, /* HDD reset */ - GPIO115_GPIO, /* HDD power */ - - /* MISC */ - GPIO13_GPIO, /* earphone detect */ -}; - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition palmld_partitions[] = { - { - .name = "Flash", - .offset = 0x00000000, - .size = MTDPART_SIZ_FULL, - .mask_flags = 0 - } -}; - -static struct physmap_flash_data palmld_flash_data[] = { - { - .width = 2, /* bankwidth in bytes */ - .parts = palmld_partitions, - .nr_parts = ARRAY_SIZE(palmld_partitions) - } -}; - -static struct resource palmld_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_4M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device palmld_flash = { - .name = "physmap-flash", - .id = 0, - .resource = &palmld_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = palmld_flash_data, - }, -}; - -static void __init palmld_nor_init(void) -{ - platform_device_register(&palmld_flash); -} -#else -static inline void palmld_nor_init(void) {} -#endif - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int palmld_matrix_keys[] = { - KEY(0, 1, KEY_F2), - KEY(0, 2, KEY_UP), - - KEY(1, 0, KEY_F3), - KEY(1, 1, KEY_F4), - KEY(1, 2, KEY_RIGHT), - - KEY(2, 0, KEY_F1), - KEY(2, 1, KEY_F5), - KEY(2, 2, KEY_DOWN), - - KEY(3, 0, KEY_F6), - KEY(3, 1, KEY_ENTER), - KEY(3, 2, KEY_LEFT), -}; - -static struct pxa27x_keypad_platform_data palmld_keypad_platform_data = { - .matrix_key_rows = 4, - .matrix_key_cols = 3, - .matrix_key_map = palmld_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(palmld_matrix_keys), - - .debounce_interval = 30, -}; - -static void __init palmld_kpc_init(void) -{ - pxa_set_keypad_info(&palmld_keypad_platform_data); -} -#else -static inline void palmld_kpc_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button palmld_pxa_buttons[] = { - {KEY_F8, GPIO_NR_PALMLD_HOTSYNC_BUTTON_N, 1, "HotSync Button" }, - {KEY_F9, GPIO_NR_PALMLD_LOCK_SWITCH, 0, "Lock Switch" }, - {KEY_POWER, GPIO_NR_PALMLD_POWER_SWITCH, 0, "Power Switch" }, -}; - -static struct gpio_keys_platform_data palmld_pxa_keys_data = { - .buttons = palmld_pxa_buttons, - .nbuttons = ARRAY_SIZE(palmld_pxa_buttons), -}; - -static struct platform_device palmld_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &palmld_pxa_keys_data, - }, -}; - -static void __init palmld_keys_init(void) -{ - platform_device_register(&palmld_pxa_keys); -} -#else -static inline void palmld_keys_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -struct gpio_led gpio_leds[] = { -{ - .name = "palmld:green:led", - .default_trigger = "none", - .gpio = GPIO_NR_PALMLD_LED_GREEN, -}, { - .name = "palmld:amber:led", - .default_trigger = "none", - .gpio = GPIO_NR_PALMLD_LED_AMBER, -}, -}; - -static struct gpio_led_platform_data gpio_led_info = { - .leds = gpio_leds, - .num_leds = ARRAY_SIZE(gpio_leds), -}; - -static struct platform_device palmld_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &gpio_led_info, - } -}; - -static void __init palmld_leds_init(void) -{ - platform_device_register(&palmld_leds); -} -#else -static inline void palmld_leds_init(void) {} -#endif - -/****************************************************************************** - * HDD - ******************************************************************************/ -#if defined(CONFIG_PATA_PALMLD) || defined(CONFIG_PATA_PALMLD_MODULE) -static struct platform_device palmld_ide_device = { - .name = "pata_palmld", - .id = -1, -}; - -static void __init palmld_ide_init(void) -{ - platform_device_register(&palmld_ide_device); -} -#else -static inline void palmld_ide_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static struct map_desc palmld_io_desc[] __initdata = { -{ - .virtual = PALMLD_IDE_VIRT, - .pfn = __phys_to_pfn(PALMLD_IDE_PHYS), - .length = PALMLD_IDE_SIZE, - .type = MT_DEVICE -}, -{ - .virtual = PALMLD_USB_VIRT, - .pfn = __phys_to_pfn(PALMLD_USB_PHYS), - .length = PALMLD_USB_SIZE, - .type = MT_DEVICE -}, -}; - -static void __init palmld_map_io(void) -{ - pxa27x_map_io(); - iotable_init(palmld_io_desc, ARRAY_SIZE(palmld_io_desc)); -} - -static void __init palmld_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - palm27x_mmc_init(GPIO_NR_PALMLD_SD_DETECT_N, GPIO_NR_PALMLD_SD_READONLY, - GPIO_NR_PALMLD_SD_POWER, 0); - palm27x_pm_init(PALMLD_STR_BASE); - palm27x_lcd_init(-1, &palm_320x480_lcd_mode); - palm27x_irda_init(GPIO_NR_PALMLD_IR_DISABLE); - palm27x_ac97_init(PALMLD_BAT_MIN_VOLTAGE, PALMLD_BAT_MAX_VOLTAGE, - GPIO_NR_PALMLD_EARPHONE_DETECT, 95); - palm27x_pwm_init(GPIO_NR_PALMLD_BL_POWER, GPIO_NR_PALMLD_LCD_POWER); - palm27x_power_init(GPIO_NR_PALMLD_POWER_DETECT, - GPIO_NR_PALMLD_USB_DETECT_N); - palm27x_pmic_init(); - palmld_kpc_init(); - palmld_keys_init(); - palmld_nor_init(); - palmld_leds_init(); - palmld_ide_init(); -} - -MACHINE_START(PALMLD, "Palm LifeDrive") - .atag_offset = 0x100, - .map_io = palmld_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmld_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmt5.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmt5.c deleted file mode 100644 index 0f6bd4fc..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmt5.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Hardware definitions for Palm Tungsten|T5 - * - * Author: Marek Vasut <marek.vasut@gmail.com> - * - * Based on work of: - * Ales Snuparek <snuparek@atlas.cz> - * Justin Kendrick <twilightsentry@gmail.com> - * RichardT5 <richard_t5@users.sourceforge.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/memblock.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/palmt5.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <plat/pxa27x_keypad.h> -#include <mach/udc.h> -#include <mach/palmasoc.h> -#include <mach/palm27x.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmt5_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO14_GPIO, /* SD detect */ - GPIO114_GPIO, /* SD power */ - GPIO115_GPIO, /* SD r/o switch */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - GPIO95_AC97_nRESET, - - /* IrDA */ - GPIO40_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* USB */ - GPIO15_GPIO, /* usb detect */ - GPIO93_GPIO, /* usb power */ - - /* MATRIX KEYPAD */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO39_FFUART_TXD, - - /* MISC */ - GPIO10_GPIO, /* hotsync button */ - GPIO90_GPIO, /* power detect */ - GPIO107_GPIO, /* earphone detect */ -}; - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int palmt5_matrix_keys[] = { - KEY(0, 0, KEY_POWER), - KEY(0, 1, KEY_F1), - KEY(0, 2, KEY_ENTER), - - KEY(1, 0, KEY_F2), - KEY(1, 1, KEY_F3), - KEY(1, 2, KEY_F4), - - KEY(2, 0, KEY_UP), - KEY(2, 2, KEY_DOWN), - - KEY(3, 0, KEY_RIGHT), - KEY(3, 2, KEY_LEFT), -}; - -static struct pxa27x_keypad_platform_data palmt5_keypad_platform_data = { - .matrix_key_rows = 4, - .matrix_key_cols = 3, - .matrix_key_map = palmt5_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(palmt5_matrix_keys), - - .debounce_interval = 30, -}; - -static void __init palmt5_kpc_init(void) -{ - pxa_set_keypad_info(&palmt5_keypad_platform_data); -} -#else -static inline void palmt5_kpc_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button palmt5_pxa_buttons[] = { - {KEY_F8, GPIO_NR_PALMT5_HOTSYNC_BUTTON_N, 1, "HotSync Button" }, -}; - -static struct gpio_keys_platform_data palmt5_pxa_keys_data = { - .buttons = palmt5_pxa_buttons, - .nbuttons = ARRAY_SIZE(palmt5_pxa_buttons), -}; - -static struct platform_device palmt5_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &palmt5_pxa_keys_data, - }, -}; - -static void __init palmt5_keys_init(void) -{ - platform_device_register(&palmt5_pxa_keys); -} -#else -static inline void palmt5_keys_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init palmt5_reserve(void) -{ - memblock_reserve(0xa0200000, 0x1000); -} - -static void __init palmt5_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - palm27x_mmc_init(GPIO_NR_PALMT5_SD_DETECT_N, GPIO_NR_PALMT5_SD_READONLY, - GPIO_NR_PALMT5_SD_POWER, 0); - palm27x_pm_init(PALMT5_STR_BASE); - palm27x_lcd_init(-1, &palm_320x480_lcd_mode); - palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N, - GPIO_NR_PALMT5_USB_PULLUP, 1); - palm27x_irda_init(GPIO_NR_PALMT5_IR_DISABLE); - palm27x_ac97_init(PALMT5_BAT_MIN_VOLTAGE, PALMT5_BAT_MAX_VOLTAGE, - GPIO_NR_PALMT5_EARPHONE_DETECT, 95); - palm27x_pwm_init(GPIO_NR_PALMT5_BL_POWER, GPIO_NR_PALMT5_LCD_POWER); - palm27x_power_init(GPIO_NR_PALMT5_POWER_DETECT, -1); - palm27x_pmic_init(); - palmt5_kpc_init(); - palmt5_keys_init(); -} - -MACHINE_START(PALMT5, "Palm Tungsten|T5") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .reserve = palmt5_reserve, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmt5_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtc.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmtc.c deleted file mode 100644 index e2d97eed..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtc.c +++ /dev/null @@ -1,548 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/palmtc.c - * - * Support for the Palm Tungsten|C - * - * Author: Marek Vasut <marek.vasut@gmail.com> - * - * Based on work of: - * Petr Blaha <p3t3@centrum.cz> - * Chetan S. Kumar <shivakumar.chetan@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/input.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/input/matrix_keypad.h> -#include <linux/ucb1400.h> -#include <linux/power_supply.h> -#include <linux/gpio_keys.h> -#include <linux/mtd/physmap.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa25x.h> -#include <mach/audio.h> -#include <mach/palmtc.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <mach/udc.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmtc_pin_config[] __initdata = { - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - GPIO12_GPIO, /* detect */ - GPIO32_GPIO, /* power */ - GPIO54_GPIO, /* r/o switch */ - - /* PCMCIA */ - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO49_nPWE, - GPIO48_nPOE, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO57_nIOIS16, - GPIO56_nPWAIT, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* IrDA */ - GPIO45_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* PWM */ - GPIO17_PWM1_OUT, - - /* USB */ - GPIO4_GPIO, /* detect */ - GPIO36_GPIO, /* pullup */ - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* MATRIX KEYPAD */ - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 0 */ - GPIO9_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 1 */ - GPIO10_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 2 */ - GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* in 3 */ - GPIO18_GPIO | MFP_LPM_DRIVE_LOW, /* out 0 */ - GPIO19_GPIO | MFP_LPM_DRIVE_LOW, /* out 1 */ - GPIO20_GPIO | MFP_LPM_DRIVE_LOW, /* out 2 */ - GPIO21_GPIO | MFP_LPM_DRIVE_LOW, /* out 3 */ - GPIO22_GPIO | MFP_LPM_DRIVE_LOW, /* out 4 */ - GPIO23_GPIO | MFP_LPM_DRIVE_LOW, /* out 5 */ - GPIO24_GPIO | MFP_LPM_DRIVE_LOW, /* out 6 */ - GPIO25_GPIO | MFP_LPM_DRIVE_LOW, /* out 7 */ - GPIO26_GPIO | MFP_LPM_DRIVE_LOW, /* out 8 */ - GPIO27_GPIO | MFP_LPM_DRIVE_LOW, /* out 9 */ - GPIO79_GPIO | MFP_LPM_DRIVE_LOW, /* out 10 */ - GPIO80_GPIO | MFP_LPM_DRIVE_LOW, /* out 11 */ - - /* PXA GPIO KEYS */ - GPIO7_GPIO | WAKEUP_ON_EDGE_BOTH, /* hotsync button on cradle */ - - /* MISC */ - GPIO1_RST, /* reset */ - GPIO2_GPIO, /* earphone detect */ - GPIO16_GPIO, /* backlight switch */ -}; - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data palmtc_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_power = GPIO_NR_PALMTC_SD_POWER, - .gpio_card_ro = GPIO_NR_PALMTC_SD_READONLY, - .gpio_card_detect = GPIO_NR_PALMTC_SD_DETECT_N, - .detect_delay_ms = 200, -}; - -static void __init palmtc_mmc_init(void) -{ - pxa_set_mci_info(&palmtc_mci_platform_data); -} -#else -static inline void palmtc_mmc_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button palmtc_pxa_buttons[] = { - {KEY_F8, GPIO_NR_PALMTC_HOTSYNC_BUTTON, 1, "HotSync Button", EV_KEY, 1}, -}; - -static struct gpio_keys_platform_data palmtc_pxa_keys_data = { - .buttons = palmtc_pxa_buttons, - .nbuttons = ARRAY_SIZE(palmtc_pxa_buttons), -}; - -static struct platform_device palmtc_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &palmtc_pxa_keys_data, - }, -}; - -static void __init palmtc_keys_init(void) -{ - platform_device_register(&palmtc_pxa_keys); -} -#else -static inline void palmtc_keys_init(void) {} -#endif - -/****************************************************************************** - * Backlight - ******************************************************************************/ -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -static int palmtc_backlight_init(struct device *dev) -{ - int ret; - - ret = gpio_request(GPIO_NR_PALMTC_BL_POWER, "BL POWER"); - if (ret) - goto err; - ret = gpio_direction_output(GPIO_NR_PALMTC_BL_POWER, 1); - if (ret) - goto err2; - - return 0; - -err2: - gpio_free(GPIO_NR_PALMTC_BL_POWER); -err: - return ret; -} - -static int palmtc_backlight_notify(struct device *dev, int brightness) -{ - /* backlight is on when GPIO16 AF0 is high */ - gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness); - return brightness; -} - -static void palmtc_backlight_exit(struct device *dev) -{ - gpio_free(GPIO_NR_PALMTC_BL_POWER); -} - -static struct platform_pwm_backlight_data palmtc_backlight_data = { - .pwm_id = 1, - .max_brightness = PALMTC_MAX_INTENSITY, - .dft_brightness = PALMTC_MAX_INTENSITY, - .pwm_period_ns = PALMTC_PERIOD_NS, - .init = palmtc_backlight_init, - .notify = palmtc_backlight_notify, - .exit = palmtc_backlight_exit, -}; - -static struct platform_device palmtc_backlight = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa25x_device_pwm1.dev, - .platform_data = &palmtc_backlight_data, - }, -}; - -static void __init palmtc_pwm_init(void) -{ - platform_device_register(&palmtc_backlight); -} -#else -static inline void palmtc_pwm_init(void) {} -#endif - -/****************************************************************************** - * IrDA - ******************************************************************************/ -#if defined(CONFIG_IRDA) || defined(CONFIG_IRDA_MODULE) -static struct pxaficp_platform_data palmtc_ficp_platform_data = { - .gpio_pwdown = GPIO_NR_PALMTC_IR_DISABLE, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -static void __init palmtc_irda_init(void) -{ - pxa_set_ficp_info(&palmtc_ficp_platform_data); -} -#else -static inline void palmtc_irda_init(void) {} -#endif - -/****************************************************************************** - * Keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE) -static const uint32_t palmtc_matrix_keys[] = { - KEY(0, 0, KEY_F1), - KEY(0, 1, KEY_X), - KEY(0, 2, KEY_POWER), - KEY(0, 3, KEY_TAB), - KEY(0, 4, KEY_A), - KEY(0, 5, KEY_Q), - KEY(0, 6, KEY_LEFTSHIFT), - KEY(0, 7, KEY_Z), - KEY(0, 8, KEY_S), - KEY(0, 9, KEY_W), - KEY(0, 10, KEY_E), - KEY(0, 11, KEY_UP), - - KEY(1, 0, KEY_F2), - KEY(1, 1, KEY_DOWN), - KEY(1, 3, KEY_D), - KEY(1, 4, KEY_C), - KEY(1, 5, KEY_F), - KEY(1, 6, KEY_R), - KEY(1, 7, KEY_SPACE), - KEY(1, 8, KEY_V), - KEY(1, 9, KEY_G), - KEY(1, 10, KEY_T), - KEY(1, 11, KEY_LEFT), - - KEY(2, 0, KEY_F3), - KEY(2, 1, KEY_LEFTCTRL), - KEY(2, 3, KEY_H), - KEY(2, 4, KEY_Y), - KEY(2, 5, KEY_N), - KEY(2, 6, KEY_J), - KEY(2, 7, KEY_U), - KEY(2, 8, KEY_M), - KEY(2, 9, KEY_K), - KEY(2, 10, KEY_I), - KEY(2, 11, KEY_RIGHT), - - KEY(3, 0, KEY_F4), - KEY(3, 1, KEY_ENTER), - KEY(3, 3, KEY_DOT), - KEY(3, 4, KEY_L), - KEY(3, 5, KEY_O), - KEY(3, 6, KEY_LEFTALT), - KEY(3, 7, KEY_ENTER), - KEY(3, 8, KEY_BACKSPACE), - KEY(3, 9, KEY_P), - KEY(3, 10, KEY_B), - KEY(3, 11, KEY_FN), -}; - -const struct matrix_keymap_data palmtc_keymap_data = { - .keymap = palmtc_matrix_keys, - .keymap_size = ARRAY_SIZE(palmtc_matrix_keys), -}; - -static const unsigned int palmtc_keypad_row_gpios[] = { - 0, 9, 10, 11 -}; - -static const unsigned int palmtc_keypad_col_gpios[] = { - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 79, 80 -}; - -static struct matrix_keypad_platform_data palmtc_keypad_platform_data = { - .keymap_data = &palmtc_keymap_data, - .row_gpios = palmtc_keypad_row_gpios, - .num_row_gpios = ARRAY_SIZE(palmtc_keypad_row_gpios), - .col_gpios = palmtc_keypad_col_gpios, - .num_col_gpios = ARRAY_SIZE(palmtc_keypad_col_gpios), - .active_low = 1, - - .debounce_ms = 20, - .col_scan_delay_us = 5, -}; - -static struct platform_device palmtc_keyboard = { - .name = "matrix-keypad", - .id = -1, - .dev = { - .platform_data = &palmtc_keypad_platform_data, - }, -}; -static void __init palmtc_mkp_init(void) -{ - platform_device_register(&palmtc_keyboard); -} -#else -static inline void palmtc_mkp_init(void) {} -#endif - -/****************************************************************************** - * UDC - ******************************************************************************/ -#if defined(CONFIG_USB_PXA25X)||defined(CONFIG_USB_PXA25X_MODULE) -static struct gpio_vbus_mach_info palmtc_udc_info = { - .gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N, - .gpio_vbus_inverted = 1, - .gpio_pullup = GPIO_NR_PALMTC_USB_POWER, -}; - -static struct platform_device palmtc_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &palmtc_udc_info, - }, -}; - -static void __init palmtc_udc_init(void) -{ - platform_device_register(&palmtc_gpio_vbus); -}; -#else -static inline void palmtc_udc_init(void) {} -#endif - -/****************************************************************************** - * Touchscreen / Battery / GPIO-extender - ******************************************************************************/ -#if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ - defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) -static struct platform_device palmtc_ucb1400_device = { - .name = "ucb1400_core", - .id = -1, -}; - -static void __init palmtc_ts_init(void) -{ - pxa_set_ac97_info(NULL); - platform_device_register(&palmtc_ucb1400_device); -} -#else -static inline void palmtc_ts_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -struct gpio_led palmtc_gpio_leds[] = { -{ - .name = "palmtc:green:user", - .default_trigger = "none", - .gpio = GPIO_NR_PALMTC_LED_POWER, - .active_low = 1, -}, { - .name = "palmtc:vibra:vibra", - .default_trigger = "none", - .gpio = GPIO_NR_PALMTC_VIBRA_POWER, - .active_low = 1, -} - -}; - -static struct gpio_led_platform_data palmtc_gpio_led_info = { - .leds = palmtc_gpio_leds, - .num_leds = ARRAY_SIZE(palmtc_gpio_leds), -}; - -static struct platform_device palmtc_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &palmtc_gpio_led_info, - } -}; - -static void __init palmtc_leds_init(void) -{ - platform_device_register(&palmtc_leds); -} -#else -static inline void palmtc_leds_init(void) {} -#endif - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct resource palmtc_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_16M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct mtd_partition palmtc_flash_parts[] = { - { - .name = "U-Boot Bootloader", - .offset = 0x0, - .size = 0x40000, - }, - { - .name = "Linux Kernel", - .offset = 0x40000, - .size = 0x2c0000, - }, - { - .name = "Filesystem", - .offset = 0x300000, - .size = 0xcc0000, - }, - { - .name = "U-Boot Environment", - .offset = 0xfc0000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data palmtc_flash_data = { - .width = 4, - .parts = palmtc_flash_parts, - .nr_parts = ARRAY_SIZE(palmtc_flash_parts), -}; - -static struct platform_device palmtc_flash = { - .name = "physmap-flash", - .id = -1, - .resource = &palmtc_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = &palmtc_flash_data, - }, -}; - -static void __init palmtc_nor_init(void) -{ - platform_device_register(&palmtc_flash); -} -#else -static inline void palmtc_nor_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info palmtc_lcd_modes[] = { - { - .pixclock = 115384, - .xres = 320, - .yres = 320, - .bpp = 16, - - .left_margin = 27, - .right_margin = 7, - .upper_margin = 7, - .lower_margin = 8, - - .hsync_len = 6, - .vsync_len = 1, - }, -}; - -static struct pxafb_mach_info palmtc_lcd_screen = { - .modes = palmtc_lcd_modes, - .num_modes = ARRAY_SIZE(palmtc_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static void __init palmtc_lcd_init(void) -{ - pxa_set_fb_info(NULL, &palmtc_lcd_screen); -} -#else -static inline void palmtc_lcd_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init palmtc_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtc_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_hwuart_info(NULL); - - palmtc_mmc_init(); - palmtc_keys_init(); - palmtc_pwm_init(); - palmtc_irda_init(); - palmtc_mkp_init(); - palmtc_udc_init(); - palmtc_ts_init(); - palmtc_nor_init(); - palmtc_lcd_init(); - palmtc_leds_init(); -}; - -MACHINE_START(PALMTC, "Palm Tungsten|C") - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmtc_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmte2.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmte2.c deleted file mode 100644 index c054827c..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmte2.c +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Hardware definitions for Palm Tungsten|E2 - * - * Author: - * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com> - * - * Rewrite for mainline: - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa25x.h> -#include <mach/audio.h> -#include <mach/palmte2.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <mach/udc.h> -#include <mach/palmasoc.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmte2_pin_config[] __initdata = { - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - GPIO10_GPIO, /* SD detect */ - GPIO55_GPIO, /* SD power */ - GPIO51_GPIO, /* SD r/o switch */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* USB */ - GPIO15_GPIO, /* usb detect */ - GPIO53_GPIO, /* usb power */ - - /* IrDA */ - GPIO48_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* GPIO KEYS */ - GPIO5_GPIO, /* notes */ - GPIO7_GPIO, /* tasks */ - GPIO11_GPIO, /* calendar */ - GPIO13_GPIO, /* contacts */ - GPIO14_GPIO, /* center */ - GPIO19_GPIO, /* left */ - GPIO20_GPIO, /* right */ - GPIO21_GPIO, /* down */ - GPIO22_GPIO, /* up */ - - /* MISC */ - GPIO1_RST, /* reset */ - GPIO4_GPIO, /* Hotsync button */ - GPIO9_GPIO, /* power detect */ - GPIO15_GPIO, /* earphone detect */ - GPIO37_GPIO, /* LCD power */ - GPIO56_GPIO, /* Backlight power */ -}; - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -static struct pxamci_platform_data palmte2_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_card_detect = GPIO_NR_PALMTE2_SD_DETECT_N, - .gpio_card_ro = GPIO_NR_PALMTE2_SD_READONLY, - .gpio_power = GPIO_NR_PALMTE2_SD_POWER, -}; - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -static struct gpio_keys_button palmte2_pxa_buttons[] = { - {KEY_F1, GPIO_NR_PALMTE2_KEY_CONTACTS, 1, "Contacts" }, - {KEY_F2, GPIO_NR_PALMTE2_KEY_CALENDAR, 1, "Calendar" }, - {KEY_F3, GPIO_NR_PALMTE2_KEY_TASKS, 1, "Tasks" }, - {KEY_F4, GPIO_NR_PALMTE2_KEY_NOTES, 1, "Notes" }, - {KEY_ENTER, GPIO_NR_PALMTE2_KEY_CENTER, 1, "Center" }, - {KEY_LEFT, GPIO_NR_PALMTE2_KEY_LEFT, 1, "Left" }, - {KEY_RIGHT, GPIO_NR_PALMTE2_KEY_RIGHT, 1, "Right" }, - {KEY_DOWN, GPIO_NR_PALMTE2_KEY_DOWN, 1, "Down" }, - {KEY_UP, GPIO_NR_PALMTE2_KEY_UP, 1, "Up" }, -}; - -static struct gpio_keys_platform_data palmte2_pxa_keys_data = { - .buttons = palmte2_pxa_buttons, - .nbuttons = ARRAY_SIZE(palmte2_pxa_buttons), -}; - -static struct platform_device palmte2_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &palmte2_pxa_keys_data, - }, -}; - -/****************************************************************************** - * Backlight - ******************************************************************************/ -static struct gpio palmte_bl_gpios[] = { - { GPIO_NR_PALMTE2_BL_POWER, GPIOF_INIT_LOW, "Backlight power" }, - { GPIO_NR_PALMTE2_LCD_POWER, GPIOF_INIT_LOW, "LCD power" }, -}; - -static int palmte2_backlight_init(struct device *dev) -{ - return gpio_request_array(ARRAY_AND_SIZE(palmte_bl_gpios)); -} - -static int palmte2_backlight_notify(struct device *dev, int brightness) -{ - gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness); - gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness); - return brightness; -} - -static void palmte2_backlight_exit(struct device *dev) -{ - gpio_free_array(ARRAY_AND_SIZE(palmte_bl_gpios)); -} - -static struct platform_pwm_backlight_data palmte2_backlight_data = { - .pwm_id = 0, - .max_brightness = PALMTE2_MAX_INTENSITY, - .dft_brightness = PALMTE2_MAX_INTENSITY, - .pwm_period_ns = PALMTE2_PERIOD_NS, - .init = palmte2_backlight_init, - .notify = palmte2_backlight_notify, - .exit = palmte2_backlight_exit, -}; - -static struct platform_device palmte2_backlight = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa25x_device_pwm0.dev, - .platform_data = &palmte2_backlight_data, - }, -}; - -/****************************************************************************** - * IrDA - ******************************************************************************/ -static struct pxaficp_platform_data palmte2_ficp_platform_data = { - .gpio_pwdown = GPIO_NR_PALMTE2_IR_DISABLE, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -/****************************************************************************** - * UDC - ******************************************************************************/ -static struct gpio_vbus_mach_info palmte2_udc_info = { - .gpio_vbus = GPIO_NR_PALMTE2_USB_DETECT_N, - .gpio_vbus_inverted = 1, - .gpio_pullup = GPIO_NR_PALMTE2_USB_PULLUP, -}; - -static struct platform_device palmte2_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &palmte2_udc_info, - }, -}; - -/****************************************************************************** - * Power supply - ******************************************************************************/ -static int power_supply_init(struct device *dev) -{ - int ret; - - ret = gpio_request(GPIO_NR_PALMTE2_POWER_DETECT, "CABLE_STATE_AC"); - if (ret) - goto err1; - ret = gpio_direction_input(GPIO_NR_PALMTE2_POWER_DETECT); - if (ret) - goto err2; - - return 0; - -err2: - gpio_free(GPIO_NR_PALMTE2_POWER_DETECT); -err1: - return ret; -} - -static int palmte2_is_ac_online(void) -{ - return gpio_get_value(GPIO_NR_PALMTE2_POWER_DETECT); -} - -static void power_supply_exit(struct device *dev) -{ - gpio_free(GPIO_NR_PALMTE2_POWER_DETECT); -} - -static char *palmte2_supplicants[] = { - "main-battery", -}; - -static struct pda_power_pdata power_supply_info = { - .init = power_supply_init, - .is_ac_online = palmte2_is_ac_online, - .exit = power_supply_exit, - .supplied_to = palmte2_supplicants, - .num_supplicants = ARRAY_SIZE(palmte2_supplicants), -}; - -static struct platform_device power_supply = { - .name = "pda-power", - .id = -1, - .dev = { - .platform_data = &power_supply_info, - }, -}; - -/****************************************************************************** - * WM97xx audio, battery - ******************************************************************************/ -static struct wm97xx_batt_pdata palmte2_batt_pdata = { - .batt_aux = WM97XX_AUX_ID3, - .temp_aux = WM97XX_AUX_ID2, - .charge_gpio = -1, - .max_voltage = PALMTE2_BAT_MAX_VOLTAGE, - .min_voltage = PALMTE2_BAT_MIN_VOLTAGE, - .batt_mult = 1000, - .batt_div = 414, - .temp_mult = 1, - .temp_div = 1, - .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO, - .batt_name = "main-batt", -}; - -static struct wm97xx_pdata palmte2_wm97xx_pdata = { - .batt_pdata = &palmte2_batt_pdata, -}; - -static pxa2xx_audio_ops_t palmte2_ac97_pdata = { - .codec_pdata = { &palmte2_wm97xx_pdata, }, -}; - -static struct palm27x_asoc_info palmte2_asoc_pdata = { - .jack_gpio = GPIO_NR_PALMTE2_EARPHONE_DETECT, -}; - -static struct platform_device palmte2_asoc = { - .name = "palm27x-asoc", - .id = -1, - .dev = { - .platform_data = &palmte2_asoc_pdata, - }, -}; - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -static struct pxafb_mode_info palmte2_lcd_modes[] = { -{ - .pixclock = 77757, - .xres = 320, - .yres = 320, - .bpp = 16, - - .left_margin = 28, - .right_margin = 7, - .upper_margin = 7, - .lower_margin = 5, - - .hsync_len = 4, - .vsync_len = 1, -}, -}; - -static struct pxafb_mach_info palmte2_lcd_screen = { - .modes = palmte2_lcd_modes, - .num_modes = ARRAY_SIZE(palmte2_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static struct platform_device *devices[] __initdata = { -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) - &palmte2_pxa_keys, -#endif - &palmte2_backlight, - &power_supply, - &palmte2_asoc, - &palmte2_gpio_vbus, -}; - -/* setup udc GPIOs initial state */ -static void __init palmte2_udc_init(void) -{ - if (!gpio_request(GPIO_NR_PALMTE2_USB_PULLUP, "UDC Vbus")) { - gpio_direction_output(GPIO_NR_PALMTE2_USB_PULLUP, 1); - gpio_free(GPIO_NR_PALMTE2_USB_PULLUP); - } -} - -static void __init palmte2_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa_set_fb_info(NULL, &palmte2_lcd_screen); - pxa_set_mci_info(&palmte2_mci_platform_data); - palmte2_udc_init(); - pxa_set_ac97_info(&palmte2_ac97_pdata); - pxa_set_ficp_info(&palmte2_ficp_platform_data); - - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -MACHINE_START(PALMTE2, "Palm Tungsten|E2") - .atag_offset = 0x100, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmte2_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtreo.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmtreo.c deleted file mode 100644 index fbdebee3..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtreo.c +++ /dev/null @@ -1,472 +0,0 @@ -/* - * Hardware definitions for Palm Treo smartphones - * - * currently supported: - * Palm Treo 680 (GSM) - * Palm Centro 685 (GSM) - * - * Author: Tomas Cech <sleep_walker@suse.cz> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/memblock.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/power_supply.h> -#include <linux/w1-gpio.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/pxa27x-udc.h> -#include <mach/audio.h> -#include <mach/palmtreo.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <plat/pxa27x_keypad.h> -#include <mach/udc.h> -#include <mach/ohci.h> -#include <mach/pxa2xx-regs.h> -#include <mach/palmasoc.h> -#include <mach/camera.h> -#include <mach/palm27x.h> - -#include <sound/pxa2xx-lib.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long treo_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO113_GPIO, /* SD detect */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - GPIO95_AC97_nRESET, - - /* IrDA */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* USB */ - GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, /* usb detect */ - - /* MATRIX KEYPAD */ - GPIO101_KP_MKIN_1, - GPIO102_KP_MKIN_2, - GPIO97_KP_MKIN_3, - GPIO98_KP_MKIN_4, - GPIO91_KP_MKIN_6, - GPIO13_KP_MKIN_7, - GPIO103_KP_MKOUT_0 | MFP_LPM_DRIVE_HIGH, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, - GPIO96_KP_MKOUT_6, - GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH, /* Hotsync button */ - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* Quick Capture Interface */ - GPIO84_CIF_FV, - GPIO85_CIF_LV, - GPIO53_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO81_CIF_DD_0, - GPIO55_CIF_DD_1, - GPIO51_CIF_DD_2, - GPIO50_CIF_DD_3, - GPIO52_CIF_DD_4, - GPIO48_CIF_DD_5, - GPIO17_CIF_DD_6, - GPIO12_CIF_DD_7, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* GSM */ - GPIO14_GPIO | WAKEUP_ON_EDGE_BOTH, /* GSM host wake up */ - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO39_FFUART_TXD, - GPIO41_FFUART_RTS, - - /* MISC. */ - GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* external power detect */ - GPIO15_GPIO | WAKEUP_ON_EDGE_BOTH, /* silent switch */ - GPIO116_GPIO, /* headphone detect */ - GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* bluetooth host wake up */ -}; - -#ifdef CONFIG_MACH_TREO680 -static unsigned long treo680_pin_config[] __initdata = { - GPIO33_GPIO, /* SD read only */ - - /* MATRIX KEYPAD - different wake up source */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO99_KP_MKIN_5, -}; -#endif /* CONFIG_MACH_TREO680 */ - -#ifdef CONFIG_MACH_CENTRO -static unsigned long centro685_pin_config[] __initdata = { - /* Bluetooth attached to BT UART*/ - MFP_CFG_OUT(GPIO80, AF0, DRIVE_LOW), /* power: LOW = off */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* MATRIX KEYPAD - different wake up source */ - GPIO100_KP_MKIN_0, - GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, -}; -#endif /* CONFIG_MACH_CENTRO */ - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int treo680_matrix_keys[] = { - KEY(0, 0, KEY_F8), /* Red/Off/Power */ - KEY(0, 1, KEY_LEFT), - KEY(0, 2, KEY_LEFTCTRL), /* Alternate */ - KEY(0, 3, KEY_L), - KEY(0, 4, KEY_A), - KEY(0, 5, KEY_Q), - KEY(0, 6, KEY_P), - - KEY(1, 0, KEY_RIGHTCTRL), /* Menu */ - KEY(1, 1, KEY_RIGHT), - KEY(1, 2, KEY_LEFTSHIFT), /* Left shift */ - KEY(1, 3, KEY_Z), - KEY(1, 4, KEY_S), - KEY(1, 5, KEY_W), - - KEY(2, 0, KEY_F1), /* Phone */ - KEY(2, 1, KEY_UP), - KEY(2, 2, KEY_0), - KEY(2, 3, KEY_X), - KEY(2, 4, KEY_D), - KEY(2, 5, KEY_E), - - KEY(3, 0, KEY_F10), /* Calendar */ - KEY(3, 1, KEY_DOWN), - KEY(3, 2, KEY_SPACE), - KEY(3, 3, KEY_C), - KEY(3, 4, KEY_F), - KEY(3, 5, KEY_R), - - KEY(4, 0, KEY_F12), /* Mail */ - KEY(4, 1, KEY_KPENTER), - KEY(4, 2, KEY_RIGHTALT), /* Alt */ - KEY(4, 3, KEY_V), - KEY(4, 4, KEY_G), - KEY(4, 5, KEY_T), - - KEY(5, 0, KEY_F9), /* Home */ - KEY(5, 1, KEY_PAGEUP), /* Side up */ - KEY(5, 2, KEY_DOT), - KEY(5, 3, KEY_B), - KEY(5, 4, KEY_H), - KEY(5, 5, KEY_Y), - - KEY(6, 0, KEY_TAB), /* Side Activate */ - KEY(6, 1, KEY_PAGEDOWN), /* Side down */ - KEY(6, 2, KEY_ENTER), - KEY(6, 3, KEY_N), - KEY(6, 4, KEY_J), - KEY(6, 5, KEY_U), - - KEY(7, 0, KEY_F6), /* Green/Call */ - KEY(7, 1, KEY_O), - KEY(7, 2, KEY_BACKSPACE), - KEY(7, 3, KEY_M), - KEY(7, 4, KEY_K), - KEY(7, 5, KEY_I), -}; - -static unsigned int centro_matrix_keys[] = { - KEY(0, 0, KEY_F9), /* Home */ - KEY(0, 1, KEY_LEFT), - KEY(0, 2, KEY_LEFTCTRL), /* Alternate */ - KEY(0, 3, KEY_L), - KEY(0, 4, KEY_A), - KEY(0, 5, KEY_Q), - KEY(0, 6, KEY_P), - - KEY(1, 0, KEY_RIGHTCTRL), /* Menu */ - KEY(1, 1, KEY_RIGHT), - KEY(1, 2, KEY_LEFTSHIFT), /* Left shift */ - KEY(1, 3, KEY_Z), - KEY(1, 4, KEY_S), - KEY(1, 5, KEY_W), - - KEY(2, 0, KEY_F1), /* Phone */ - KEY(2, 1, KEY_UP), - KEY(2, 2, KEY_0), - KEY(2, 3, KEY_X), - KEY(2, 4, KEY_D), - KEY(2, 5, KEY_E), - - KEY(3, 0, KEY_F10), /* Calendar */ - KEY(3, 1, KEY_DOWN), - KEY(3, 2, KEY_SPACE), - KEY(3, 3, KEY_C), - KEY(3, 4, KEY_F), - KEY(3, 5, KEY_R), - - KEY(4, 0, KEY_F12), /* Mail */ - KEY(4, 1, KEY_KPENTER), - KEY(4, 2, KEY_RIGHTALT), /* Alt */ - KEY(4, 3, KEY_V), - KEY(4, 4, KEY_G), - KEY(4, 5, KEY_T), - - KEY(5, 0, KEY_F8), /* Red/Off/Power */ - KEY(5, 1, KEY_PAGEUP), /* Side up */ - KEY(5, 2, KEY_DOT), - KEY(5, 3, KEY_B), - KEY(5, 4, KEY_H), - KEY(5, 5, KEY_Y), - - KEY(6, 0, KEY_TAB), /* Side Activate */ - KEY(6, 1, KEY_PAGEDOWN), /* Side down */ - KEY(6, 2, KEY_ENTER), - KEY(6, 3, KEY_N), - KEY(6, 4, KEY_J), - KEY(6, 5, KEY_U), - - KEY(7, 0, KEY_F6), /* Green/Call */ - KEY(7, 1, KEY_O), - KEY(7, 2, KEY_BACKSPACE), - KEY(7, 3, KEY_M), - KEY(7, 4, KEY_K), - KEY(7, 5, KEY_I), -}; - -static struct pxa27x_keypad_platform_data treo680_keypad_pdata = { - .matrix_key_rows = 8, - .matrix_key_cols = 7, - .matrix_key_map = treo680_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(treo680_matrix_keys), - .direct_key_map = { KEY_CONNECT }, - .direct_key_num = 1, - - .debounce_interval = 30, -}; - -static void __init palmtreo_kpc_init(void) -{ - static struct pxa27x_keypad_platform_data *data = &treo680_keypad_pdata; - - if (machine_is_centro()) { - data->matrix_key_map = centro_matrix_keys; - data->matrix_key_map_size = ARRAY_SIZE(centro_matrix_keys); - } - - pxa_set_keypad_info(&treo680_keypad_pdata); -} -#else -static inline void palmtreo_kpc_init(void) {} -#endif - -/****************************************************************************** - * USB host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static struct pxaohci_platform_data treo680_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT3, - .power_budget = 0, -}; - -static void __init palmtreo_uhc_init(void) -{ - if (machine_is_treo680()) - pxa_set_ohci_info(&treo680_ohci_info); -} -#else -static inline void palmtreo_uhc_init(void) {} -#endif - -/****************************************************************************** - * Vibra and LEDs - ******************************************************************************/ -#ifdef CONFIG_MACH_TREO680 -static struct gpio_led treo680_gpio_leds[] = { - { - .name = "treo680:vibra:vibra", - .default_trigger = "none", - .gpio = GPIO_NR_TREO680_VIBRATE_EN, - }, - { - .name = "treo680:green:led", - .default_trigger = "mmc0", - .gpio = GPIO_NR_TREO_GREEN_LED, - }, - { - .name = "treo680:white:keybbl", - .default_trigger = "none", - .gpio = GPIO_NR_TREO680_KEYB_BL, - }, -}; - -static struct gpio_led_platform_data treo680_gpio_led_info = { - .leds = treo680_gpio_leds, - .num_leds = ARRAY_SIZE(treo680_gpio_leds), -}; - -static struct gpio_led centro_gpio_leds[] = { - { - .name = "centro:vibra:vibra", - .default_trigger = "none", - .gpio = GPIO_NR_CENTRO_VIBRATE_EN, - }, - { - .name = "centro:green:led", - .default_trigger = "mmc0", - .gpio = GPIO_NR_TREO_GREEN_LED, - }, - { - .name = "centro:white:keybbl", - .default_trigger = "none", - .active_low = 1, - .gpio = GPIO_NR_CENTRO_KEYB_BL, - }, -}; - -static struct gpio_led_platform_data centro_gpio_led_info = { - .leds = centro_gpio_leds, - .num_leds = ARRAY_SIZE(centro_gpio_leds), -}; - -static struct platform_device palmtreo_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &treo680_gpio_led_info, - } -}; - -static void __init palmtreo_leds_init(void) -{ - if (machine_is_centro()) - palmtreo_leds.dev.platform_data = ¢ro_gpio_led_info; - - platform_device_register(&palmtreo_leds); -} -#else -static inline void palmtreo_leds_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init treo_reserve(void) -{ - memblock_reserve(0xa0000000, 0x1000); - memblock_reserve(0xa2000000, 0x1000); -} - -static void __init palmphone_common_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(treo_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - palm27x_pm_init(TREO_STR_BASE); - palm27x_lcd_init(GPIO_NR_TREO_BL_POWER, &palm_320x320_new_lcd_mode); - palm27x_udc_init(GPIO_NR_TREO_USB_DETECT, GPIO_NR_TREO_USB_PULLUP, 1); - palm27x_irda_init(GPIO_NR_TREO_IR_EN); - palm27x_ac97_init(-1, -1, -1, 95); - palm27x_pwm_init(GPIO_NR_TREO_BL_POWER, -1); - palm27x_power_init(GPIO_NR_TREO_POWER_DETECT, -1); - palm27x_pmic_init(); - palmtreo_kpc_init(); - palmtreo_uhc_init(); - palmtreo_leds_init(); -} - -#ifdef CONFIG_MACH_TREO680 -static void __init treo680_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config)); - palmphone_common_init(); - palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, GPIO_NR_TREO680_SD_READONLY, - GPIO_NR_TREO680_SD_POWER, 0); -} -#endif - -#ifdef CONFIG_MACH_CENTRO -static void __init centro_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(centro685_pin_config)); - palmphone_common_init(); - palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, -1, - GPIO_NR_CENTRO_SD_POWER, 1); -} -#endif - -#ifdef CONFIG_MACH_TREO680 -MACHINE_START(TREO680, "Palm Treo 680") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .reserve = treo_reserve, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = treo680_init, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_CENTRO -MACHINE_START(CENTRO, "Palm Centro 685") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .reserve = treo_reserve, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = centro_init, - .restart = pxa_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmtx.c deleted file mode 100644 index 9507605e..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmtx.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - * Hardware definitions for PalmTX - * - * Author: Marek Vasut <marek.vasut@gmail.com> - * - * Based on work of: - * Alex Osborne <ato@meshy.org> - * Cristiano P. <cristianop@users.sourceforge.net> - * Jan Herman <2hp@seznam.cz> - * Michal Hrusecky - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/physmap.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/palmtx.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <plat/pxa27x_keypad.h> -#include <mach/udc.h> -#include <mach/palmasoc.h> -#include <mach/palm27x.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmtx_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO14_GPIO, /* SD detect */ - GPIO114_GPIO, /* SD power */ - GPIO115_GPIO, /* SD r/o switch */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - GPIO95_AC97_nRESET, - - /* IrDA */ - GPIO40_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* USB */ - GPIO13_GPIO, /* usb detect */ - GPIO93_GPIO, /* usb power */ - - /* PCMCIA */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO79_PSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO94_GPIO, /* wifi power 1 */ - GPIO108_GPIO, /* wifi power 2 */ - GPIO116_GPIO, /* wifi ready */ - - /* MATRIX KEYPAD */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO39_FFUART_TXD, - - /* NAND */ - GPIO15_nCS_1, - GPIO18_RDY, - - /* MISC. */ - GPIO10_GPIO, /* hotsync button */ - GPIO12_GPIO, /* power detect */ - GPIO107_GPIO, /* earphone detect */ -}; - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition palmtx_partitions[] = { - { - .name = "Flash", - .offset = 0x00000000, - .size = MTDPART_SIZ_FULL, - .mask_flags = 0 - } -}; - -static struct physmap_flash_data palmtx_flash_data[] = { - { - .width = 2, /* bankwidth in bytes */ - .parts = palmtx_partitions, - .nr_parts = ARRAY_SIZE(palmtx_partitions) - } -}; - -static struct resource palmtx_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_8M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device palmtx_flash = { - .name = "physmap-flash", - .id = 0, - .resource = &palmtx_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = palmtx_flash_data, - }, -}; - -static void __init palmtx_nor_init(void) -{ - platform_device_register(&palmtx_flash); -} -#else -static inline void palmtx_nor_init(void) {} -#endif - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int palmtx_matrix_keys[] = { - KEY(0, 0, KEY_POWER), - KEY(0, 1, KEY_F1), - KEY(0, 2, KEY_ENTER), - - KEY(1, 0, KEY_F2), - KEY(1, 1, KEY_F3), - KEY(1, 2, KEY_F4), - - KEY(2, 0, KEY_UP), - KEY(2, 2, KEY_DOWN), - - KEY(3, 0, KEY_RIGHT), - KEY(3, 2, KEY_LEFT), -}; - -static struct pxa27x_keypad_platform_data palmtx_keypad_platform_data = { - .matrix_key_rows = 4, - .matrix_key_cols = 3, - .matrix_key_map = palmtx_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(palmtx_matrix_keys), - - .debounce_interval = 30, -}; - -static void __init palmtx_kpc_init(void) -{ - pxa_set_keypad_info(&palmtx_keypad_platform_data); -} -#else -static inline void palmtx_kpc_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button palmtx_pxa_buttons[] = { - {KEY_F8, GPIO_NR_PALMTX_HOTSYNC_BUTTON_N, 1, "HotSync Button" }, -}; - -static struct gpio_keys_platform_data palmtx_pxa_keys_data = { - .buttons = palmtx_pxa_buttons, - .nbuttons = ARRAY_SIZE(palmtx_pxa_buttons), -}; - -static struct platform_device palmtx_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &palmtx_pxa_keys_data, - }, -}; - -static void __init palmtx_keys_init(void) -{ - platform_device_register(&palmtx_pxa_keys); -} -#else -static inline void palmtx_keys_init(void) {} -#endif - -/****************************************************************************** - * NAND Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_NAND_PLATFORM) || \ - defined(CONFIG_MTD_NAND_PLATFORM_MODULE) -static void palmtx_nand_cmd_ctl(struct mtd_info *mtd, int cmd, - unsigned int ctrl) -{ - struct nand_chip *this = mtd->priv; - char __iomem *nandaddr = this->IO_ADDR_W; - - if (cmd == NAND_CMD_NONE) - return; - - if (ctrl & NAND_CLE) - writeb(cmd, PALMTX_NAND_CLE_VIRT); - else if (ctrl & NAND_ALE) - writeb(cmd, PALMTX_NAND_ALE_VIRT); - else - writeb(cmd, nandaddr); -} - -static struct mtd_partition palmtx_partition_info[] = { - [0] = { - .name = "palmtx-0", - .offset = 0, - .size = MTDPART_SIZ_FULL - }, -}; - -static const char *palmtx_part_probes[] = { "cmdlinepart", NULL }; - -struct platform_nand_data palmtx_nand_platdata = { - .chip = { - .nr_chips = 1, - .chip_offset = 0, - .nr_partitions = ARRAY_SIZE(palmtx_partition_info), - .partitions = palmtx_partition_info, - .chip_delay = 20, - .part_probe_types = palmtx_part_probes, - }, - .ctrl = { - .cmd_ctrl = palmtx_nand_cmd_ctl, - }, -}; - -static struct resource palmtx_nand_resource[] = { - [0] = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + SZ_1M - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device palmtx_nand = { - .name = "gen_nand", - .num_resources = ARRAY_SIZE(palmtx_nand_resource), - .resource = palmtx_nand_resource, - .id = -1, - .dev = { - .platform_data = &palmtx_nand_platdata, - } -}; - -static void __init palmtx_nand_init(void) -{ - platform_device_register(&palmtx_nand); -} -#else -static inline void palmtx_nand_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static struct map_desc palmtx_io_desc[] __initdata = { -{ - .virtual = (unsigned long)PALMTX_PCMCIA_VIRT, - .pfn = __phys_to_pfn(PALMTX_PCMCIA_PHYS), - .length = PALMTX_PCMCIA_SIZE, - .type = MT_DEVICE, -}, { - .virtual = (unsigned long)PALMTX_NAND_ALE_VIRT, - .pfn = __phys_to_pfn(PALMTX_NAND_ALE_PHYS), - .length = SZ_1M, - .type = MT_DEVICE, -}, { - .virtual = (unsigned long)PALMTX_NAND_CLE_VIRT, - .pfn = __phys_to_pfn(PALMTX_NAND_CLE_PHYS), - .length = SZ_1M, - .type = MT_DEVICE, -} -}; - -static void __init palmtx_map_io(void) -{ - pxa27x_map_io(); - iotable_init(palmtx_io_desc, ARRAY_SIZE(palmtx_io_desc)); -} - -static void __init palmtx_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - palm27x_mmc_init(GPIO_NR_PALMTX_SD_DETECT_N, GPIO_NR_PALMTX_SD_READONLY, - GPIO_NR_PALMTX_SD_POWER, 0); - palm27x_pm_init(PALMTX_STR_BASE); - palm27x_lcd_init(-1, &palm_320x480_lcd_mode); - palm27x_udc_init(GPIO_NR_PALMTX_USB_DETECT_N, - GPIO_NR_PALMTX_USB_PULLUP, 1); - palm27x_irda_init(GPIO_NR_PALMTX_IR_DISABLE); - palm27x_ac97_init(PALMTX_BAT_MIN_VOLTAGE, PALMTX_BAT_MAX_VOLTAGE, - GPIO_NR_PALMTX_EARPHONE_DETECT, 95); - palm27x_pwm_init(GPIO_NR_PALMTX_BL_POWER, GPIO_NR_PALMTX_LCD_POWER); - palm27x_power_init(GPIO_NR_PALMTX_POWER_DETECT, -1); - palm27x_pmic_init(); - palmtx_kpc_init(); - palmtx_keys_init(); - palmtx_nor_init(); - palmtx_nand_init(); -} - -MACHINE_START(PALMTX, "Palm T|X") - .atag_offset = 0x100, - .map_io = palmtx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmtx_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/palmz72.c b/ANDROID_3.4.5/arch/arm/mach-pxa/palmz72.c deleted file mode 100644 index a97b5996..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/palmz72.c +++ /dev/null @@ -1,410 +0,0 @@ -/* - * Hardware definitions for Palm Zire72 - * - * Authors: - * Vladimir "Farcaller" Pouzanov <farcaller@gmail.com> - * Sergey Lapin <slapin@ossfans.org> - * Alex Osborne <bobofdoom@gmail.com> - * Jan Herman <2hp@seznam.cz> - * - * Rewrite for mainline: - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * (find more info at www.hackndev.com) - * - */ - -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/pda_power.h> -#include <linux/pwm_backlight.h> -#include <linux/gpio.h> -#include <linux/wm97xx.h> -#include <linux/power_supply.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/i2c-gpio.h> - -#include <asm/mach-types.h> -#include <asm/suspend.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/palmz72.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/irda.h> -#include <plat/pxa27x_keypad.h> -#include <mach/udc.h> -#include <mach/palmasoc.h> -#include <mach/palm27x.h> - -#include <mach/pm.h> -#include <mach/camera.h> - -#include <media/soc_camera.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long palmz72_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO14_GPIO, /* SD detect */ - GPIO115_GPIO, /* SD RO */ - GPIO98_GPIO, /* SD power */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO89_AC97_SYSCLK, - GPIO113_AC97_nRESET, - - /* IrDA */ - GPIO49_GPIO, /* ir disable */ - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, - - /* PWM */ - GPIO16_PWM0_OUT, - - /* USB */ - GPIO15_GPIO, /* usb detect */ - GPIO95_GPIO, /* usb pullup */ - - /* Matrix keypad */ - GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, - GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, - GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, - GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - GPIO20_GPIO, /* bl power */ - GPIO21_GPIO, /* LCD border switch */ - GPIO22_GPIO, /* LCD border color */ - GPIO96_GPIO, /* lcd power */ - - /* PXA Camera */ - GPIO81_CIF_DD_0, - GPIO48_CIF_DD_5, - GPIO50_CIF_DD_3, - GPIO51_CIF_DD_2, - GPIO52_CIF_DD_4, - GPIO53_CIF_MCLK, - GPIO54_CIF_PCLK, - GPIO55_CIF_DD_1, - GPIO84_CIF_FV, - GPIO85_CIF_LV, - GPIO93_CIF_DD_6, - GPIO108_CIF_DD_7, - - GPIO56_GPIO, /* OV9640 Powerdown */ - GPIO57_GPIO, /* OV9640 Reset */ - GPIO91_GPIO, /* OV9640 Power */ - - /* I2C */ - GPIO117_GPIO, /* I2C_SCL */ - GPIO118_GPIO, /* I2C_SDA */ - - /* Misc. */ - GPIO0_GPIO | WAKEUP_ON_LEVEL_HIGH, /* power detect */ - GPIO88_GPIO, /* green led */ - GPIO27_GPIO, /* WM9712 IRQ */ -}; - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int palmz72_matrix_keys[] = { - KEY(0, 0, KEY_POWER), - KEY(0, 1, KEY_F1), - KEY(0, 2, KEY_ENTER), - - KEY(1, 0, KEY_F2), - KEY(1, 1, KEY_F3), - KEY(1, 2, KEY_F4), - - KEY(2, 0, KEY_UP), - KEY(2, 2, KEY_DOWN), - - KEY(3, 0, KEY_RIGHT), - KEY(3, 2, KEY_LEFT), -}; - -static struct pxa27x_keypad_platform_data palmz72_keypad_platform_data = { - .matrix_key_rows = 4, - .matrix_key_cols = 3, - .matrix_key_map = palmz72_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(palmz72_matrix_keys), - - .debounce_interval = 30, -}; - -static void __init palmz72_kpc_init(void) -{ - pxa_set_keypad_info(&palmz72_keypad_platform_data); -} -#else -static inline void palmz72_kpc_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static struct gpio_led gpio_leds[] = { - { - .name = "palmz72:green:led", - .default_trigger = "none", - .gpio = GPIO_NR_PALMZ72_LED_GREEN, - }, -}; - -static struct gpio_led_platform_data gpio_led_info = { - .leds = gpio_leds, - .num_leds = ARRAY_SIZE(gpio_leds), -}; - -static struct platform_device palmz72_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &gpio_led_info, - } -}; - -static void __init palmz72_leds_init(void) -{ - platform_device_register(&palmz72_leds); -} -#else -static inline void palmz72_leds_init(void) {} -#endif - -#ifdef CONFIG_PM - -/* We have some black magic here - * PalmOS ROM on recover expects special struct physical address - * to be transferred via PSPR. Using this struct PalmOS restores - * its state after sleep. As for Linux, we need to setup it the - * same way. More than that, PalmOS ROM changes some values in memory. - * For now only one location is found, which needs special treatment. - * Thanks to Alex Osborne, Andrzej Zaborowski, and lots of other people - * for reading backtraces for me :) - */ - -#define PALMZ72_SAVE_DWORD ((unsigned long *)0xc0000050) - -static struct palmz72_resume_info palmz72_resume_info = { - .magic0 = 0xb4e6, - .magic1 = 1, - - /* reset state, MMU off etc */ - .arm_control = 0, - .aux_control = 0, - .ttb = 0, - .domain_access = 0, - .process_id = 0, -}; - -static unsigned long store_ptr; - -/* syscore_ops for Palm Zire 72 PM */ - -static int palmz72_pm_suspend(void) -{ - /* setup the resume_info struct for the original bootloader */ - palmz72_resume_info.resume_addr = (u32) cpu_resume; - - /* Storing memory touched by ROM */ - store_ptr = *PALMZ72_SAVE_DWORD; - - /* Setting PSPR to a proper value */ - PSPR = virt_to_phys(&palmz72_resume_info); - - return 0; -} - -static void palmz72_pm_resume(void) -{ - *PALMZ72_SAVE_DWORD = store_ptr; -} - -static struct syscore_ops palmz72_pm_syscore_ops = { - .suspend = palmz72_pm_suspend, - .resume = palmz72_pm_resume, -}; - -static int __init palmz72_pm_init(void) -{ - if (machine_is_palmz72()) { - register_syscore_ops(&palmz72_pm_syscore_ops); - return 0; - } - return -ENODEV; -} - -device_initcall(palmz72_pm_init); -#endif - -/****************************************************************************** - * SoC Camera - ******************************************************************************/ -#if defined(CONFIG_SOC_CAMERA_OV9640) || \ - defined(CONFIG_SOC_CAMERA_OV9640_MODULE) -static struct pxacamera_platform_data palmz72_pxacamera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN, - .mclk_10khz = 2600, -}; - -/* Board I2C devices. */ -static struct i2c_board_info palmz72_i2c_device[] = { - { - I2C_BOARD_INFO("ov9640", 0x30), - } -}; - -static int palmz72_camera_power(struct device *dev, int power) -{ - gpio_set_value(GPIO_NR_PALMZ72_CAM_PWDN, !power); - mdelay(50); - return 0; -} - -static int palmz72_camera_reset(struct device *dev) -{ - gpio_set_value(GPIO_NR_PALMZ72_CAM_RESET, 1); - mdelay(50); - gpio_set_value(GPIO_NR_PALMZ72_CAM_RESET, 0); - mdelay(50); - return 0; -} - -static struct soc_camera_link palmz72_iclink = { - .bus_id = 0, /* Match id in pxa27x_device_camera in device.c */ - .board_info = &palmz72_i2c_device[0], - .i2c_adapter_id = 0, - .module_name = "ov96xx", - .power = &palmz72_camera_power, - .reset = &palmz72_camera_reset, - .flags = SOCAM_DATAWIDTH_8, -}; - -static struct i2c_gpio_platform_data palmz72_i2c_bus_data = { - .sda_pin = 118, - .scl_pin = 117, - .udelay = 10, - .timeout = 100, -}; - -static struct platform_device palmz72_i2c_bus_device = { - .name = "i2c-gpio", - .id = 0, /* we use this as a replacement for i2c-pxa */ - .dev = { - .platform_data = &palmz72_i2c_bus_data, - } -}; - -static struct platform_device palmz72_camera = { - .name = "soc-camera-pdrv", - .id = -1, - .dev = { - .platform_data = &palmz72_iclink, - }, -}; - -/* Here we request the camera GPIOs and configure them. We power up the camera - * module, deassert the reset pin, but put it into powerdown (low to no power - * consumption) mode. This allows us to later bring the module up fast. */ -static struct gpio palmz72_camera_gpios[] = { - { GPIO_NR_PALMZ72_CAM_POWER, GPIOF_INIT_HIGH,"Camera DVDD" }, - { GPIO_NR_PALMZ72_CAM_RESET, GPIOF_INIT_LOW, "Camera RESET" }, - { GPIO_NR_PALMZ72_CAM_PWDN, GPIOF_INIT_LOW, "Camera PWDN" }, -}; - -static inline void __init palmz72_cam_gpio_init(void) -{ - int ret; - - ret = gpio_request_array(ARRAY_AND_SIZE(palmz72_camera_gpios)); - if (!ret) - gpio_free_array(ARRAY_AND_SIZE(palmz72_camera_gpios)); - else - printk(KERN_ERR "Camera GPIO init failed!\n"); - - return; -} - -static void __init palmz72_camera_init(void) -{ - palmz72_cam_gpio_init(); - pxa_set_camera_info(&palmz72_pxacamera_platform_data); - platform_device_register(&palmz72_i2c_bus_device); - platform_device_register(&palmz72_camera); -} -#else -static inline void palmz72_camera_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init palmz72_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - palm27x_mmc_init(GPIO_NR_PALMZ72_SD_DETECT_N, GPIO_NR_PALMZ72_SD_RO, - GPIO_NR_PALMZ72_SD_POWER_N, 1); - palm27x_lcd_init(-1, &palm_320x320_lcd_mode); - palm27x_udc_init(GPIO_NR_PALMZ72_USB_DETECT_N, - GPIO_NR_PALMZ72_USB_PULLUP, 0); - palm27x_irda_init(GPIO_NR_PALMZ72_IR_DISABLE); - palm27x_ac97_init(PALMZ72_BAT_MIN_VOLTAGE, PALMZ72_BAT_MAX_VOLTAGE, - -1, 113); - palm27x_pwm_init(-1, -1); - palm27x_power_init(-1, -1); - palm27x_pmic_init(); - palmz72_kpc_init(); - palmz72_leds_init(); - palmz72_camera_init(); -} - -MACHINE_START(PALMZ72, "Palm Zire72") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = palmz72_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pcm027.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pcm027.c deleted file mode 100644 index fe905443..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pcm027.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pcm027.c - * Support for the Phytec phyCORE-PXA270 CPU card (aka PCM-027). - * - * Refer - * http://www.phytec.com/products/sbc/ARM-XScale/phyCORE-XScale-PXA270.html - * for additional hardware info - * - * Author: Juergen Kilb - * Created: April 05, 2005 - * Copyright: Phytec Messtechnik GmbH - * e-Mail: armlinux@phytec.de - * - * based on Intel Mainstone Board - * - * Copyright 2007 Juergen Beisert @ Pengutronix (j.beisert@pengutronix.de) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/spi/spi.h> -#include <linux/spi/max7301.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/leds.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <mach/pxa27x.h> -#include <mach/pcm027.h> -#include "generic.h" - -/* - * ABSTRACT: - * - * The PXA270 processor comes with a bunch of hardware on its silicon. - * Not all of this hardware can be used at the same time and not all - * is routed to module's connectors. Also it depends on the baseboard, what - * kind of hardware can be used in which way. - * -> So this file supports the main devices on the CPU card only! - * Refer pcm990-baseboard.c how to extend this features to get a full - * blown system with many common interfaces. - * - * The PCM-027 supports the following interfaces through its connectors and - * will be used in pcm990-baseboard.c: - * - * - LCD support - * - MMC support - * - IDE/CF card - * - FFUART - * - BTUART - * - IRUART - * - AC97 - * - SSP - * - SSP3 - * - * Claimed GPIOs: - * GPIO0 -> IRQ input from RTC - * GPIO2 -> SYS_ENA*) - * GPIO3 -> PWR_SCL - * GPIO4 -> PWR_SDA - * GPIO5 -> PowerCap0*) - * GPIO6 -> PowerCap1*) - * GPIO7 -> PowerCap2*) - * GPIO8 -> PowerCap3*) - * GPIO15 -> /CS1 - * GPIO20 -> /CS2 - * GPIO21 -> /CS3 - * GPIO33 -> /CS5 network controller select - * GPIO52 -> IRQ from network controller - * GPIO78 -> /CS2 - * GPIO80 -> /CS4 - * GPIO90 -> LED0 - * GPIO91 -> LED1 - * GPIO114 -> IRQ from CAN controller - * GPIO117 -> SCL - * GPIO118 -> SDA - * - * *) CPU internal use only - */ - -static unsigned long pcm027_pin_config[] __initdata = { - /* Chip Selects */ - GPIO20_nSDCS_2, - GPIO21_nSDCS_3, - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO80_nCS_4, - GPIO33_nCS_5, /* Ethernet */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* GPIO */ - GPIO52_GPIO, /* IRQ from network controller */ -#ifdef CONFIG_LEDS_GPIO - GPIO90_GPIO, /* PCM027_LED_CPU */ - GPIO91_GPIO, /* PCM027_LED_HEART_BEAT */ -#endif - GPIO114_GPIO, /* IRQ from CAN controller */ -}; - -/* - * SMC91x network controller specific stuff - */ -static struct resource smc91x_resources[] = { - [0] = { - .start = PCM027_ETH_PHYS + 0x300, - .end = PCM027_ETH_PHYS + PCM027_ETH_SIZE, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PCM027_ETH_IRQ, - .end = PCM027_ETH_IRQ, - /* note: smc91x's driver doesn't use the trigger bits yet */ - .flags = IORESOURCE_IRQ | PCM027_ETH_IRQ_EDGE, - } -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, -}; - -/* - * SPI host and devices - */ -static struct pxa2xx_spi_master pxa_ssp_master_info = { - .num_chipselect = 1, -}; - -static struct max7301_platform_data max7301_info = { - .base = -1, -}; - -/* bus_num must match id in pxa2xx_set_spi_info() call */ -static struct spi_board_info spi_board_info[] __initdata = { - { - .modalias = "max7301", - .platform_data = &max7301_info, - .max_speed_hz = 13000000, - .bus_num = 1, - .chip_select = 0, - .mode = SPI_MODE_0, - }, -}; - -/* - * NOR flash - */ -static struct physmap_flash_data pcm027_flash_data = { - .width = 4, -}; - -static struct resource pcm027_flash_resource = { - .start = PCM027_FLASH_PHYS, - .end = PCM027_FLASH_PHYS + PCM027_FLASH_SIZE - 1 , - .flags = IORESOURCE_MEM, -}; - -static struct platform_device pcm027_flash = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = &pcm027_flash_data, - }, - .resource = &pcm027_flash_resource, - .num_resources = 1, -}; - -#ifdef CONFIG_LEDS_GPIO - -static struct gpio_led pcm027_led[] = { - { - .name = "led0:red", /* FIXME */ - .gpio = PCM027_LED_CPU - }, - { - .name = "led1:green", /* FIXME */ - .gpio = PCM027_LED_HEARD_BEAT - }, -}; - -static struct gpio_led_platform_data pcm027_led_data = { - .num_leds = ARRAY_SIZE(pcm027_led), - .leds = pcm027_led -}; - -static struct platform_device pcm027_led_dev = { - .name = "leds-gpio", - .id = 0, - .dev = { - .platform_data = &pcm027_led_data, - }, -}; - -#endif /* CONFIG_LEDS_GPIO */ - -/* - * declare the available device resources on this board - */ -static struct platform_device *devices[] __initdata = { - &smc91x_device, - &pcm027_flash, -#ifdef CONFIG_LEDS_GPIO - &pcm027_led_dev -#endif -}; - -/* - * pcm027_init - breath some life into the board - */ -static void __init pcm027_init(void) -{ - /* system bus arbiter setting - * - Core_Park - * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4 - */ - ARB_CNTRL = ARB_CORE_PARK | 0x234; - - pxa2xx_mfp_config(pcm027_pin_config, ARRAY_SIZE(pcm027_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_add_devices(devices, ARRAY_SIZE(devices)); - - /* at last call the baseboard to initialize itself */ -#ifdef CONFIG_MACH_PCM990_BASEBOARD - pcm990_baseboard_init(); -#endif - - pxa2xx_set_spi_info(1, &pxa_ssp_master_info); - spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); -} - -static void __init pcm027_map_io(void) -{ - pxa27x_map_io(); - - /* initialize sleep mode regs (wake-up sources, etc) */ - PGSR0 = 0x01308000; - PGSR1 = 0x00CF0002; - PGSR2 = 0x0E294000; - PGSR3 = 0x0000C000; - PWER = 0x40000000 | PWER_GPIO0 | PWER_GPIO1; - PRER = 0x00000000; - PFER = 0x00000003; -} - -MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270") - /* Maintainer: Pengutronix */ - .atag_offset = 0x100, - .map_io = pcm027_map_io, - .nr_irqs = PCM027_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = pcm027_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pcm990-baseboard.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pcm990-baseboard.c deleted file mode 100644 index abab4e2b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pcm990-baseboard.c +++ /dev/null @@ -1,541 +0,0 @@ -/* - * arch/arm/mach-pxa/pcm990-baseboard.c - * Support for the Phytec phyCORE-PXA270 Development Platform (PCM-990). - * - * Refer - * http://www.phytec.com/products/rdk/ARM-XScale/phyCORE-XScale-PXA270.html - * for additional hardware info - * - * Author: Juergen Kilb - * Created: April 05, 2005 - * Copyright: Phytec Messtechnik GmbH - * e-Mail: armlinux@phytec.de - * - * based on Intel Mainstone Board - * - * Copyright 2007 Juergen Beisert @ Pengutronix (j.beisert@pengutronix.de) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/pwm_backlight.h> - -#include <media/soc_camera.h> - -#include <mach/camera.h> -#include <asm/mach/map.h> -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/pcm990_baseboard.h> -#include <mach/pxafb.h> - -#include "devices.h" -#include "generic.h" - -static unsigned long pcm990_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - /* USB */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - /* PWM0 */ - GPIO16_PWM0_OUT, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, -}; - -/* - * pcm990_lcd_power - control power supply to the LCD - * @on: 0 = switch off, 1 = switch on - * - * Called by the pxafb driver - */ -#ifndef CONFIG_PCM990_DISPLAY_NONE -static void pcm990_lcd_power(int on, struct fb_var_screeninfo *var) -{ - if (on) { - /* enable LCD-Latches - * power on LCD - */ - __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) = - PCM990_CTRL_LCDPWR + PCM990_CTRL_LCDON; - } else { - /* disable LCD-Latches - * power off LCD - */ - __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) = 0x00; - } -} -#endif - -#if defined(CONFIG_PCM990_DISPLAY_SHARP) -static struct pxafb_mode_info fb_info_sharp_lq084v1dg21 = { - .pixclock = 28000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 20, - .left_margin = 103, - .right_margin = 47, - .vsync_len = 6, - .upper_margin = 28, - .lower_margin = 5, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info pcm990_fbinfo __initdata = { - .modes = &fb_info_sharp_lq084v1dg21, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = pcm990_lcd_power, -}; -#elif defined(CONFIG_PCM990_DISPLAY_NEC) -struct pxafb_mode_info fb_info_nec_nl6448bc20_18d = { - .pixclock = 39720, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 32, - .left_margin = 16, - .right_margin = 48, - .vsync_len = 2, - .upper_margin = 12, - .lower_margin = 17, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info pcm990_fbinfo __initdata = { - .modes = &fb_info_nec_nl6448bc20_18d, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = pcm990_lcd_power, -}; -#endif - -static struct platform_pwm_backlight_data pcm990_backlight_data = { - .pwm_id = 0, - .max_brightness = 1023, - .dft_brightness = 1023, - .pwm_period_ns = 78770, -}; - -static struct platform_device pcm990_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &pcm990_backlight_data, - }, -}; - -/* - * The PCM-990 development baseboard uses PCM-027's hardware in the - * following way: - * - * - LCD support is in use - * - GPIO16 is output for back light on/off with PWM - * - GPIO58 ... GPIO73 are outputs for display data - * - GPIO74 is output output for LCDFCLK - * - GPIO75 is output for LCDLCLK - * - GPIO76 is output for LCDPCLK - * - GPIO77 is output for LCDBIAS - * - MMC support is in use - * - GPIO32 is output for MMCCLK - * - GPIO92 is MMDAT0 - * - GPIO109 is MMDAT1 - * - GPIO110 is MMCS0 - * - GPIO111 is MMCS1 - * - GPIO112 is MMCMD - * - IDE/CF card is in use - * - GPIO48 is output /POE - * - GPIO49 is output /PWE - * - GPIO50 is output /PIOR - * - GPIO51 is output /PIOW - * - GPIO54 is output /PCE2 - * - GPIO55 is output /PREG - * - GPIO56 is input /PWAIT - * - GPIO57 is output /PIOS16 - * - GPIO79 is output PSKTSEL - * - GPIO85 is output /PCE1 - * - FFUART is in use - * - GPIO34 is input FFRXD - * - GPIO35 is input FFCTS - * - GPIO36 is input FFDCD - * - GPIO37 is input FFDSR - * - GPIO38 is input FFRI - * - GPIO39 is output FFTXD - * - GPIO40 is output FFDTR - * - GPIO41 is output FFRTS - * - BTUART is in use - * - GPIO42 is input BTRXD - * - GPIO43 is output BTTXD - * - GPIO44 is input BTCTS - * - GPIO45 is output BTRTS - * - IRUART is in use - * - GPIO46 is input STDRXD - * - GPIO47 is output STDTXD - * - AC97 is in use*) - * - GPIO28 is input AC97CLK - * - GPIO29 is input AC97DatIn - * - GPIO30 is output AC97DatO - * - GPIO31 is output AC97SYNC - * - GPIO113 is output AC97_RESET - * - SSP is in use - * - GPIO23 is output SSPSCLK - * - GPIO24 is output chip select to Max7301 - * - GPIO25 is output SSPTXD - * - GPIO26 is input SSPRXD - * - GPIO27 is input for Max7301 IRQ - * - GPIO53 is input SSPSYSCLK - * - SSP3 is in use - * - GPIO81 is output SSPTXD3 - * - GPIO82 is input SSPRXD3 - * - GPIO83 is output SSPSFRM - * - GPIO84 is output SSPCLK3 - * - * Otherwise claimed GPIOs: - * GPIO1 -> IRQ from user switch - * GPIO9 -> IRQ from power management - * GPIO10 -> IRQ from WML9712 AC97 controller - * GPIO11 -> IRQ from IDE controller - * GPIO12 -> IRQ from CF controller - * GPIO13 -> IRQ from CF controller - * GPIO14 -> GPIO free - * GPIO15 -> /CS1 selects baseboard's Control CPLD (U7, 16 bit wide data path) - * GPIO19 -> GPIO free - * GPIO20 -> /SDCS2 - * GPIO21 -> /CS3 PC card socket select - * GPIO33 -> /CS5 network controller select - * GPIO78 -> /CS2 (16 bit wide data path) - * GPIO80 -> /CS4 (16 bit wide data path) - * GPIO86 -> GPIO free - * GPIO87 -> GPIO free - * GPIO90 -> LED0 on CPU module - * GPIO91 -> LED1 on CPI module - * GPIO117 -> SCL - * GPIO118 -> SDA - */ - -static unsigned long pcm990_irq_enabled; - -static void pcm990_mask_ack_irq(struct irq_data *d) -{ - int pcm990_irq = (d->irq - PCM027_IRQ(0)); - PCM990_INTMSKENA = (pcm990_irq_enabled &= ~(1 << pcm990_irq)); -} - -static void pcm990_unmask_irq(struct irq_data *d) -{ - int pcm990_irq = (d->irq - PCM027_IRQ(0)); - /* the irq can be acknowledged only if deasserted, so it's done here */ - PCM990_INTSETCLR |= 1 << pcm990_irq; - PCM990_INTMSKENA = (pcm990_irq_enabled |= (1 << pcm990_irq)); -} - -static struct irq_chip pcm990_irq_chip = { - .irq_mask_ack = pcm990_mask_ack_irq, - .irq_unmask = pcm990_unmask_irq, -}; - -static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled; - - do { - /* clear our parent IRQ */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - if (likely(pending)) { - irq = PCM027_IRQ(0) + __ffs(pending); - generic_handle_irq(irq); - } - pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled; - } while (pending); -} - -static void __init pcm990_init_irq(void) -{ - int irq; - - /* setup extra PCM990 irqs */ - for (irq = PCM027_IRQ(0); irq <= PCM027_IRQ(3); irq++) { - irq_set_chip_and_handler(irq, &pcm990_irq_chip, - handle_level_irq); - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); - } - - PCM990_INTMSKENA = 0x00; /* disable all Interrupts */ - PCM990_INTSETCLR = 0xFF; - - irq_set_chained_handler(PCM990_CTRL_INT_IRQ, pcm990_irq_handler); - irq_set_irq_type(PCM990_CTRL_INT_IRQ, PCM990_CTRL_INT_IRQ_EDGE); -} - -static int pcm990_mci_init(struct device *dev, irq_handler_t mci_detect_int, - void *data) -{ - int err; - - err = request_irq(PCM027_MMCDET_IRQ, mci_detect_int, IRQF_DISABLED, - "MMC card detect", data); - if (err) - printk(KERN_ERR "pcm990_mci_init: MMC/SD: can't request MMC " - "card detect IRQ\n"); - - return err; -} - -static void pcm990_mci_setpower(struct device *dev, unsigned int vdd) -{ - struct pxamci_platform_data *p_d = dev->platform_data; - - if ((1 << vdd) & p_d->ocr_mask) - __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG5) = - PCM990_CTRL_MMC2PWR; - else - __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG5) = - ~PCM990_CTRL_MMC2PWR; -} - -static void pcm990_mci_exit(struct device *dev, void *data) -{ - free_irq(PCM027_MMCDET_IRQ, data); -} - -#define MSECS_PER_JIFFY (1000/HZ) - -static struct pxamci_platform_data pcm990_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .init = pcm990_mci_init, - .setpower = pcm990_mci_setpower, - .exit = pcm990_mci_exit, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static struct pxaohci_platform_data pcm990_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | POWER_CONTROL_LOW | POWER_SENSE_LOW, - .power_on_delay = 10, -}; - -/* - * PXA27x Camera specific stuff - */ -#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE) -static unsigned long pcm990_camera_pin_config[] = { - /* CIF */ - GPIO98_CIF_DD_0, - GPIO105_CIF_DD_1, - GPIO104_CIF_DD_2, - GPIO103_CIF_DD_3, - GPIO95_CIF_DD_4, - GPIO94_CIF_DD_5, - GPIO93_CIF_DD_6, - GPIO108_CIF_DD_7, - GPIO107_CIF_DD_8, - GPIO106_CIF_DD_9, - GPIO42_CIF_MCLK, - GPIO45_CIF_PCLK, - GPIO43_CIF_FV, - GPIO44_CIF_LV, -}; - -/* - * CICR4: PCLK_EN: Pixel clock is supplied by the sensor - * MCLK_EN: Master clock is generated by PXA - * PCP: Data sampled on the falling edge of pixel clock - */ -struct pxacamera_platform_data pcm990_pxacamera_platform_data = { - .flags = PXA_CAMERA_MASTER | PXA_CAMERA_DATAWIDTH_8 | PXA_CAMERA_DATAWIDTH_10 | - PXA_CAMERA_PCLK_EN | PXA_CAMERA_MCLK_EN/* | PXA_CAMERA_PCP*/, - .mclk_10khz = 1000, -}; - -#include <linux/i2c/pca953x.h> - -static struct pca953x_platform_data pca9536_data = { - .gpio_base = PXA_NR_BUILTIN_GPIO, -}; - -static int gpio_bus_switch = -EINVAL; - -static int pcm990_camera_set_bus_param(struct soc_camera_link *link, - unsigned long flags) -{ - if (gpio_bus_switch < 0) { - if (flags == SOCAM_DATAWIDTH_10) - return 0; - else - return -EINVAL; - } - - if (flags & SOCAM_DATAWIDTH_8) - gpio_set_value_cansleep(gpio_bus_switch, 1); - else - gpio_set_value_cansleep(gpio_bus_switch, 0); - - return 0; -} - -static unsigned long pcm990_camera_query_bus_param(struct soc_camera_link *link) -{ - int ret; - - if (gpio_bus_switch < 0) { - ret = gpio_request(PXA_NR_BUILTIN_GPIO, "camera"); - if (!ret) { - gpio_bus_switch = PXA_NR_BUILTIN_GPIO; - gpio_direction_output(gpio_bus_switch, 0); - } - } - - if (gpio_bus_switch >= 0) - return SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_10; - else - return SOCAM_DATAWIDTH_10; -} - -static void pcm990_camera_free_bus(struct soc_camera_link *link) -{ - if (gpio_bus_switch < 0) - return; - - gpio_free(gpio_bus_switch); - gpio_bus_switch = -EINVAL; -} - -/* Board I2C devices. */ -static struct i2c_board_info __initdata pcm990_i2c_devices[] = { - { - /* Must initialize before the camera(s) */ - I2C_BOARD_INFO("pca9536", 0x41), - .platform_data = &pca9536_data, - }, -}; - -static struct i2c_board_info pcm990_camera_i2c[] = { - { - I2C_BOARD_INFO("mt9v022", 0x48), - }, { - I2C_BOARD_INFO("mt9m001", 0x5d), - }, -}; - -static struct soc_camera_link iclink[] = { - { - .bus_id = 0, /* Must match with the camera ID */ - .board_info = &pcm990_camera_i2c[0], - .i2c_adapter_id = 0, - .query_bus_param = pcm990_camera_query_bus_param, - .set_bus_param = pcm990_camera_set_bus_param, - .free_bus = pcm990_camera_free_bus, - }, { - .bus_id = 0, /* Must match with the camera ID */ - .board_info = &pcm990_camera_i2c[1], - .i2c_adapter_id = 0, - .query_bus_param = pcm990_camera_query_bus_param, - .set_bus_param = pcm990_camera_set_bus_param, - .free_bus = pcm990_camera_free_bus, - }, -}; - -static struct platform_device pcm990_camera[] = { - { - .name = "soc-camera-pdrv", - .id = 0, - .dev = { - .platform_data = &iclink[0], - }, - }, { - .name = "soc-camera-pdrv", - .id = 1, - .dev = { - .platform_data = &iclink[1], - }, - }, -}; -#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */ - -/* - * enable generic access to the base board control CPLDs U6 and U7 - */ -static struct map_desc pcm990_io_desc[] __initdata = { - { - .virtual = PCM990_CTRL_BASE, - .pfn = __phys_to_pfn(PCM990_CTRL_PHYS), - .length = PCM990_CTRL_SIZE, - .type = MT_DEVICE /* CPLD */ - }, { - .virtual = PCM990_CF_PLD_BASE, - .pfn = __phys_to_pfn(PCM990_CF_PLD_PHYS), - .length = PCM990_CF_PLD_SIZE, - .type = MT_DEVICE /* CPLD */ - } -}; - -/* - * system init for baseboard usage. Will be called by pcm027 init. - * - * Add platform devices present on this baseboard and init - * them from CPU side as far as required to use them later on - */ -void __init pcm990_baseboard_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(pcm990_pin_config)); - - /* register CPLD access */ - iotable_init(ARRAY_AND_SIZE(pcm990_io_desc)); - - /* register CPLD's IRQ controller */ - pcm990_init_irq(); - -#ifndef CONFIG_PCM990_DISPLAY_NONE - pxa_set_fb_info(NULL, &pcm990_fbinfo); -#endif - platform_device_register(&pcm990_backlight_device); - - /* MMC */ - pxa_set_mci_info(&pcm990_mci_platform_data); - - /* USB host */ - pxa_set_ohci_info(&pcm990_ohci_platform_data); - - pxa_set_i2c_info(NULL); - pxa_set_ac97_info(NULL); - -#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE) - pxa2xx_mfp_config(ARRAY_AND_SIZE(pcm990_camera_pin_config)); - pxa_set_camera_info(&pcm990_pxacamera_platform_data); - - i2c_register_board_info(0, ARRAY_AND_SIZE(pcm990_i2c_devices)); - - platform_device_register(&pcm990_camera[0]); - platform_device_register(&pcm990_camera[1]); -#endif - - printk(KERN_INFO "PCM-990 Evaluation baseboard initialized\n"); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pm.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pm.c deleted file mode 100644 index 37178a85..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pm.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * PXA250/210 Power Management Routines - * - * Original code for the SA11x0: - * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com> - * - * Modified for the PXA250 by Nicolas Pitre: - * Copyright (c) 2002 Monta Vista Software, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License. - */ -#include <linux/init.h> -#include <linux/module.h> -#include <linux/suspend.h> -#include <linux/errno.h> -#include <linux/slab.h> - -#include <mach/pm.h> - -struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; -static unsigned long *sleep_save; - -int pxa_pm_enter(suspend_state_t state) -{ - unsigned long sleep_save_checksum = 0, checksum = 0; - int i; - -#ifdef CONFIG_IWMMXT - /* force any iWMMXt context to ram **/ - if (elf_hwcap & HWCAP_IWMMXT) - iwmmxt_task_disable(NULL); -#endif - - /* skip registers saving for standby */ - if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->save) { - pxa_cpu_pm_fns->save(sleep_save); - /* before sleeping, calculate and save a checksum */ - for (i = 0; i < pxa_cpu_pm_fns->save_count - 1; i++) - sleep_save_checksum += sleep_save[i]; - } - - /* *** go zzz *** */ - pxa_cpu_pm_fns->enter(state); - - if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->restore) { - /* after sleeping, validate the checksum */ - for (i = 0; i < pxa_cpu_pm_fns->save_count - 1; i++) - checksum += sleep_save[i]; - - /* if invalid, display message and wait for a hardware reset */ - if (checksum != sleep_save_checksum) { - - lubbock_set_hexled(0xbadbadc5); - - while (1) - pxa_cpu_pm_fns->enter(state); - } - pxa_cpu_pm_fns->restore(sleep_save); - } - - pr_debug("*** made it back from resume\n"); - - return 0; -} - -EXPORT_SYMBOL_GPL(pxa_pm_enter); - -static int pxa_pm_valid(suspend_state_t state) -{ - if (pxa_cpu_pm_fns) - return pxa_cpu_pm_fns->valid(state); - - return -EINVAL; -} - -int pxa_pm_prepare(void) -{ - int ret = 0; - - if (pxa_cpu_pm_fns && pxa_cpu_pm_fns->prepare) - ret = pxa_cpu_pm_fns->prepare(); - - return ret; -} - -void pxa_pm_finish(void) -{ - if (pxa_cpu_pm_fns && pxa_cpu_pm_fns->finish) - pxa_cpu_pm_fns->finish(); -} - -static const struct platform_suspend_ops pxa_pm_ops = { - .valid = pxa_pm_valid, - .enter = pxa_pm_enter, - .prepare = pxa_pm_prepare, - .finish = pxa_pm_finish, -}; - -static int __init pxa_pm_init(void) -{ - if (!pxa_cpu_pm_fns) { - printk(KERN_ERR "no valid pxa_cpu_pm_fns defined\n"); - return -EINVAL; - } - - sleep_save = kmalloc(pxa_cpu_pm_fns->save_count * sizeof(unsigned long), - GFP_KERNEL); - if (!sleep_save) { - printk(KERN_ERR "failed to alloc memory for pm save\n"); - return -ENOMEM; - } - - suspend_set_ops(&pxa_pm_ops); - return 0; -} - -device_initcall(pxa_pm_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/poodle.c b/ANDROID_3.4.5/arch/arm/mach-pxa/poodle.c deleted file mode 100644 index 89d98c83..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/poodle.c +++ /dev/null @@ -1,475 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/poodle.c - * - * Support for the SHARP Poodle Board. - * - * Based on: - * linux/arch/arm/mach-pxa/lubbock.c Author: Nicolas Pitre - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Change Log - * 12-Dec-2002 Sharp Corporation for Poodle - * John Lenz <lenz@cs.wisc.edu> updates to 2.6 - */ -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/export.h> -#include <linux/platform_device.h> -#include <linux/fb.h> -#include <linux/pm.h> -#include <linux/delay.h> -#include <linux/mtd/physmap.h> -#include <linux/gpio.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/spi/spi.h> -#include <linux/spi/ads7846.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/mtd/sharpsl.h> - -#include <mach/hardware.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/setup.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> - -#include <mach/pxa25x.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/irda.h> -#include <mach/poodle.h> -#include <mach/pxafb.h> - -#include <asm/hardware/scoop.h> -#include <asm/hardware/locomo.h> -#include <asm/mach/sharpsl_param.h> - -#include "generic.h" -#include "devices.h" - -static unsigned long poodle_pin_config[] __initdata = { - /* I/O */ - GPIO79_nCS_3, - GPIO80_nCS_4, - GPIO18_RDY, - - /* Clock */ - GPIO12_32KHz, - - /* SSP1 */ - GPIO23_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - GPIO24_GPIO, /* POODLE_GPIO_TP_CS - SFRM as chip select */ - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - GPIO32_I2S_SYSCLK, - - /* Infra-Red */ - GPIO47_FICP_TXD, - GPIO46_FICP_RXD, - - /* FFUART */ - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - GPIO39_FFUART_TXD, - GPIO37_FFUART_DSR, - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - - /* LCD */ - GPIOxx_LCD_TFT_16BPP, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - - /* GPIO */ - GPIO9_GPIO, /* POODLE_GPIO_nSD_DETECT */ - GPIO7_GPIO, /* POODLE_GPIO_nSD_WP */ - GPIO3_GPIO, /* POODLE_GPIO_SD_PWR */ - GPIO33_GPIO, /* POODLE_GPIO_SD_PWR1 */ - - GPIO20_GPIO, /* POODLE_GPIO_USB_PULLUP */ - GPIO22_GPIO, /* POODLE_GPIO_IR_ON */ -}; - -static struct resource poodle_scoop_resources[] = { - [0] = { - .start = 0x10800000, - .end = 0x10800fff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config poodle_scoop_setup = { - .io_dir = POODLE_SCOOP_IO_DIR, - .io_out = POODLE_SCOOP_IO_OUT, - .gpio_base = POODLE_SCOOP_GPIO_BASE, -}; - -struct platform_device poodle_scoop_device = { - .name = "sharp-scoop", - .id = -1, - .dev = { - .platform_data = &poodle_scoop_setup, - }, - .num_resources = ARRAY_SIZE(poodle_scoop_resources), - .resource = poodle_scoop_resources, -}; - -static struct scoop_pcmcia_dev poodle_pcmcia_scoop[] = { -{ - .dev = &poodle_scoop_device.dev, - .irq = POODLE_IRQ_GPIO_CF_IRQ, - .cd_irq = POODLE_IRQ_GPIO_CF_CD, - .cd_irq_str = "PCMCIA0 CD", -}, -}; - -static struct scoop_pcmcia_config poodle_pcmcia_config = { - .devs = &poodle_pcmcia_scoop[0], - .num_devs = 1, -}; - -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] = { - .start = 0x10000000, - .end = 0x10001fff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(10), - .end = PXA_GPIO_TO_IRQ(10), - .flags = IORESOURCE_IRQ, - }, -}; - -static struct locomo_platform_data locomo_info = { - .irq_base = IRQ_BOARD_START, -}; - -struct platform_device poodle_locomo_device = { - .name = "locomo", - .id = 0, - .num_resources = ARRAY_SIZE(locomo_resources), - .resource = locomo_resources, - .dev = { - .platform_data = &locomo_info, - }, -}; - -EXPORT_SYMBOL(poodle_locomo_device); - -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static struct pxa2xx_spi_master poodle_spi_info = { - .num_chipselect = 1, -}; - -static struct ads7846_platform_data poodle_ads7846_info = { - .model = 7846, - .vref_delay_usecs = 100, - .x_plate_ohms = 419, - .y_plate_ohms = 486, - .gpio_pendown = POODLE_GPIO_TP_INT, -}; - -static struct pxa2xx_spi_chip poodle_ads7846_chip = { - .gpio_cs = POODLE_GPIO_TP_CS, -}; - -static struct spi_board_info poodle_spi_devices[] = { - { - .modalias = "ads7846", - .max_speed_hz = 10000, - .bus_num = 1, - .platform_data = &poodle_ads7846_info, - .controller_data= &poodle_ads7846_chip, - .irq = PXA_GPIO_TO_IRQ(POODLE_GPIO_TP_INT), - }, -}; - -static void __init poodle_init_spi(void) -{ - pxa2xx_set_spi_info(1, &poodle_spi_info); - spi_register_board_info(ARRAY_AND_SIZE(poodle_spi_devices)); -} -#else -static inline void poodle_init_spi(void) {} -#endif - -/* - * MMC/SD Device - * - * The card detect interrupt isn't debounced so we delay it by 250ms - * to give the card a chance to fully insert/eject. - */ -static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data) -{ - int err; - - err = gpio_request(POODLE_GPIO_SD_PWR, "SD_PWR"); - if (err) - goto err_free_2; - - err = gpio_request(POODLE_GPIO_SD_PWR1, "SD_PWR1"); - if (err) - goto err_free_3; - - gpio_direction_output(POODLE_GPIO_SD_PWR, 0); - gpio_direction_output(POODLE_GPIO_SD_PWR1, 0); - - return 0; - -err_free_3: - gpio_free(POODLE_GPIO_SD_PWR); -err_free_2: - return err; -} - -static void poodle_mci_setpower(struct device *dev, unsigned int vdd) -{ - struct pxamci_platform_data* p_d = dev->platform_data; - - if ((1 << vdd) & p_d->ocr_mask) { - gpio_set_value(POODLE_GPIO_SD_PWR, 1); - mdelay(2); - gpio_set_value(POODLE_GPIO_SD_PWR1, 1); - } else { - gpio_set_value(POODLE_GPIO_SD_PWR1, 0); - gpio_set_value(POODLE_GPIO_SD_PWR, 0); - } -} - -static void poodle_mci_exit(struct device *dev, void *data) -{ - gpio_free(POODLE_GPIO_SD_PWR1); - gpio_free(POODLE_GPIO_SD_PWR); -} - -static struct pxamci_platform_data poodle_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .init = poodle_mci_init, - .setpower = poodle_mci_setpower, - .exit = poodle_mci_exit, - .gpio_card_detect = POODLE_GPIO_nSD_DETECT, - .gpio_card_ro = POODLE_GPIO_nSD_WP, - .gpio_power = -1, -}; - - -/* - * Irda - */ -static struct pxaficp_platform_data poodle_ficp_platform_data = { - .gpio_pwdown = POODLE_GPIO_IR_ON, - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - - -/* - * USB Device Controller - */ -static struct pxa2xx_udc_mach_info udc_info __initdata = { - /* no connect GPIO; poodle can't tell connection status */ - .gpio_pullup = POODLE_GPIO_USB_PULLUP, -}; - - -/* PXAFB device */ -static struct pxafb_mode_info poodle_fb_mode = { - .pixclock = 144700, - .xres = 320, - .yres = 240, - .bpp = 16, - .hsync_len = 7, - .left_margin = 11, - .right_margin = 30, - .vsync_len = 2, - .upper_margin = 2, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info poodle_fb_info = { - .modes = &poodle_fb_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP, -}; - -static struct mtd_partition sharpsl_nand_partitions[] = { - { - .name = "System Area", - .offset = 0, - .size = 7 * 1024 * 1024, - }, - { - .name = "Root Filesystem", - .offset = 7 * 1024 * 1024, - .size = 22 * 1024 * 1024, - }, - { - .name = "Home Filesystem", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; - -static struct nand_bbt_descr sharpsl_bbt = { - .options = 0, - .offs = 4, - .len = 2, - .pattern = scan_ff_pattern -}; - -static struct sharpsl_nand_platform_data sharpsl_nand_platform_data = { - .badblock_pattern = &sharpsl_bbt, - .partitions = sharpsl_nand_partitions, - .nr_partitions = ARRAY_SIZE(sharpsl_nand_partitions), -}; - -static struct resource sharpsl_nand_resources[] = { - { - .start = 0x0C000000, - .end = 0x0C000FFF, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device sharpsl_nand_device = { - .name = "sharpsl-nand", - .id = -1, - .resource = sharpsl_nand_resources, - .num_resources = ARRAY_SIZE(sharpsl_nand_resources), - .dev.platform_data = &sharpsl_nand_platform_data, -}; - -static struct mtd_partition sharpsl_rom_parts[] = { - { - .name ="Boot PROM Filesystem", - .offset = 0x00120000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data sharpsl_rom_data = { - .width = 2, - .nr_parts = ARRAY_SIZE(sharpsl_rom_parts), - .parts = sharpsl_rom_parts, -}; - -static struct resource sharpsl_rom_resources[] = { - { - .start = 0x00000000, - .end = 0x007fffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device sharpsl_rom_device = { - .name = "physmap-flash", - .id = -1, - .resource = sharpsl_rom_resources, - .num_resources = ARRAY_SIZE(sharpsl_rom_resources), - .dev.platform_data = &sharpsl_rom_data, -}; - -static struct platform_device *devices[] __initdata = { - &poodle_locomo_device, - &poodle_scoop_device, - &poodle_audio_device, - &sharpsl_nand_device, - &sharpsl_rom_device, -}; - -static struct i2c_board_info __initdata poodle_i2c_devices[] = { - { I2C_BOARD_INFO("wm8731", 0x1b) }, -}; - -static void poodle_poweroff(void) -{ - pxa_restart('h', NULL); -} - -static void __init poodle_init(void) -{ - int ret = 0; - - pm_power_off = poodle_poweroff; - - PCFR |= PCFR_OPDE; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(poodle_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_scoop_config = &poodle_pcmcia_config; - - ret = platform_add_devices(devices, ARRAY_SIZE(devices)); - if (ret) - pr_warning("poodle: Unable to register LoCoMo device\n"); - - pxa_set_fb_info(&poodle_locomo_device.dev, &poodle_fb_info); - pxa_set_udc_info(&udc_info); - pxa_set_mci_info(&poodle_mci_platform_data); - pxa_set_ficp_info(&poodle_ficp_platform_data); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); - poodle_init_spi(); -} - -static void __init fixup_poodle(struct tag *tags, char **cmdline, - struct meminfo *mi) -{ - sharpsl_save_param(); - mi->nr_banks=1; - mi->bank[0].start = 0xa0000000; - mi->bank[0].size = (32*1024*1024); -} - -MACHINE_START(POODLE, "SHARP Poodle") - .fixup = fixup_poodle, - .map_io = pxa25x_map_io, - .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */ - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = poodle_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa25x.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa25x.c deleted file mode 100644 index 3352b37b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa25x.c +++ /dev/null @@ -1,386 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa25x.c - * - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * Code specific to PXA21x/25x/26x variants. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Since this file should be linked before any other machine specific file, - * the __initcall() here will be executed first. This serves as default - * initialization stuff for PXA machines which can be overridden later if - * need be. - */ -#include <linux/gpio.h> -#include <linux/gpio-pxa.h> -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/suspend.h> -#include <linux/syscore_ops.h> -#include <linux/irq.h> - -#include <asm/mach/map.h> -#include <asm/suspend.h> -#include <mach/hardware.h> -#include <mach/irqs.h> -#include <mach/pxa25x.h> -#include <mach/reset.h> -#include <mach/pm.h> -#include <mach/dma.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -/* - * Various clock factors driven by the CCCR register. - */ - -/* Crystal Frequency to Memory Frequency Multiplier (L) */ -static unsigned char L_clk_mult[32] = { 0, 27, 32, 36, 40, 45, 0, }; - -/* Memory Frequency to Run Mode Frequency Multiplier (M) */ -static unsigned char M_clk_mult[4] = { 0, 1, 2, 4 }; - -/* Run Mode Frequency to Turbo Mode Frequency Multiplier (N) */ -/* Note: we store the value N * 2 here. */ -static unsigned char N2_clk_mult[8] = { 0, 0, 2, 3, 4, 0, 6, 0 }; - -/* Crystal clock */ -#define BASE_CLK 3686400 - -/* - * 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 pxa25x_get_clk_frequency_khz(int info) -{ - unsigned long cccr, turbo; - unsigned int l, L, m, M, n2, N; - - cccr = CCCR; - asm( "mrc\tp14, 0, %0, c6, c0, 0" : "=r" (turbo) ); - - l = L_clk_mult[(cccr >> 0) & 0x1f]; - m = M_clk_mult[(cccr >> 5) & 0x03]; - n2 = N2_clk_mult[(cccr >> 7) & 0x07]; - - L = l * BASE_CLK; - M = m * L; - N = n2 * M / 2; - - if(info) - { - L += 5000; - printk( KERN_INFO "Memory clock: %d.%02dMHz (*%d)\n", - L / 1000000, (L % 1000000) / 10000, l ); - M += 5000; - printk( KERN_INFO "Run Mode clock: %d.%02dMHz (*%d)\n", - M / 1000000, (M % 1000000) / 10000, m ); - N += 5000; - printk( KERN_INFO "Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)\n", - N / 1000000, (N % 1000000) / 10000, n2 / 2, (n2 % 2) * 5, - (turbo & 1) ? "" : "in" ); - } - - return (turbo & 1) ? (N/1000) : (M/1000); -} - -static unsigned long clk_pxa25x_mem_getrate(struct clk *clk) -{ - return L_clk_mult[(CCCR >> 0) & 0x1f] * BASE_CLK; -} - -static const struct clkops clk_pxa25x_mem_ops = { - .enable = clk_dummy_enable, - .disable = clk_dummy_disable, - .getrate = clk_pxa25x_mem_getrate, -}; - -static const struct clkops clk_pxa25x_lcd_ops = { - .enable = clk_pxa2xx_cken_enable, - .disable = clk_pxa2xx_cken_disable, - .getrate = clk_pxa25x_mem_getrate, -}; - -static unsigned long gpio12_config_32k[] = { - GPIO12_32KHz, -}; - -static unsigned long gpio12_config_gpio[] = { - GPIO12_GPIO, -}; - -static void clk_gpio12_enable(struct clk *clk) -{ - pxa2xx_mfp_config(gpio12_config_32k, 1); -} - -static void clk_gpio12_disable(struct clk *clk) -{ - pxa2xx_mfp_config(gpio12_config_gpio, 1); -} - -static const struct clkops clk_pxa25x_gpio12_ops = { - .enable = clk_gpio12_enable, - .disable = clk_gpio12_disable, -}; - -static unsigned long gpio11_config_3m6[] = { - GPIO11_3_6MHz, -}; - -static unsigned long gpio11_config_gpio[] = { - GPIO11_GPIO, -}; - -static void clk_gpio11_enable(struct clk *clk) -{ - pxa2xx_mfp_config(gpio11_config_3m6, 1); -} - -static void clk_gpio11_disable(struct clk *clk) -{ - pxa2xx_mfp_config(gpio11_config_gpio, 1); -} - -static const struct clkops clk_pxa25x_gpio11_ops = { - .enable = clk_gpio11_enable, - .disable = clk_gpio11_disable, -}; - -/* - * 3.6864MHz -> OST, GPIO, SSP, PWM, PLLs (95.842MHz, 147.456MHz) - * 95.842MHz -> MMC 19.169MHz, I2C 31.949MHz, FICP 47.923MHz, USB 47.923MHz - * 147.456MHz -> UART 14.7456MHz, AC97 12.288MHz, I2S 5.672MHz (allegedly) - */ - -/* - * PXA 2xx clock declarations. - */ -static DEFINE_PXA2_CKEN(pxa25x_hwuart, HWUART, 14745600, 1); -static DEFINE_PXA2_CKEN(pxa25x_ffuart, FFUART, 14745600, 1); -static DEFINE_PXA2_CKEN(pxa25x_btuart, BTUART, 14745600, 1); -static DEFINE_PXA2_CKEN(pxa25x_stuart, STUART, 14745600, 1); -static DEFINE_PXA2_CKEN(pxa25x_usb, USB, 47923000, 5); -static DEFINE_PXA2_CKEN(pxa25x_mmc, MMC, 19169000, 0); -static DEFINE_PXA2_CKEN(pxa25x_i2c, I2C, 31949000, 0); -static DEFINE_PXA2_CKEN(pxa25x_ssp, SSP, 3686400, 0); -static DEFINE_PXA2_CKEN(pxa25x_nssp, NSSP, 3686400, 0); -static DEFINE_PXA2_CKEN(pxa25x_assp, ASSP, 3686400, 0); -static DEFINE_PXA2_CKEN(pxa25x_pwm0, PWM0, 3686400, 0); -static DEFINE_PXA2_CKEN(pxa25x_pwm1, PWM1, 3686400, 0); -static DEFINE_PXA2_CKEN(pxa25x_ac97, AC97, 24576000, 0); -static DEFINE_PXA2_CKEN(pxa25x_i2s, I2S, 14745600, 0); -static DEFINE_PXA2_CKEN(pxa25x_ficp, FICP, 47923000, 0); - -static DEFINE_CK(pxa25x_lcd, LCD, &clk_pxa25x_lcd_ops); -static DEFINE_CLK(pxa25x_gpio11, &clk_pxa25x_gpio11_ops, 3686400, 0); -static DEFINE_CLK(pxa25x_gpio12, &clk_pxa25x_gpio12_ops, 32768, 0); -static DEFINE_CLK(pxa25x_mem, &clk_pxa25x_mem_ops, 0, 0); - -static struct clk_lookup pxa25x_clkregs[] = { - INIT_CLKREG(&clk_pxa25x_lcd, "pxa2xx-fb", NULL), - INIT_CLKREG(&clk_pxa25x_ffuart, "pxa2xx-uart.0", NULL), - INIT_CLKREG(&clk_pxa25x_btuart, "pxa2xx-uart.1", NULL), - INIT_CLKREG(&clk_pxa25x_stuart, "pxa2xx-uart.2", NULL), - INIT_CLKREG(&clk_pxa25x_usb, "pxa25x-udc", NULL), - INIT_CLKREG(&clk_pxa25x_mmc, "pxa2xx-mci.0", NULL), - INIT_CLKREG(&clk_pxa25x_i2c, "pxa2xx-i2c.0", NULL), - INIT_CLKREG(&clk_pxa25x_ssp, "pxa25x-ssp.0", NULL), - INIT_CLKREG(&clk_pxa25x_nssp, "pxa25x-nssp.1", NULL), - INIT_CLKREG(&clk_pxa25x_assp, "pxa25x-nssp.2", NULL), - INIT_CLKREG(&clk_pxa25x_pwm0, "pxa25x-pwm.0", NULL), - INIT_CLKREG(&clk_pxa25x_pwm1, "pxa25x-pwm.1", NULL), - INIT_CLKREG(&clk_pxa25x_i2s, "pxa2xx-i2s", NULL), - INIT_CLKREG(&clk_pxa25x_stuart, "pxa2xx-ir", "UARTCLK"), - INIT_CLKREG(&clk_pxa25x_ficp, "pxa2xx-ir", "FICPCLK"), - INIT_CLKREG(&clk_pxa25x_ac97, NULL, "AC97CLK"), - INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"), - INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"), - INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL), - INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), -}; - -static struct clk_lookup pxa25x_hwuart_clkreg = - INIT_CLKREG(&clk_pxa25x_hwuart, "pxa2xx-uart.3", NULL); - -#ifdef CONFIG_PM - -#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x -#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] - -/* - * List of global PXA peripheral registers to preserve. - * More ones like CP and general purpose register values are preserved - * with the stack pointer in sleep.S. - */ -enum { - SLEEP_SAVE_PSTR, - SLEEP_SAVE_COUNT -}; - - -static void pxa25x_cpu_pm_save(unsigned long *sleep_save) -{ - SAVE(PSTR); -} - -static void pxa25x_cpu_pm_restore(unsigned long *sleep_save) -{ - RESTORE(PSTR); -} - -static void pxa25x_cpu_pm_enter(suspend_state_t state) -{ - /* Clear reset status */ - RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR; - - switch (state) { - case PM_SUSPEND_MEM: - cpu_suspend(PWRMODE_SLEEP, pxa25x_finish_suspend); - break; - } -} - -static int pxa25x_cpu_pm_prepare(void) -{ - /* set resume return address */ - PSPR = virt_to_phys(cpu_resume); - return 0; -} - -static void pxa25x_cpu_pm_finish(void) -{ - /* ensure not to come back here if it wasn't intended */ - PSPR = 0; -} - -static struct pxa_cpu_pm_fns pxa25x_cpu_pm_fns = { - .save_count = SLEEP_SAVE_COUNT, - .valid = suspend_valid_only_mem, - .save = pxa25x_cpu_pm_save, - .restore = pxa25x_cpu_pm_restore, - .enter = pxa25x_cpu_pm_enter, - .prepare = pxa25x_cpu_pm_prepare, - .finish = pxa25x_cpu_pm_finish, -}; - -static void __init pxa25x_init_pm(void) -{ - pxa_cpu_pm_fns = &pxa25x_cpu_pm_fns; -} -#else -static inline void pxa25x_init_pm(void) {} -#endif - -/* PXA25x: supports wakeup from GPIO0..GPIO15 and RTC alarm - */ - -static int pxa25x_set_wake(struct irq_data *d, unsigned int on) -{ - int gpio = pxa_irq_to_gpio(d->irq); - uint32_t mask = 0; - - if (gpio >= 0 && gpio < 85) - return gpio_set_wake(gpio, on); - - if (d->irq == IRQ_RTCAlrm) { - mask = PWER_RTC; - goto set_pwer; - } - - return -EINVAL; - -set_pwer: - if (on) - PWER |= mask; - else - PWER &=~mask; - - return 0; -} - -void __init pxa25x_init_irq(void) -{ - pxa_init_irq(32, pxa25x_set_wake); -} - -#ifdef CONFIG_CPU_PXA26x -void __init pxa26x_init_irq(void) -{ - pxa_init_irq(32, pxa25x_set_wake); -} -#endif - -static struct map_desc pxa25x_io_desc[] __initdata = { - { /* Mem Ctl */ - .virtual = (unsigned long)SMEMC_VIRT, - .pfn = __phys_to_pfn(PXA2XX_SMEMC_BASE), - .length = 0x00200000, - .type = MT_DEVICE - }, -}; - -void __init pxa25x_map_io(void) -{ - pxa_map_io(); - iotable_init(ARRAY_AND_SIZE(pxa25x_io_desc)); - pxa25x_get_clk_frequency_khz(1); -} - -static struct platform_device *pxa25x_devices[] __initdata = { - &pxa25x_device_udc, - &pxa_device_pmu, - &pxa_device_i2s, - &sa1100_device_rtc, - &pxa25x_device_ssp, - &pxa25x_device_nssp, - &pxa25x_device_assp, - &pxa25x_device_pwm0, - &pxa25x_device_pwm1, - &pxa_device_asoc_platform, -}; - -static int __init pxa25x_init(void) -{ - int ret = 0; - - if (cpu_is_pxa25x()) { - - reset_status = RCSR; - - clkdev_add_table(pxa25x_clkregs, ARRAY_SIZE(pxa25x_clkregs)); - - if ((ret = pxa_init_dma(IRQ_DMA, 16))) - return ret; - - pxa25x_init_pm(); - - register_syscore_ops(&pxa_irq_syscore_ops); - register_syscore_ops(&pxa2xx_mfp_syscore_ops); - register_syscore_ops(&pxa2xx_clock_syscore_ops); - - ret = platform_add_devices(pxa25x_devices, - ARRAY_SIZE(pxa25x_devices)); - if (ret) - return ret; - } - - /* Only add HWUART for PXA255/26x; PXA210/250 do not have it. */ - if (cpu_is_pxa255()) - clkdev_add(&pxa25x_hwuart_clkreg); - - return ret; -} - -postcore_initcall(pxa25x_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa27x.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa27x.c deleted file mode 100644 index 4726c246..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa27x.c +++ /dev/null @@ -1,471 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa27x.c - * - * Author: Nicolas Pitre - * Created: Nov 05, 2002 - * Copyright: MontaVista Software Inc. - * - * Code specific to PXA27x aka Bulverde. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/gpio-pxa.h> -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/suspend.h> -#include <linux/platform_device.h> -#include <linux/syscore_ops.h> -#include <linux/io.h> -#include <linux/irq.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach/map.h> -#include <mach/hardware.h> -#include <asm/irq.h> -#include <asm/suspend.h> -#include <mach/irqs.h> -#include <mach/pxa27x.h> -#include <mach/reset.h> -#include <mach/ohci.h> -#include <mach/pm.h> -#include <mach/dma.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -void pxa27x_clear_otgph(void) -{ - if (cpu_is_pxa27x() && (PSSR & PSSR_OTGPH)) - PSSR |= PSSR_OTGPH; -} -EXPORT_SYMBOL(pxa27x_clear_otgph); - -static unsigned long ac97_reset_config[] = { - GPIO113_GPIO, - GPIO113_AC97_nRESET, - GPIO95_GPIO, - GPIO95_AC97_nRESET, -}; - -void pxa27x_assert_ac97reset(int reset_gpio, int on) -{ - if (reset_gpio == 113) - pxa2xx_mfp_config(on ? &ac97_reset_config[0] : - &ac97_reset_config[1], 1); - - if (reset_gpio == 95) - pxa2xx_mfp_config(on ? &ac97_reset_config[2] : - &ac97_reset_config[3], 1); -} -EXPORT_SYMBOL_GPL(pxa27x_assert_ac97reset); - -/* Crystal clock: 13MHz */ -#define BASE_CLK 13000000 - -/* - * Get the clock frequency as reflected by CCSR 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 pxa27x_get_clk_frequency_khz(int info) -{ - unsigned long ccsr, clkcfg; - unsigned int l, L, m, M, n2, N, S; - int cccr_a, t, ht, b; - - ccsr = CCSR; - cccr_a = CCCR & (1 << 25); - - /* Read clkcfg register: it has turbo, b, half-turbo (and f) */ - asm( "mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg) ); - t = clkcfg & (1 << 0); - ht = clkcfg & (1 << 2); - b = clkcfg & (1 << 3); - - l = ccsr & 0x1f; - n2 = (ccsr>>7) & 0xf; - m = (l <= 10) ? 1 : (l <= 20) ? 2 : 4; - - L = l * BASE_CLK; - N = (L * n2) / 2; - M = (!cccr_a) ? (L/m) : ((b) ? L : (L/2)); - S = (b) ? L : (L/2); - - if (info) { - printk( KERN_INFO "Run Mode clock: %d.%02dMHz (*%d)\n", - L / 1000000, (L % 1000000) / 10000, l ); - printk( KERN_INFO "Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)\n", - N / 1000000, (N % 1000000)/10000, n2 / 2, (n2 % 2)*5, - (t) ? "" : "in" ); - printk( KERN_INFO "Memory clock: %d.%02dMHz (/%d)\n", - M / 1000000, (M % 1000000) / 10000, m ); - printk( KERN_INFO "System bus clock: %d.%02dMHz \n", - S / 1000000, (S % 1000000) / 10000 ); - } - - return (t) ? (N/1000) : (L/1000); -} - -/* - * Return the current mem clock frequency as reflected by CCCR[A], B, and L - */ -static unsigned long clk_pxa27x_mem_getrate(struct clk *clk) -{ - unsigned long ccsr, clkcfg; - unsigned int l, L, m, M; - int cccr_a, b; - - ccsr = CCSR; - cccr_a = CCCR & (1 << 25); - - /* Read clkcfg register: it has turbo, b, half-turbo (and f) */ - asm( "mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg) ); - b = clkcfg & (1 << 3); - - l = ccsr & 0x1f; - m = (l <= 10) ? 1 : (l <= 20) ? 2 : 4; - - L = l * BASE_CLK; - M = (!cccr_a) ? (L/m) : ((b) ? L : (L/2)); - - return M; -} - -static const struct clkops clk_pxa27x_mem_ops = { - .enable = clk_dummy_enable, - .disable = clk_dummy_disable, - .getrate = clk_pxa27x_mem_getrate, -}; - -/* - * Return the current LCD clock frequency in units of 10kHz as - */ -static unsigned int pxa27x_get_lcdclk_frequency_10khz(void) -{ - unsigned long ccsr; - unsigned int l, L, k, K; - - ccsr = CCSR; - - l = ccsr & 0x1f; - k = (l <= 7) ? 1 : (l <= 16) ? 2 : 4; - - L = l * BASE_CLK; - K = L / k; - - return (K / 10000); -} - -static unsigned long clk_pxa27x_lcd_getrate(struct clk *clk) -{ - return pxa27x_get_lcdclk_frequency_10khz() * 10000; -} - -static const struct clkops clk_pxa27x_lcd_ops = { - .enable = clk_pxa2xx_cken_enable, - .disable = clk_pxa2xx_cken_disable, - .getrate = clk_pxa27x_lcd_getrate, -}; - -static DEFINE_PXA2_CKEN(pxa27x_ffuart, FFUART, 14857000, 1); -static DEFINE_PXA2_CKEN(pxa27x_btuart, BTUART, 14857000, 1); -static DEFINE_PXA2_CKEN(pxa27x_stuart, STUART, 14857000, 1); -static DEFINE_PXA2_CKEN(pxa27x_i2s, I2S, 14682000, 0); -static DEFINE_PXA2_CKEN(pxa27x_i2c, I2C, 32842000, 0); -static DEFINE_PXA2_CKEN(pxa27x_usb, USB, 48000000, 5); -static DEFINE_PXA2_CKEN(pxa27x_mmc, MMC, 19500000, 0); -static DEFINE_PXA2_CKEN(pxa27x_ficp, FICP, 48000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_usbhost, USBHOST, 48000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_pwri2c, PWRI2C, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_keypad, KEYPAD, 32768, 0); -static DEFINE_PXA2_CKEN(pxa27x_ssp1, SSP1, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_ssp2, SSP2, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_ssp3, SSP3, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_pwm0, PWM0, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_pwm1, PWM1, 13000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_ac97, AC97, 24576000, 0); -static DEFINE_PXA2_CKEN(pxa27x_ac97conf, AC97CONF, 24576000, 0); -static DEFINE_PXA2_CKEN(pxa27x_msl, MSL, 48000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_usim, USIM, 48000000, 0); -static DEFINE_PXA2_CKEN(pxa27x_memstk, MEMSTK, 19500000, 0); -static DEFINE_PXA2_CKEN(pxa27x_im, IM, 0, 0); -static DEFINE_PXA2_CKEN(pxa27x_memc, MEMC, 0, 0); - -static DEFINE_CK(pxa27x_lcd, LCD, &clk_pxa27x_lcd_ops); -static DEFINE_CK(pxa27x_camera, CAMERA, &clk_pxa27x_lcd_ops); -static DEFINE_CLK(pxa27x_mem, &clk_pxa27x_mem_ops, 0, 0); - -static struct clk_lookup pxa27x_clkregs[] = { - INIT_CLKREG(&clk_pxa27x_lcd, "pxa2xx-fb", NULL), - INIT_CLKREG(&clk_pxa27x_camera, "pxa27x-camera.0", NULL), - INIT_CLKREG(&clk_pxa27x_ffuart, "pxa2xx-uart.0", NULL), - INIT_CLKREG(&clk_pxa27x_btuart, "pxa2xx-uart.1", NULL), - INIT_CLKREG(&clk_pxa27x_stuart, "pxa2xx-uart.2", NULL), - INIT_CLKREG(&clk_pxa27x_i2s, "pxa2xx-i2s", NULL), - INIT_CLKREG(&clk_pxa27x_i2c, "pxa2xx-i2c.0", NULL), - INIT_CLKREG(&clk_pxa27x_usb, "pxa27x-udc", NULL), - INIT_CLKREG(&clk_pxa27x_mmc, "pxa2xx-mci.0", NULL), - INIT_CLKREG(&clk_pxa27x_stuart, "pxa2xx-ir", "UARTCLK"), - INIT_CLKREG(&clk_pxa27x_ficp, "pxa2xx-ir", "FICPCLK"), - INIT_CLKREG(&clk_pxa27x_usbhost, "pxa27x-ohci", NULL), - INIT_CLKREG(&clk_pxa27x_pwri2c, "pxa2xx-i2c.1", NULL), - INIT_CLKREG(&clk_pxa27x_keypad, "pxa27x-keypad", NULL), - INIT_CLKREG(&clk_pxa27x_ssp1, "pxa27x-ssp.0", NULL), - INIT_CLKREG(&clk_pxa27x_ssp2, "pxa27x-ssp.1", NULL), - INIT_CLKREG(&clk_pxa27x_ssp3, "pxa27x-ssp.2", NULL), - INIT_CLKREG(&clk_pxa27x_pwm0, "pxa27x-pwm.0", NULL), - INIT_CLKREG(&clk_pxa27x_pwm1, "pxa27x-pwm.1", NULL), - INIT_CLKREG(&clk_pxa27x_ac97, NULL, "AC97CLK"), - INIT_CLKREG(&clk_pxa27x_ac97conf, NULL, "AC97CONFCLK"), - INIT_CLKREG(&clk_pxa27x_msl, NULL, "MSLCLK"), - INIT_CLKREG(&clk_pxa27x_usim, NULL, "USIMCLK"), - INIT_CLKREG(&clk_pxa27x_memstk, NULL, "MSTKCLK"), - INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"), - INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"), - INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL), - INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), -}; - -#ifdef CONFIG_PM - -#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x -#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] - -/* - * allow platforms to override default PWRMODE setting used for PM_SUSPEND_MEM - */ -static unsigned int pwrmode = PWRMODE_SLEEP; - -int __init pxa27x_set_pwrmode(unsigned int mode) -{ - switch (mode) { - case PWRMODE_SLEEP: - case PWRMODE_DEEPSLEEP: - pwrmode = mode; - return 0; - } - - return -EINVAL; -} - -/* - * List of global PXA peripheral registers to preserve. - * More ones like CP and general purpose register values are preserved - * with the stack pointer in sleep.S. - */ -enum { - SLEEP_SAVE_PSTR, - SLEEP_SAVE_MDREFR, - SLEEP_SAVE_PCFR, - SLEEP_SAVE_COUNT -}; - -void pxa27x_cpu_pm_save(unsigned long *sleep_save) -{ - sleep_save[SLEEP_SAVE_MDREFR] = __raw_readl(MDREFR); - SAVE(PCFR); - - SAVE(PSTR); -} - -void pxa27x_cpu_pm_restore(unsigned long *sleep_save) -{ - __raw_writel(sleep_save[SLEEP_SAVE_MDREFR], MDREFR); - RESTORE(PCFR); - - PSSR = PSSR_RDH | PSSR_PH; - - RESTORE(PSTR); -} - -void pxa27x_cpu_pm_enter(suspend_state_t state) -{ - extern void pxa_cpu_standby(void); -#ifndef CONFIG_IWMMXT - u64 acc0; - - asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); -#endif - - /* ensure voltage-change sequencer not initiated, which hangs */ - PCFR &= ~PCFR_FVC; - - /* Clear edge-detect status register. */ - PEDR = 0xDF12FE1B; - - /* Clear reset status */ - RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR; - - switch (state) { - case PM_SUSPEND_STANDBY: - pxa_cpu_standby(); - break; - case PM_SUSPEND_MEM: - cpu_suspend(pwrmode, pxa27x_finish_suspend); -#ifndef CONFIG_IWMMXT - asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); -#endif - break; - } -} - -static int pxa27x_cpu_pm_valid(suspend_state_t state) -{ - return state == PM_SUSPEND_MEM || state == PM_SUSPEND_STANDBY; -} - -static int pxa27x_cpu_pm_prepare(void) -{ - /* set resume return address */ - PSPR = virt_to_phys(cpu_resume); - return 0; -} - -static void pxa27x_cpu_pm_finish(void) -{ - /* ensure not to come back here if it wasn't intended */ - PSPR = 0; -} - -static struct pxa_cpu_pm_fns pxa27x_cpu_pm_fns = { - .save_count = SLEEP_SAVE_COUNT, - .save = pxa27x_cpu_pm_save, - .restore = pxa27x_cpu_pm_restore, - .valid = pxa27x_cpu_pm_valid, - .enter = pxa27x_cpu_pm_enter, - .prepare = pxa27x_cpu_pm_prepare, - .finish = pxa27x_cpu_pm_finish, -}; - -static void __init pxa27x_init_pm(void) -{ - pxa_cpu_pm_fns = &pxa27x_cpu_pm_fns; -} -#else -static inline void pxa27x_init_pm(void) {} -#endif - -/* PXA27x: Various gpios can issue wakeup events. This logic only - * handles the simple cases, not the WEMUX2 and WEMUX3 options - */ -static int pxa27x_set_wake(struct irq_data *d, unsigned int on) -{ - int gpio = pxa_irq_to_gpio(d->irq); - uint32_t mask; - - if (gpio >= 0 && gpio < 128) - return gpio_set_wake(gpio, on); - - if (d->irq == IRQ_KEYPAD) - return keypad_set_wake(on); - - switch (d->irq) { - case IRQ_RTCAlrm: - mask = PWER_RTC; - break; - case IRQ_USB: - mask = 1u << 26; - break; - default: - return -EINVAL; - } - - if (on) - PWER |= mask; - else - PWER &=~mask; - - return 0; -} - -void __init pxa27x_init_irq(void) -{ - pxa_init_irq(34, pxa27x_set_wake); -} - -static struct map_desc pxa27x_io_desc[] __initdata = { - { /* Mem Ctl */ - .virtual = (unsigned long)SMEMC_VIRT, - .pfn = __phys_to_pfn(PXA2XX_SMEMC_BASE), - .length = 0x00200000, - .type = MT_DEVICE - }, { /* IMem ctl */ - .virtual = 0xfe000000, - .pfn = __phys_to_pfn(0x58000000), - .length = 0x00100000, - .type = MT_DEVICE - }, -}; - -void __init pxa27x_map_io(void) -{ - pxa_map_io(); - iotable_init(ARRAY_AND_SIZE(pxa27x_io_desc)); - pxa27x_get_clk_frequency_khz(1); -} - -/* - * device registration specific to PXA27x. - */ -void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info) -{ - local_irq_disable(); - PCFR |= PCFR_PI2CEN; - local_irq_enable(); - pxa_register_device(&pxa27x_device_i2c_power, info); -} - -static struct pxa_gpio_platform_data pxa27x_gpio_info __initdata = { - .gpio_set_wake = gpio_set_wake, -}; - -static struct platform_device *devices[] __initdata = { - &pxa27x_device_udc, - &pxa_device_pmu, - &pxa_device_i2s, - &pxa_device_asoc_ssp1, - &pxa_device_asoc_ssp2, - &pxa_device_asoc_ssp3, - &pxa_device_asoc_platform, - &sa1100_device_rtc, - &pxa_device_rtc, - &pxa27x_device_ssp1, - &pxa27x_device_ssp2, - &pxa27x_device_ssp3, - &pxa27x_device_pwm0, - &pxa27x_device_pwm1, -}; - -static int __init pxa27x_init(void) -{ - int ret = 0; - - if (cpu_is_pxa27x()) { - - reset_status = RCSR; - - clkdev_add_table(pxa27x_clkregs, ARRAY_SIZE(pxa27x_clkregs)); - - if ((ret = pxa_init_dma(IRQ_DMA, 32))) - return ret; - - pxa27x_init_pm(); - - register_syscore_ops(&pxa_irq_syscore_ops); - register_syscore_ops(&pxa2xx_mfp_syscore_ops); - register_syscore_ops(&pxa2xx_clock_syscore_ops); - - pxa_register_device(&pxa_device_gpio, &pxa27x_gpio_info); - ret = platform_add_devices(devices, ARRAY_SIZE(devices)); - } - - return ret; -} - -postcore_initcall(pxa27x_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa2xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa2xx.c deleted file mode 100644 index f8ec8545..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa2xx.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa2xx.c - * - * code specific to pxa2xx - * - * Copyright (C) 2008 Dmitry Baryshkov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/device.h> -#include <linux/io.h> - -#include <mach/hardware.h> -#include <mach/pxa2xx-regs.h> -#include <mach/mfp-pxa25x.h> -#include <mach/reset.h> -#include <mach/irda.h> - -void pxa2xx_clear_reset_status(unsigned int mask) -{ - /* RESET_STATUS_* has a 1:1 mapping with RCSR */ - RCSR = mask; -} - -static unsigned long pxa2xx_mfp_fir[] = { - GPIO46_FICP_RXD, - GPIO47_FICP_TXD, -}; - -static unsigned long pxa2xx_mfp_sir[] = { - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, -}; - -static unsigned long pxa2xx_mfp_off[] = { - GPIO46_GPIO | MFP_LPM_DRIVE_LOW, - GPIO47_GPIO | MFP_LPM_DRIVE_LOW, -}; - -void pxa2xx_transceiver_mode(struct device *dev, int mode) -{ - if (mode & IR_OFF) { - pxa2xx_mfp_config(pxa2xx_mfp_off, ARRAY_SIZE(pxa2xx_mfp_off)); - } else if (mode & IR_SIRMODE) { - pxa2xx_mfp_config(pxa2xx_mfp_sir, ARRAY_SIZE(pxa2xx_mfp_sir)); - } else if (mode & IR_FIRMODE) { - pxa2xx_mfp_config(pxa2xx_mfp_fir, ARRAY_SIZE(pxa2xx_mfp_fir)); - } else - BUG(); -} -EXPORT_SYMBOL_GPL(pxa2xx_transceiver_mode); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa300.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa300.c deleted file mode 100644 index 17cbc0c7..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa300.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa300.c - * - * Code specific to PXA300/PXA310 - * - * Copyright (C) 2007 Marvell Internation Ltd. - * - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/io.h> - -#include <mach/pxa300.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = { - - MFP_ADDR_X(GPIO0, GPIO2, 0x00b4), - MFP_ADDR_X(GPIO3, GPIO26, 0x027c), - MFP_ADDR_X(GPIO27, GPIO98, 0x0400), - MFP_ADDR_X(GPIO99, GPIO127, 0x0600), - MFP_ADDR_X(GPIO0_2, GPIO1_2, 0x0674), - MFP_ADDR_X(GPIO2_2, GPIO6_2, 0x02dc), - - MFP_ADDR(nBE0, 0x0204), - MFP_ADDR(nBE1, 0x0208), - - MFP_ADDR(nLUA, 0x0244), - MFP_ADDR(nLLA, 0x0254), - - MFP_ADDR(DF_CLE_nOE, 0x0240), - MFP_ADDR(DF_nRE_nOE, 0x0200), - MFP_ADDR(DF_ALE_nWE, 0x020C), - MFP_ADDR(DF_INT_RnB, 0x00C8), - MFP_ADDR(DF_nCS0, 0x0248), - MFP_ADDR(DF_nCS1, 0x0278), - MFP_ADDR(DF_nWE, 0x00CC), - - MFP_ADDR(DF_ADDR0, 0x0210), - MFP_ADDR(DF_ADDR1, 0x0214), - MFP_ADDR(DF_ADDR2, 0x0218), - MFP_ADDR(DF_ADDR3, 0x021C), - - MFP_ADDR(DF_IO0, 0x0220), - MFP_ADDR(DF_IO1, 0x0228), - MFP_ADDR(DF_IO2, 0x0230), - MFP_ADDR(DF_IO3, 0x0238), - MFP_ADDR(DF_IO4, 0x0258), - MFP_ADDR(DF_IO5, 0x0260), - MFP_ADDR(DF_IO6, 0x0268), - MFP_ADDR(DF_IO7, 0x0270), - MFP_ADDR(DF_IO8, 0x0224), - MFP_ADDR(DF_IO9, 0x022C), - MFP_ADDR(DF_IO10, 0x0234), - MFP_ADDR(DF_IO11, 0x023C), - MFP_ADDR(DF_IO12, 0x025C), - MFP_ADDR(DF_IO13, 0x0264), - MFP_ADDR(DF_IO14, 0x026C), - MFP_ADDR(DF_IO15, 0x0274), - - MFP_ADDR_END, -}; - -/* override pxa300 MFP register addresses */ -static struct mfp_addr_map pxa310_mfp_addr_map[] __initdata = { - MFP_ADDR_X(GPIO30, GPIO98, 0x0418), - MFP_ADDR_X(GPIO7_2, GPIO12_2, 0x052C), - - MFP_ADDR(ULPI_STP, 0x040C), - MFP_ADDR(ULPI_NXT, 0x0410), - MFP_ADDR(ULPI_DIR, 0x0414), - - MFP_ADDR_END, -}; - -static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0); -static DEFINE_PXA3_CKEN(gcu, PXA300_GCU, 0, 0); - -static struct clk_lookup common_clkregs[] = { - INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL), - INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL), -}; - -static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0); - -static struct clk_lookup pxa310_clkregs[] = { - INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL), -}; - -static int __init pxa300_init(void) -{ - if (cpu_is_pxa300() || cpu_is_pxa310()) { - mfp_init_base(io_p2v(MFPR_BASE)); - mfp_init_addr(pxa300_mfp_addr_map); - clkdev_add_table(ARRAY_AND_SIZE(common_clkregs)); - } - - if (cpu_is_pxa310()) { - mfp_init_addr(pxa310_mfp_addr_map); - clkdev_add_table(ARRAY_AND_SIZE(pxa310_clkregs)); - } - - return 0; -} - -core_initcall(pxa300_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa320.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa320.c deleted file mode 100644 index 6dc99d4f..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa320.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa320.c - * - * Code specific to PXA320 - * - * Copyright (C) 2007 Marvell Internation Ltd. - * - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/io.h> - -#include <mach/pxa320.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -static struct mfp_addr_map pxa320_mfp_addr_map[] __initdata = { - - MFP_ADDR_X(GPIO0, GPIO4, 0x0124), - MFP_ADDR_X(GPIO5, GPIO9, 0x028C), - MFP_ADDR(GPIO10, 0x0458), - MFP_ADDR_X(GPIO11, GPIO26, 0x02A0), - MFP_ADDR_X(GPIO27, GPIO48, 0x0400), - MFP_ADDR_X(GPIO49, GPIO62, 0x045C), - MFP_ADDR_X(GPIO63, GPIO73, 0x04B4), - MFP_ADDR_X(GPIO74, GPIO98, 0x04F0), - MFP_ADDR_X(GPIO99, GPIO127, 0x0600), - MFP_ADDR_X(GPIO0_2, GPIO5_2, 0x0674), - MFP_ADDR_X(GPIO6_2, GPIO13_2, 0x0494), - MFP_ADDR_X(GPIO14_2, GPIO17_2, 0x04E0), - - MFP_ADDR(nXCVREN, 0x0138), - MFP_ADDR(DF_CLE_nOE, 0x0204), - MFP_ADDR(DF_nADV1_ALE, 0x0208), - MFP_ADDR(DF_SCLK_S, 0x020C), - MFP_ADDR(DF_SCLK_E, 0x0210), - MFP_ADDR(nBE0, 0x0214), - MFP_ADDR(nBE1, 0x0218), - MFP_ADDR(DF_nADV2_ALE, 0x021C), - MFP_ADDR(DF_INT_RnB, 0x0220), - MFP_ADDR(DF_nCS0, 0x0224), - MFP_ADDR(DF_nCS1, 0x0228), - MFP_ADDR(DF_nWE, 0x022C), - MFP_ADDR(DF_nRE_nOE, 0x0230), - MFP_ADDR(nLUA, 0x0234), - MFP_ADDR(nLLA, 0x0238), - MFP_ADDR(DF_ADDR0, 0x023C), - MFP_ADDR(DF_ADDR1, 0x0240), - MFP_ADDR(DF_ADDR2, 0x0244), - MFP_ADDR(DF_ADDR3, 0x0248), - MFP_ADDR(DF_IO0, 0x024C), - MFP_ADDR(DF_IO8, 0x0250), - MFP_ADDR(DF_IO1, 0x0254), - MFP_ADDR(DF_IO9, 0x0258), - MFP_ADDR(DF_IO2, 0x025C), - MFP_ADDR(DF_IO10, 0x0260), - MFP_ADDR(DF_IO3, 0x0264), - MFP_ADDR(DF_IO11, 0x0268), - MFP_ADDR(DF_IO4, 0x026C), - MFP_ADDR(DF_IO12, 0x0270), - MFP_ADDR(DF_IO5, 0x0274), - MFP_ADDR(DF_IO13, 0x0278), - MFP_ADDR(DF_IO6, 0x027C), - MFP_ADDR(DF_IO14, 0x0280), - MFP_ADDR(DF_IO7, 0x0284), - MFP_ADDR(DF_IO15, 0x0288), - - MFP_ADDR_END, -}; - -static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0); -static DEFINE_PXA3_CKEN(gcu, PXA320_GCU, 0, 0); - -static struct clk_lookup pxa320_clkregs[] = { - INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL), - INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL), -}; - -static int __init pxa320_init(void) -{ - if (cpu_is_pxa320()) { - mfp_init_base(io_p2v(MFPR_BASE)); - mfp_init_addr(pxa320_mfp_addr_map); - clkdev_add_table(ARRAY_AND_SIZE(pxa320_clkregs)); - } - - return 0; -} - -core_initcall(pxa320_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx-ulpi.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx-ulpi.c deleted file mode 100644 index 5ead6d48..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx-ulpi.c +++ /dev/null @@ -1,402 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa3xx-ulpi.c - * - * code specific to pxa3xx aka Monahans - * - * Copyright (C) 2010 CompuLab Ltd. - * - * 2010-13-07: Igor Grinberg <grinberg@compulab.co.il> - * initial version: pxa310 USB Host mode support - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/slab.h> -#include <linux/device.h> -#include <linux/platform_device.h> -#include <linux/err.h> -#include <linux/io.h> -#include <linux/delay.h> -#include <linux/clk.h> -#include <linux/usb.h> -#include <linux/usb/otg.h> - -#include <mach/hardware.h> -#include <mach/regs-u2d.h> -#include <mach/pxa3xx-u2d.h> - -struct pxa3xx_u2d_ulpi { - struct clk *clk; - void __iomem *mmio_base; - - struct usb_phy *otg; - unsigned int ulpi_mode; -}; - -static struct pxa3xx_u2d_ulpi *u2d; - -static inline u32 u2d_readl(u32 reg) -{ - return __raw_readl(u2d->mmio_base + reg); -} - -static inline void u2d_writel(u32 reg, u32 val) -{ - __raw_writel(val, u2d->mmio_base + reg); -} - -#if defined(CONFIG_PXA310_ULPI) -enum u2d_ulpi_phy_mode { - SYNCH = 0, - CARKIT = (1 << 0), - SER_3PIN = (1 << 1), - SER_6PIN = (1 << 2), - LOWPOWER = (1 << 3), -}; - -static inline enum u2d_ulpi_phy_mode pxa310_ulpi_get_phymode(void) -{ - return (u2d_readl(U2DOTGUSR) >> 28) & 0xF; -} - -static int pxa310_ulpi_poll(void) -{ - int timeout = 50000; - - while (timeout--) { - if (!(u2d_readl(U2DOTGUCR) & U2DOTGUCR_RUN)) - return 0; - - cpu_relax(); - } - - pr_warning("%s: ULPI access timed out!\n", __func__); - - return -ETIMEDOUT; -} - -static int pxa310_ulpi_read(struct usb_phy *otg, u32 reg) -{ - int err; - - if (pxa310_ulpi_get_phymode() != SYNCH) { - pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); - return -EBUSY; - } - - u2d_writel(U2DOTGUCR, U2DOTGUCR_RUN | U2DOTGUCR_RNW | (reg << 16)); - msleep(5); - - err = pxa310_ulpi_poll(); - if (err) - return err; - - return u2d_readl(U2DOTGUCR) & U2DOTGUCR_RDATA; -} - -static int pxa310_ulpi_write(struct usb_phy *otg, u32 val, u32 reg) -{ - if (pxa310_ulpi_get_phymode() != SYNCH) { - pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); - return -EBUSY; - } - - u2d_writel(U2DOTGUCR, U2DOTGUCR_RUN | (reg << 16) | (val << 8)); - msleep(5); - - return pxa310_ulpi_poll(); -} - -struct usb_phy_io_ops pxa310_ulpi_access_ops = { - .read = pxa310_ulpi_read, - .write = pxa310_ulpi_write, -}; - -static void pxa310_otg_transceiver_rtsm(void) -{ - u32 u2dotgcr; - - /* put PHY to sync mode */ - u2dotgcr = u2d_readl(U2DOTGCR); - u2dotgcr |= U2DOTGCR_RTSM | U2DOTGCR_UTMID; - u2d_writel(U2DOTGCR, u2dotgcr); - msleep(10); - - /* setup OTG sync mode */ - u2dotgcr = u2d_readl(U2DOTGCR); - u2dotgcr |= U2DOTGCR_ULAF; - u2dotgcr &= ~(U2DOTGCR_SMAF | U2DOTGCR_CKAF); - u2d_writel(U2DOTGCR, u2dotgcr); -} - -static int pxa310_start_otg_host_transcvr(struct usb_bus *host) -{ - int err; - - pxa310_otg_transceiver_rtsm(); - - err = usb_phy_init(u2d->otg); - if (err) { - pr_err("OTG transceiver init failed"); - return err; - } - - err = otg_set_vbus(u2d->otg->otg, 1); - if (err) { - pr_err("OTG transceiver VBUS set failed"); - return err; - } - - err = otg_set_host(u2d->otg->otg, host); - if (err) - pr_err("OTG transceiver Host mode set failed"); - - return err; -} - -static int pxa310_start_otg_hc(struct usb_bus *host) -{ - u32 u2dotgcr; - int err; - - /* disable USB device controller */ - u2d_writel(U2DCR, u2d_readl(U2DCR) & ~U2DCR_UDE); - u2d_writel(U2DOTGCR, u2d_readl(U2DOTGCR) | U2DOTGCR_UTMID); - u2d_writel(U2DOTGICR, u2d_readl(U2DOTGICR) & ~0x37F7F); - - err = pxa310_start_otg_host_transcvr(host); - if (err) - return err; - - /* set xceiver mode */ - if (u2d->ulpi_mode & ULPI_IC_6PIN_SERIAL) - u2d_writel(U2DP3CR, u2d_readl(U2DP3CR) & ~U2DP3CR_P2SS); - else if (u2d->ulpi_mode & ULPI_IC_3PIN_SERIAL) - u2d_writel(U2DP3CR, u2d_readl(U2DP3CR) | U2DP3CR_P2SS); - - /* start OTG host controller */ - u2dotgcr = u2d_readl(U2DOTGCR) | U2DOTGCR_SMAF; - u2d_writel(U2DOTGCR, u2dotgcr & ~(U2DOTGCR_ULAF | U2DOTGCR_CKAF)); - - return 0; -} - -static void pxa310_stop_otg_hc(void) -{ - pxa310_otg_transceiver_rtsm(); - - otg_set_host(u2d->otg->otg, NULL); - otg_set_vbus(u2d->otg->otg, 0); - usb_phy_shutdown(u2d->otg); -} - -static void pxa310_u2d_setup_otg_hc(void) -{ - u32 u2dotgcr; - - u2dotgcr = u2d_readl(U2DOTGCR); - u2dotgcr |= U2DOTGCR_ULAF | U2DOTGCR_UTMID; - u2dotgcr &= ~(U2DOTGCR_SMAF | U2DOTGCR_CKAF); - u2d_writel(U2DOTGCR, u2dotgcr); - msleep(5); - u2d_writel(U2DOTGCR, u2dotgcr | U2DOTGCR_ULE); - msleep(5); - u2d_writel(U2DOTGICR, u2d_readl(U2DOTGICR) & ~0x37F7F); -} - -static int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata) -{ - unsigned int ulpi_mode = ULPI_OTG_DRVVBUS; - - if (pdata) { - if (pdata->ulpi_mode & ULPI_SER_6PIN) - ulpi_mode |= ULPI_IC_6PIN_SERIAL; - else if (pdata->ulpi_mode & ULPI_SER_3PIN) - ulpi_mode |= ULPI_IC_3PIN_SERIAL; - } - - u2d->ulpi_mode = ulpi_mode; - - u2d->otg = otg_ulpi_create(&pxa310_ulpi_access_ops, ulpi_mode); - if (!u2d->otg) - return -ENOMEM; - - u2d->otg->io_priv = u2d->mmio_base; - - return 0; -} - -static void pxa310_otg_exit(void) -{ - kfree(u2d->otg); -} -#else -static inline void pxa310_u2d_setup_otg_hc(void) {} -static inline int pxa310_start_otg_hc(struct usb_bus *host) -{ - return 0; -} -static inline void pxa310_stop_otg_hc(void) {} -static inline int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata) -{ - return 0; -} -static inline void pxa310_otg_exit(void) {} -#endif /* CONFIG_PXA310_ULPI */ - -int pxa3xx_u2d_start_hc(struct usb_bus *host) -{ - int err = 0; - - /* In case the PXA3xx ULPI isn't used, do nothing. */ - if (!u2d) - return 0; - - clk_enable(u2d->clk); - - if (cpu_is_pxa310()) { - pxa310_u2d_setup_otg_hc(); - err = pxa310_start_otg_hc(host); - } - - return err; -} -EXPORT_SYMBOL_GPL(pxa3xx_u2d_start_hc); - -void pxa3xx_u2d_stop_hc(struct usb_bus *host) -{ - /* In case the PXA3xx ULPI isn't used, do nothing. */ - if (!u2d) - return; - - if (cpu_is_pxa310()) - pxa310_stop_otg_hc(); - - clk_disable(u2d->clk); -} -EXPORT_SYMBOL_GPL(pxa3xx_u2d_stop_hc); - -static int pxa3xx_u2d_probe(struct platform_device *pdev) -{ - struct pxa3xx_u2d_platform_data *pdata = pdev->dev.platform_data; - struct resource *r; - int err; - - u2d = kzalloc(sizeof(struct pxa3xx_u2d_ulpi), GFP_KERNEL); - if (!u2d) { - dev_err(&pdev->dev, "failed to allocate memory\n"); - return -ENOMEM; - } - - u2d->clk = clk_get(&pdev->dev, NULL); - if (IS_ERR(u2d->clk)) { - dev_err(&pdev->dev, "failed to get u2d clock\n"); - err = PTR_ERR(u2d->clk); - goto err_free_mem; - } - - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!r) { - dev_err(&pdev->dev, "no IO memory resource defined\n"); - err = -ENODEV; - goto err_put_clk; - } - - r = request_mem_region(r->start, resource_size(r), pdev->name); - if (!r) { - dev_err(&pdev->dev, "failed to request memory resource\n"); - err = -EBUSY; - goto err_put_clk; - } - - u2d->mmio_base = ioremap(r->start, resource_size(r)); - if (!u2d->mmio_base) { - dev_err(&pdev->dev, "ioremap() failed\n"); - err = -ENODEV; - goto err_free_res; - } - - if (pdata->init) { - err = pdata->init(&pdev->dev); - if (err) - goto err_free_io; - } - - /* Only PXA310 U2D has OTG functionality */ - if (cpu_is_pxa310()) { - err = pxa310_otg_init(pdata); - if (err) - goto err_free_plat; - } - - platform_set_drvdata(pdev, &u2d); - - return 0; - -err_free_plat: - if (pdata->exit) - pdata->exit(&pdev->dev); -err_free_io: - iounmap(u2d->mmio_base); -err_free_res: - release_mem_region(r->start, resource_size(r)); -err_put_clk: - clk_put(u2d->clk); -err_free_mem: - kfree(u2d); - return err; -} - -static int pxa3xx_u2d_remove(struct platform_device *pdev) -{ - struct pxa3xx_u2d_platform_data *pdata = pdev->dev.platform_data; - struct resource *r; - - if (cpu_is_pxa310()) { - pxa310_stop_otg_hc(); - pxa310_otg_exit(); - } - - if (pdata->exit) - pdata->exit(&pdev->dev); - - platform_set_drvdata(pdev, NULL); - iounmap(u2d->mmio_base); - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); - release_mem_region(r->start, resource_size(r)); - - clk_put(u2d->clk); - - kfree(u2d); - - return 0; -} - -static struct platform_driver pxa3xx_u2d_ulpi_driver = { - .driver = { - .name = "pxa3xx-u2d", - .owner = THIS_MODULE, - }, - .probe = pxa3xx_u2d_probe, - .remove = pxa3xx_u2d_remove, -}; - -static int pxa3xx_u2d_ulpi_init(void) -{ - return platform_driver_register(&pxa3xx_u2d_ulpi_driver); -} -module_init(pxa3xx_u2d_ulpi_init); - -static void __exit pxa3xx_u2d_ulpi_exit(void) -{ - platform_driver_unregister(&pxa3xx_u2d_ulpi_driver); -} -module_exit(pxa3xx_u2d_ulpi_exit); - -MODULE_DESCRIPTION("PXA3xx U2D ULPI driver"); -MODULE_AUTHOR("Igor Grinberg"); -MODULE_LICENSE("GPL v2"); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx.c deleted file mode 100644 index dffb7e81..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa3xx.c +++ /dev/null @@ -1,475 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa3xx.c - * - * code specific to pxa3xx aka Monahans - * - * Copyright (C) 2006 Marvell International Ltd. - * - * 2007-09-02: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/pm.h> -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach/map.h> -#include <asm/suspend.h> -#include <mach/hardware.h> -#include <mach/pxa3xx-regs.h> -#include <mach/reset.h> -#include <mach/ohci.h> -#include <mach/pm.h> -#include <mach/dma.h> -#include <mach/smemc.h> -#include <mach/irqs.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -#define PECR_IE(n) ((1 << ((n) * 2)) << 28) -#define PECR_IS(n) ((1 << ((n) * 2)) << 29) - -static DEFINE_PXA3_CKEN(pxa3xx_ffuart, FFUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa3xx_btuart, BTUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa3xx_stuart, STUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa3xx_i2c, I2C, 32842000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_udc, UDC, 48000000, 5); -static DEFINE_PXA3_CKEN(pxa3xx_usbh, USBH, 48000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_u2d, USB2, 48000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_keypad, KEYPAD, 32768, 0); -static DEFINE_PXA3_CKEN(pxa3xx_ssp1, SSP1, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_ssp2, SSP2, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_ssp3, SSP3, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_ssp4, SSP4, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_pwm0, PWM0, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_pwm1, PWM1, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_mmc1, MMC1, 19500000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_mmc2, MMC2, 19500000, 0); -static DEFINE_PXA3_CKEN(pxa3xx_gpio, GPIO, 13000000, 0); - -static DEFINE_CK(pxa3xx_lcd, LCD, &clk_pxa3xx_hsio_ops); -static DEFINE_CK(pxa3xx_smemc, SMC, &clk_pxa3xx_smemc_ops); -static DEFINE_CK(pxa3xx_camera, CAMERA, &clk_pxa3xx_hsio_ops); -static DEFINE_CK(pxa3xx_ac97, AC97, &clk_pxa3xx_ac97_ops); -static DEFINE_CLK(pxa3xx_pout, &clk_pxa3xx_pout_ops, 13000000, 70); - -static struct clk_lookup pxa3xx_clkregs[] = { - INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"), - /* Power I2C clock is always on */ - INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), - INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL), - INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"), - INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"), - INIT_CLKREG(&clk_pxa3xx_ffuart, "pxa2xx-uart.0", NULL), - INIT_CLKREG(&clk_pxa3xx_btuart, "pxa2xx-uart.1", NULL), - INIT_CLKREG(&clk_pxa3xx_stuart, "pxa2xx-uart.2", NULL), - INIT_CLKREG(&clk_pxa3xx_stuart, "pxa2xx-ir", "UARTCLK"), - INIT_CLKREG(&clk_pxa3xx_i2c, "pxa2xx-i2c.0", NULL), - INIT_CLKREG(&clk_pxa3xx_udc, "pxa27x-udc", NULL), - INIT_CLKREG(&clk_pxa3xx_usbh, "pxa27x-ohci", NULL), - INIT_CLKREG(&clk_pxa3xx_u2d, "pxa3xx-u2d", NULL), - INIT_CLKREG(&clk_pxa3xx_keypad, "pxa27x-keypad", NULL), - INIT_CLKREG(&clk_pxa3xx_ssp1, "pxa27x-ssp.0", NULL), - INIT_CLKREG(&clk_pxa3xx_ssp2, "pxa27x-ssp.1", NULL), - INIT_CLKREG(&clk_pxa3xx_ssp3, "pxa27x-ssp.2", NULL), - INIT_CLKREG(&clk_pxa3xx_ssp4, "pxa27x-ssp.3", NULL), - INIT_CLKREG(&clk_pxa3xx_pwm0, "pxa27x-pwm.0", NULL), - INIT_CLKREG(&clk_pxa3xx_pwm1, "pxa27x-pwm.1", NULL), - INIT_CLKREG(&clk_pxa3xx_mmc1, "pxa2xx-mci.0", NULL), - INIT_CLKREG(&clk_pxa3xx_mmc2, "pxa2xx-mci.1", NULL), - INIT_CLKREG(&clk_pxa3xx_smemc, "pxa2xx-pcmcia", NULL), - INIT_CLKREG(&clk_pxa3xx_gpio, "pxa-gpio", NULL), - INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), -}; - -#ifdef CONFIG_PM - -#define ISRAM_START 0x5c000000 -#define ISRAM_SIZE SZ_256K - -static void __iomem *sram; -static unsigned long wakeup_src; - -/* - * Enter a standby mode (S0D1C2 or S0D2C2). Upon wakeup, the dynamic - * memory controller has to be reinitialised, so we place some code - * in the SRAM to perform this function. - * - * We disable FIQs across the standby - otherwise, we might receive a - * FIQ while the SDRAM is unavailable. - */ -static void pxa3xx_cpu_standby(unsigned int pwrmode) -{ - extern const char pm_enter_standby_start[], pm_enter_standby_end[]; - void (*fn)(unsigned int) = (void __force *)(sram + 0x8000); - - memcpy_toio(sram + 0x8000, pm_enter_standby_start, - pm_enter_standby_end - pm_enter_standby_start); - - AD2D0SR = ~0; - AD2D1SR = ~0; - AD2D0ER = wakeup_src; - AD2D1ER = 0; - ASCR = ASCR; - ARSR = ARSR; - - local_fiq_disable(); - fn(pwrmode); - local_fiq_enable(); - - AD2D0ER = 0; - AD2D1ER = 0; -} - -/* - * NOTE: currently, the OBM (OEM Boot Module) binary comes along with - * PXA3xx development kits assumes that the resuming process continues - * with the address stored within the first 4 bytes of SDRAM. The PSPR - * register is used privately by BootROM and OBM, and _must_ be set to - * 0x5c014000 for the moment. - */ -static void pxa3xx_cpu_pm_suspend(void) -{ - volatile unsigned long *p = (volatile void *)0xc0000000; - unsigned long saved_data = *p; -#ifndef CONFIG_IWMMXT - u64 acc0; - - asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); -#endif - - extern int pxa3xx_finish_suspend(unsigned long); - - /* resuming from D2 requires the HSIO2/BOOT/TPM clocks enabled */ - CKENA |= (1 << CKEN_BOOT) | (1 << CKEN_TPM); - CKENB |= 1 << (CKEN_HSIO2 & 0x1f); - - /* clear and setup wakeup source */ - AD3SR = ~0; - AD3ER = wakeup_src; - ASCR = ASCR; - ARSR = ARSR; - - PCFR |= (1u << 13); /* L1_DIS */ - PCFR &= ~((1u << 12) | (1u << 1)); /* L0_EN | SL_ROD */ - - PSPR = 0x5c014000; - - /* overwrite with the resume address */ - *p = virt_to_phys(cpu_resume); - - cpu_suspend(0, pxa3xx_finish_suspend); - - *p = saved_data; - - AD3ER = 0; - -#ifndef CONFIG_IWMMXT - asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); -#endif -} - -static void pxa3xx_cpu_pm_enter(suspend_state_t state) -{ - /* - * Don't sleep if no wakeup sources are defined - */ - if (wakeup_src == 0) { - printk(KERN_ERR "Not suspending: no wakeup sources\n"); - return; - } - - switch (state) { - case PM_SUSPEND_STANDBY: - pxa3xx_cpu_standby(PXA3xx_PM_S0D2C2); - break; - - case PM_SUSPEND_MEM: - pxa3xx_cpu_pm_suspend(); - break; - } -} - -static int pxa3xx_cpu_pm_valid(suspend_state_t state) -{ - return state == PM_SUSPEND_MEM || state == PM_SUSPEND_STANDBY; -} - -static struct pxa_cpu_pm_fns pxa3xx_cpu_pm_fns = { - .valid = pxa3xx_cpu_pm_valid, - .enter = pxa3xx_cpu_pm_enter, -}; - -static void __init pxa3xx_init_pm(void) -{ - sram = ioremap(ISRAM_START, ISRAM_SIZE); - if (!sram) { - printk(KERN_ERR "Unable to map ISRAM: disabling standby/suspend\n"); - return; - } - - /* - * Since we copy wakeup code into the SRAM, we need to ensure - * that it is preserved over the low power modes. Note: bit 8 - * is undocumented in the developer manual, but must be set. - */ - AD1R |= ADXR_L2 | ADXR_R0; - AD2R |= ADXR_L2 | ADXR_R0; - AD3R |= ADXR_L2 | ADXR_R0; - - /* - * Clear the resume enable registers. - */ - AD1D0ER = 0; - AD2D0ER = 0; - AD2D1ER = 0; - AD3ER = 0; - - pxa_cpu_pm_fns = &pxa3xx_cpu_pm_fns; -} - -static int pxa3xx_set_wake(struct irq_data *d, unsigned int on) -{ - unsigned long flags, mask = 0; - - switch (d->irq) { - case IRQ_SSP3: - mask = ADXER_MFP_WSSP3; - break; - case IRQ_MSL: - mask = ADXER_WMSL0; - break; - case IRQ_USBH2: - case IRQ_USBH1: - mask = ADXER_WUSBH; - break; - case IRQ_KEYPAD: - mask = ADXER_WKP; - break; - case IRQ_AC97: - mask = ADXER_MFP_WAC97; - break; - case IRQ_USIM: - mask = ADXER_WUSIM0; - break; - case IRQ_SSP2: - mask = ADXER_MFP_WSSP2; - break; - case IRQ_I2C: - mask = ADXER_MFP_WI2C; - break; - case IRQ_STUART: - mask = ADXER_MFP_WUART3; - break; - case IRQ_BTUART: - mask = ADXER_MFP_WUART2; - break; - case IRQ_FFUART: - mask = ADXER_MFP_WUART1; - break; - case IRQ_MMC: - mask = ADXER_MFP_WMMC1; - break; - case IRQ_SSP: - mask = ADXER_MFP_WSSP1; - break; - case IRQ_RTCAlrm: - mask = ADXER_WRTC; - break; - case IRQ_SSP4: - mask = ADXER_MFP_WSSP4; - break; - case IRQ_TSI: - mask = ADXER_WTSI; - break; - case IRQ_USIM2: - mask = ADXER_WUSIM1; - break; - case IRQ_MMC2: - mask = ADXER_MFP_WMMC2; - break; - case IRQ_NAND: - mask = ADXER_MFP_WFLASH; - break; - case IRQ_USB2: - mask = ADXER_WUSB2; - break; - case IRQ_WAKEUP0: - mask = ADXER_WEXTWAKE0; - break; - case IRQ_WAKEUP1: - mask = ADXER_WEXTWAKE1; - break; - case IRQ_MMC3: - mask = ADXER_MFP_GEN12; - break; - default: - return -EINVAL; - } - - local_irq_save(flags); - if (on) - wakeup_src |= mask; - else - wakeup_src &= ~mask; - local_irq_restore(flags); - - return 0; -} -#else -static inline void pxa3xx_init_pm(void) {} -#define pxa3xx_set_wake NULL -#endif - -static void pxa_ack_ext_wakeup(struct irq_data *d) -{ - PECR |= PECR_IS(d->irq - IRQ_WAKEUP0); -} - -static void pxa_mask_ext_wakeup(struct irq_data *d) -{ - pxa_mask_irq(d); - PECR &= ~PECR_IE(d->irq - IRQ_WAKEUP0); -} - -static void pxa_unmask_ext_wakeup(struct irq_data *d) -{ - pxa_unmask_irq(d); - PECR |= PECR_IE(d->irq - IRQ_WAKEUP0); -} - -static int pxa_set_ext_wakeup_type(struct irq_data *d, unsigned int flow_type) -{ - if (flow_type & IRQ_TYPE_EDGE_RISING) - PWER |= 1 << (d->irq - IRQ_WAKEUP0); - - if (flow_type & IRQ_TYPE_EDGE_FALLING) - PWER |= 1 << (d->irq - IRQ_WAKEUP0 + 2); - - return 0; -} - -static struct irq_chip pxa_ext_wakeup_chip = { - .name = "WAKEUP", - .irq_ack = pxa_ack_ext_wakeup, - .irq_mask = pxa_mask_ext_wakeup, - .irq_unmask = pxa_unmask_ext_wakeup, - .irq_set_type = pxa_set_ext_wakeup_type, -}; - -static void __init pxa_init_ext_wakeup_irq(int (*fn)(struct irq_data *, - unsigned int)) -{ - int irq; - - for (irq = IRQ_WAKEUP0; irq <= IRQ_WAKEUP1; irq++) { - irq_set_chip_and_handler(irq, &pxa_ext_wakeup_chip, - handle_edge_irq); - set_irq_flags(irq, IRQF_VALID); - } - - pxa_ext_wakeup_chip.irq_set_wake = fn; -} - -void __init pxa3xx_init_irq(void) -{ - /* enable CP6 access */ - u32 value; - __asm__ __volatile__("mrc p15, 0, %0, c15, c1, 0\n": "=r"(value)); - value |= (1 << 6); - __asm__ __volatile__("mcr p15, 0, %0, c15, c1, 0\n": :"r"(value)); - - pxa_init_irq(56, pxa3xx_set_wake); - pxa_init_ext_wakeup_irq(pxa3xx_set_wake); -} - -static struct map_desc pxa3xx_io_desc[] __initdata = { - { /* Mem Ctl */ - .virtual = (unsigned long)SMEMC_VIRT, - .pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE), - .length = 0x00200000, - .type = MT_DEVICE - } -}; - -void __init pxa3xx_map_io(void) -{ - pxa_map_io(); - iotable_init(ARRAY_AND_SIZE(pxa3xx_io_desc)); - pxa3xx_get_clk_frequency_khz(1); -} - -/* - * device registration specific to PXA3xx. - */ - -void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_i2c_power, info); -} - -static struct platform_device *devices[] __initdata = { - &pxa_device_gpio, - &pxa27x_device_udc, - &pxa_device_pmu, - &pxa_device_i2s, - &pxa_device_asoc_ssp1, - &pxa_device_asoc_ssp2, - &pxa_device_asoc_ssp3, - &pxa_device_asoc_ssp4, - &pxa_device_asoc_platform, - &sa1100_device_rtc, - &pxa_device_rtc, - &pxa27x_device_ssp1, - &pxa27x_device_ssp2, - &pxa27x_device_ssp3, - &pxa3xx_device_ssp4, - &pxa27x_device_pwm0, - &pxa27x_device_pwm1, -}; - -static int __init pxa3xx_init(void) -{ - int ret = 0; - - if (cpu_is_pxa3xx()) { - - reset_status = ARSR; - - /* - * clear RDH bit every time after reset - * - * Note: the last 3 bits DxS are write-1-to-clear so carefully - * preserve them here in case they will be referenced later - */ - ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); - - clkdev_add_table(pxa3xx_clkregs, ARRAY_SIZE(pxa3xx_clkregs)); - - if ((ret = pxa_init_dma(IRQ_DMA, 32))) - return ret; - - pxa3xx_init_pm(); - - register_syscore_ops(&pxa_irq_syscore_ops); - register_syscore_ops(&pxa3xx_mfp_syscore_ops); - register_syscore_ops(&pxa3xx_clock_syscore_ops); - - ret = platform_add_devices(devices, ARRAY_SIZE(devices)); - } - - return ret; -} - -postcore_initcall(pxa3xx_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa930.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa930.c deleted file mode 100644 index 8aeacf90..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa930.c +++ /dev/null @@ -1,206 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa930.c - * - * Code specific to PXA930 - * - * Copyright (C) 2007-2008 Marvell Internation Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/irq.h> -#include <linux/dma-mapping.h> - -#include <mach/pxa930.h> - -static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = { - - MFP_ADDR(GPIO0, 0x02e0), - MFP_ADDR(GPIO1, 0x02dc), - MFP_ADDR(GPIO2, 0x02e8), - MFP_ADDR(GPIO3, 0x02d8), - MFP_ADDR(GPIO4, 0x02e4), - MFP_ADDR(GPIO5, 0x02ec), - MFP_ADDR(GPIO6, 0x02f8), - MFP_ADDR(GPIO7, 0x02fc), - MFP_ADDR(GPIO8, 0x0300), - MFP_ADDR(GPIO9, 0x02d4), - MFP_ADDR(GPIO10, 0x02f4), - MFP_ADDR(GPIO11, 0x02f0), - MFP_ADDR(GPIO12, 0x0304), - MFP_ADDR(GPIO13, 0x0310), - MFP_ADDR(GPIO14, 0x0308), - MFP_ADDR(GPIO15, 0x030c), - MFP_ADDR(GPIO16, 0x04e8), - MFP_ADDR(GPIO17, 0x04f4), - MFP_ADDR(GPIO18, 0x04f8), - MFP_ADDR(GPIO19, 0x04fc), - MFP_ADDR(GPIO20, 0x0518), - MFP_ADDR(GPIO21, 0x051c), - MFP_ADDR(GPIO22, 0x04ec), - MFP_ADDR(GPIO23, 0x0500), - MFP_ADDR(GPIO24, 0x04f0), - MFP_ADDR(GPIO25, 0x0504), - MFP_ADDR(GPIO26, 0x0510), - MFP_ADDR(GPIO27, 0x0514), - MFP_ADDR(GPIO28, 0x0520), - MFP_ADDR(GPIO29, 0x0600), - MFP_ADDR(GPIO30, 0x0618), - MFP_ADDR(GPIO31, 0x0610), - MFP_ADDR(GPIO32, 0x060c), - MFP_ADDR(GPIO33, 0x061c), - MFP_ADDR(GPIO34, 0x0620), - MFP_ADDR(GPIO35, 0x0628), - MFP_ADDR(GPIO36, 0x062c), - MFP_ADDR(GPIO37, 0x0630), - MFP_ADDR(GPIO38, 0x0634), - MFP_ADDR(GPIO39, 0x0638), - MFP_ADDR(GPIO40, 0x063c), - MFP_ADDR(GPIO41, 0x0614), - MFP_ADDR(GPIO42, 0x0624), - MFP_ADDR(GPIO43, 0x0608), - MFP_ADDR(GPIO44, 0x0604), - MFP_ADDR(GPIO45, 0x050c), - MFP_ADDR(GPIO46, 0x0508), - MFP_ADDR(GPIO47, 0x02bc), - MFP_ADDR(GPIO48, 0x02b4), - MFP_ADDR(GPIO49, 0x02b8), - MFP_ADDR(GPIO50, 0x02c8), - MFP_ADDR(GPIO51, 0x02c0), - MFP_ADDR(GPIO52, 0x02c4), - MFP_ADDR(GPIO53, 0x02d0), - MFP_ADDR(GPIO54, 0x02cc), - MFP_ADDR(GPIO55, 0x029c), - MFP_ADDR(GPIO56, 0x02a0), - MFP_ADDR(GPIO57, 0x0294), - MFP_ADDR(GPIO58, 0x0298), - MFP_ADDR(GPIO59, 0x02a4), - MFP_ADDR(GPIO60, 0x02a8), - MFP_ADDR(GPIO61, 0x02b0), - MFP_ADDR(GPIO62, 0x02ac), - MFP_ADDR(GPIO63, 0x0640), - MFP_ADDR(GPIO64, 0x065c), - MFP_ADDR(GPIO65, 0x0648), - MFP_ADDR(GPIO66, 0x0644), - MFP_ADDR(GPIO67, 0x0674), - MFP_ADDR(GPIO68, 0x0658), - MFP_ADDR(GPIO69, 0x0654), - MFP_ADDR(GPIO70, 0x0660), - MFP_ADDR(GPIO71, 0x0668), - MFP_ADDR(GPIO72, 0x0664), - MFP_ADDR(GPIO73, 0x0650), - MFP_ADDR(GPIO74, 0x066c), - MFP_ADDR(GPIO75, 0x064c), - MFP_ADDR(GPIO76, 0x0670), - MFP_ADDR(GPIO77, 0x0678), - MFP_ADDR(GPIO78, 0x067c), - MFP_ADDR(GPIO79, 0x0694), - MFP_ADDR(GPIO80, 0x069c), - MFP_ADDR(GPIO81, 0x06a0), - MFP_ADDR(GPIO82, 0x06a4), - MFP_ADDR(GPIO83, 0x0698), - MFP_ADDR(GPIO84, 0x06bc), - MFP_ADDR(GPIO85, 0x06b4), - MFP_ADDR(GPIO86, 0x06b0), - MFP_ADDR(GPIO87, 0x06c0), - MFP_ADDR(GPIO88, 0x06c4), - MFP_ADDR(GPIO89, 0x06ac), - MFP_ADDR(GPIO90, 0x0680), - MFP_ADDR(GPIO91, 0x0684), - MFP_ADDR(GPIO92, 0x0688), - MFP_ADDR(GPIO93, 0x0690), - MFP_ADDR(GPIO94, 0x068c), - MFP_ADDR(GPIO95, 0x06a8), - MFP_ADDR(GPIO96, 0x06b8), - MFP_ADDR(GPIO97, 0x0410), - MFP_ADDR(GPIO98, 0x0418), - MFP_ADDR(GPIO99, 0x041c), - MFP_ADDR(GPIO100, 0x0414), - MFP_ADDR(GPIO101, 0x0408), - MFP_ADDR(GPIO102, 0x0324), - MFP_ADDR(GPIO103, 0x040c), - MFP_ADDR(GPIO104, 0x0400), - MFP_ADDR(GPIO105, 0x0328), - MFP_ADDR(GPIO106, 0x0404), - - MFP_ADDR(nXCVREN, 0x0204), - MFP_ADDR(DF_CLE_nOE, 0x020c), - MFP_ADDR(DF_nADV1_ALE, 0x0218), - MFP_ADDR(DF_SCLK_E, 0x0214), - MFP_ADDR(DF_SCLK_S, 0x0210), - MFP_ADDR(nBE0, 0x021c), - MFP_ADDR(nBE1, 0x0220), - MFP_ADDR(DF_nADV2_ALE, 0x0224), - MFP_ADDR(DF_INT_RnB, 0x0228), - MFP_ADDR(DF_nCS0, 0x022c), - MFP_ADDR(DF_nCS1, 0x0230), - MFP_ADDR(nLUA, 0x0254), - MFP_ADDR(nLLA, 0x0258), - MFP_ADDR(DF_nWE, 0x0234), - MFP_ADDR(DF_nRE_nOE, 0x0238), - MFP_ADDR(DF_ADDR0, 0x024c), - MFP_ADDR(DF_ADDR1, 0x0250), - MFP_ADDR(DF_ADDR2, 0x025c), - MFP_ADDR(DF_ADDR3, 0x0260), - MFP_ADDR(DF_IO0, 0x023c), - MFP_ADDR(DF_IO1, 0x0240), - MFP_ADDR(DF_IO2, 0x0244), - MFP_ADDR(DF_IO3, 0x0248), - MFP_ADDR(DF_IO4, 0x0264), - MFP_ADDR(DF_IO5, 0x0268), - MFP_ADDR(DF_IO6, 0x026c), - MFP_ADDR(DF_IO7, 0x0270), - MFP_ADDR(DF_IO8, 0x0274), - MFP_ADDR(DF_IO9, 0x0278), - MFP_ADDR(DF_IO10, 0x027c), - MFP_ADDR(DF_IO11, 0x0280), - MFP_ADDR(DF_IO12, 0x0284), - MFP_ADDR(DF_IO13, 0x0288), - MFP_ADDR(DF_IO14, 0x028c), - MFP_ADDR(DF_IO15, 0x0290), - - MFP_ADDR(GSIM_UIO, 0x0314), - MFP_ADDR(GSIM_UCLK, 0x0318), - MFP_ADDR(GSIM_UDET, 0x031c), - MFP_ADDR(GSIM_nURST, 0x0320), - - MFP_ADDR(PMIC_INT, 0x06c8), - - MFP_ADDR(RDY, 0x0200), - - MFP_ADDR_END, -}; - -static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = { - MFP_ADDR(GPIO159, 0x0524), - MFP_ADDR(GPIO163, 0x0534), - MFP_ADDR(GPIO167, 0x0544), - MFP_ADDR(GPIO168, 0x0548), - MFP_ADDR(GPIO169, 0x054c), - MFP_ADDR(GPIO170, 0x0550), - MFP_ADDR(GPIO171, 0x0554), - MFP_ADDR(GPIO172, 0x0558), - MFP_ADDR(GPIO173, 0x055c), - - MFP_ADDR_END, -}; - -static int __init pxa930_init(void) -{ - if (cpu_is_pxa93x()) { - mfp_init_base(io_p2v(MFPR_BASE)); - mfp_init_addr(pxa930_mfp_addr_map); - } - - if (cpu_is_pxa935()) - mfp_init_addr(pxa935_mfp_addr_map); - - return 0; -} - -core_initcall(pxa930_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa95x.c b/ANDROID_3.4.5/arch/arm/mach-pxa/pxa95x.c deleted file mode 100644 index 47601f80..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/pxa95x.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/pxa95x.c - * - * code specific to PXA95x aka MGx - * - * Copyright (C) 2009-2010 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/pm.h> -#include <linux/platform_device.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/irq.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/hardware.h> -#include <mach/pxa3xx-regs.h> -#include <mach/pxa930.h> -#include <mach/reset.h> -#include <mach/pm.h> -#include <mach/dma.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -static struct mfp_addr_map pxa95x_mfp_addr_map[] __initdata = { - - MFP_ADDR(GPIO0, 0x02e0), - MFP_ADDR(GPIO1, 0x02dc), - MFP_ADDR(GPIO2, 0x02e8), - MFP_ADDR(GPIO3, 0x02d8), - MFP_ADDR(GPIO4, 0x02e4), - MFP_ADDR(GPIO5, 0x02ec), - MFP_ADDR(GPIO6, 0x02f8), - MFP_ADDR(GPIO7, 0x02fc), - MFP_ADDR(GPIO8, 0x0300), - MFP_ADDR(GPIO9, 0x02d4), - MFP_ADDR(GPIO10, 0x02f4), - MFP_ADDR(GPIO11, 0x02f0), - MFP_ADDR(GPIO12, 0x0304), - MFP_ADDR(GPIO13, 0x0310), - MFP_ADDR(GPIO14, 0x0308), - MFP_ADDR(GPIO15, 0x030c), - MFP_ADDR(GPIO16, 0x04e8), - MFP_ADDR(GPIO17, 0x04f4), - MFP_ADDR(GPIO18, 0x04f8), - MFP_ADDR(GPIO19, 0x04fc), - MFP_ADDR(GPIO20, 0x0518), - MFP_ADDR(GPIO21, 0x051c), - MFP_ADDR(GPIO22, 0x04ec), - MFP_ADDR(GPIO23, 0x0500), - MFP_ADDR(GPIO24, 0x04f0), - MFP_ADDR(GPIO25, 0x0504), - MFP_ADDR(GPIO26, 0x0510), - MFP_ADDR(GPIO27, 0x0514), - MFP_ADDR(GPIO28, 0x0520), - MFP_ADDR(GPIO29, 0x0600), - MFP_ADDR(GPIO30, 0x0618), - MFP_ADDR(GPIO31, 0x0610), - MFP_ADDR(GPIO32, 0x060c), - MFP_ADDR(GPIO33, 0x061c), - MFP_ADDR(GPIO34, 0x0620), - MFP_ADDR(GPIO35, 0x0628), - MFP_ADDR(GPIO36, 0x062c), - MFP_ADDR(GPIO37, 0x0630), - MFP_ADDR(GPIO38, 0x0634), - MFP_ADDR(GPIO39, 0x0638), - MFP_ADDR(GPIO40, 0x063c), - MFP_ADDR(GPIO41, 0x0614), - MFP_ADDR(GPIO42, 0x0624), - MFP_ADDR(GPIO43, 0x0608), - MFP_ADDR(GPIO44, 0x0604), - MFP_ADDR(GPIO45, 0x050c), - MFP_ADDR(GPIO46, 0x0508), - MFP_ADDR(GPIO47, 0x02bc), - MFP_ADDR(GPIO48, 0x02b4), - MFP_ADDR(GPIO49, 0x02b8), - MFP_ADDR(GPIO50, 0x02c8), - MFP_ADDR(GPIO51, 0x02c0), - MFP_ADDR(GPIO52, 0x02c4), - MFP_ADDR(GPIO53, 0x02d0), - MFP_ADDR(GPIO54, 0x02cc), - MFP_ADDR(GPIO55, 0x029c), - MFP_ADDR(GPIO56, 0x02a0), - MFP_ADDR(GPIO57, 0x0294), - MFP_ADDR(GPIO58, 0x0298), - MFP_ADDR(GPIO59, 0x02a4), - MFP_ADDR(GPIO60, 0x02a8), - MFP_ADDR(GPIO61, 0x02b0), - MFP_ADDR(GPIO62, 0x02ac), - MFP_ADDR(GPIO63, 0x0640), - MFP_ADDR(GPIO64, 0x065c), - MFP_ADDR(GPIO65, 0x0648), - MFP_ADDR(GPIO66, 0x0644), - MFP_ADDR(GPIO67, 0x0674), - MFP_ADDR(GPIO68, 0x0658), - MFP_ADDR(GPIO69, 0x0654), - MFP_ADDR(GPIO70, 0x0660), - MFP_ADDR(GPIO71, 0x0668), - MFP_ADDR(GPIO72, 0x0664), - MFP_ADDR(GPIO73, 0x0650), - MFP_ADDR(GPIO74, 0x066c), - MFP_ADDR(GPIO75, 0x064c), - MFP_ADDR(GPIO76, 0x0670), - MFP_ADDR(GPIO77, 0x0678), - MFP_ADDR(GPIO78, 0x067c), - MFP_ADDR(GPIO79, 0x0694), - MFP_ADDR(GPIO80, 0x069c), - MFP_ADDR(GPIO81, 0x06a0), - MFP_ADDR(GPIO82, 0x06a4), - MFP_ADDR(GPIO83, 0x0698), - MFP_ADDR(GPIO84, 0x06bc), - MFP_ADDR(GPIO85, 0x06b4), - MFP_ADDR(GPIO86, 0x06b0), - MFP_ADDR(GPIO87, 0x06c0), - MFP_ADDR(GPIO88, 0x06c4), - MFP_ADDR(GPIO89, 0x06ac), - MFP_ADDR(GPIO90, 0x0680), - MFP_ADDR(GPIO91, 0x0684), - MFP_ADDR(GPIO92, 0x0688), - MFP_ADDR(GPIO93, 0x0690), - MFP_ADDR(GPIO94, 0x068c), - MFP_ADDR(GPIO95, 0x06a8), - MFP_ADDR(GPIO96, 0x06b8), - MFP_ADDR(GPIO97, 0x0410), - MFP_ADDR(GPIO98, 0x0418), - MFP_ADDR(GPIO99, 0x041c), - MFP_ADDR(GPIO100, 0x0414), - MFP_ADDR(GPIO101, 0x0408), - MFP_ADDR(GPIO102, 0x0324), - MFP_ADDR(GPIO103, 0x040c), - MFP_ADDR(GPIO104, 0x0400), - MFP_ADDR(GPIO105, 0x0328), - MFP_ADDR(GPIO106, 0x0404), - - MFP_ADDR(GPIO159, 0x0524), - MFP_ADDR(GPIO163, 0x0534), - MFP_ADDR(GPIO167, 0x0544), - MFP_ADDR(GPIO168, 0x0548), - MFP_ADDR(GPIO169, 0x054c), - MFP_ADDR(GPIO170, 0x0550), - MFP_ADDR(GPIO171, 0x0554), - MFP_ADDR(GPIO172, 0x0558), - MFP_ADDR(GPIO173, 0x055c), - - MFP_ADDR(nXCVREN, 0x0204), - MFP_ADDR(DF_CLE_nOE, 0x020c), - MFP_ADDR(DF_nADV1_ALE, 0x0218), - MFP_ADDR(DF_SCLK_E, 0x0214), - MFP_ADDR(DF_SCLK_S, 0x0210), - MFP_ADDR(nBE0, 0x021c), - MFP_ADDR(nBE1, 0x0220), - MFP_ADDR(DF_nADV2_ALE, 0x0224), - MFP_ADDR(DF_INT_RnB, 0x0228), - MFP_ADDR(DF_nCS0, 0x022c), - MFP_ADDR(DF_nCS1, 0x0230), - MFP_ADDR(nLUA, 0x0254), - MFP_ADDR(nLLA, 0x0258), - MFP_ADDR(DF_nWE, 0x0234), - MFP_ADDR(DF_nRE_nOE, 0x0238), - MFP_ADDR(DF_ADDR0, 0x024c), - MFP_ADDR(DF_ADDR1, 0x0250), - MFP_ADDR(DF_ADDR2, 0x025c), - MFP_ADDR(DF_ADDR3, 0x0260), - MFP_ADDR(DF_IO0, 0x023c), - MFP_ADDR(DF_IO1, 0x0240), - MFP_ADDR(DF_IO2, 0x0244), - MFP_ADDR(DF_IO3, 0x0248), - MFP_ADDR(DF_IO4, 0x0264), - MFP_ADDR(DF_IO5, 0x0268), - MFP_ADDR(DF_IO6, 0x026c), - MFP_ADDR(DF_IO7, 0x0270), - MFP_ADDR(DF_IO8, 0x0274), - MFP_ADDR(DF_IO9, 0x0278), - MFP_ADDR(DF_IO10, 0x027c), - MFP_ADDR(DF_IO11, 0x0280), - MFP_ADDR(DF_IO12, 0x0284), - MFP_ADDR(DF_IO13, 0x0288), - MFP_ADDR(DF_IO14, 0x028c), - MFP_ADDR(DF_IO15, 0x0290), - - MFP_ADDR(GSIM_UIO, 0x0314), - MFP_ADDR(GSIM_UCLK, 0x0318), - MFP_ADDR(GSIM_UDET, 0x031c), - MFP_ADDR(GSIM_nURST, 0x0320), - - MFP_ADDR(PMIC_INT, 0x06c8), - - MFP_ADDR(RDY, 0x0200), - - MFP_ADDR_END, -}; - -static DEFINE_CK(pxa95x_lcd, LCD, &clk_pxa3xx_hsio_ops); -static DEFINE_CLK(pxa95x_pout, &clk_pxa3xx_pout_ops, 13000000, 70); -static DEFINE_PXA3_CKEN(pxa95x_ffuart, FFUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa95x_btuart, BTUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa95x_stuart, STUART, 14857000, 1); -static DEFINE_PXA3_CKEN(pxa95x_i2c, I2C, 32842000, 0); -static DEFINE_PXA3_CKEN(pxa95x_keypad, KEYPAD, 32768, 0); -static DEFINE_PXA3_CKEN(pxa95x_ssp1, SSP1, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_ssp2, SSP2, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_ssp3, SSP3, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_ssp4, SSP4, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_pwm0, PWM0, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_pwm1, PWM1, 13000000, 0); -static DEFINE_PXA3_CKEN(pxa95x_gpio, GPIO, 13000000, 0); - -static struct clk_lookup pxa95x_clkregs[] = { - INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"), - /* Power I2C clock is always on */ - INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), - INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL), - INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL), - INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL), - INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-uart.2", NULL), - INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-ir", "UARTCLK"), - INIT_CLKREG(&clk_pxa95x_i2c, "pxa2xx-i2c.0", NULL), - INIT_CLKREG(&clk_pxa95x_keypad, "pxa27x-keypad", NULL), - INIT_CLKREG(&clk_pxa95x_ssp1, "pxa27x-ssp.0", NULL), - INIT_CLKREG(&clk_pxa95x_ssp2, "pxa27x-ssp.1", NULL), - INIT_CLKREG(&clk_pxa95x_ssp3, "pxa27x-ssp.2", NULL), - INIT_CLKREG(&clk_pxa95x_ssp4, "pxa27x-ssp.3", NULL), - INIT_CLKREG(&clk_pxa95x_pwm0, "pxa27x-pwm.0", NULL), - INIT_CLKREG(&clk_pxa95x_pwm1, "pxa27x-pwm.1", NULL), - INIT_CLKREG(&clk_pxa95x_gpio, "pxa-gpio", NULL), - INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), -}; - -void __init pxa95x_init_irq(void) -{ - pxa_init_irq(96, NULL); -} - -/* - * device registration specific to PXA93x. - */ - -void __init pxa95x_set_i2c_power_info(struct i2c_pxa_platform_data *info) -{ - pxa_register_device(&pxa3xx_device_i2c_power, info); -} - -static struct platform_device *devices[] __initdata = { - &pxa_device_gpio, - &sa1100_device_rtc, - &pxa_device_rtc, - &pxa27x_device_ssp1, - &pxa27x_device_ssp2, - &pxa27x_device_ssp3, - &pxa3xx_device_ssp4, - &pxa27x_device_pwm0, - &pxa27x_device_pwm1, -}; - -static int __init pxa95x_init(void) -{ - int ret = 0, i; - - if (cpu_is_pxa95x()) { - mfp_init_base(io_p2v(MFPR_BASE)); - mfp_init_addr(pxa95x_mfp_addr_map); - - reset_status = ARSR; - - /* - * clear RDH bit every time after reset - * - * Note: the last 3 bits DxS are write-1-to-clear so carefully - * preserve them here in case they will be referenced later - */ - ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); - - clkdev_add_table(pxa95x_clkregs, ARRAY_SIZE(pxa95x_clkregs)); - - if ((ret = pxa_init_dma(IRQ_DMA, 32))) - return ret; - - register_syscore_ops(&pxa_irq_syscore_ops); - register_syscore_ops(&pxa3xx_clock_syscore_ops); - - ret = platform_add_devices(devices, ARRAY_SIZE(devices)); - } - - return ret; -} - -postcore_initcall(pxa95x_init); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/raumfeld.c b/ANDROID_3.4.5/arch/arm/mach-pxa/raumfeld.c deleted file mode 100644 index 5905ed13..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/raumfeld.c +++ /dev/null @@ -1,1127 +0,0 @@ -/* - * arch/arm/mach-pxa/raumfeld.c - * - * Support for the following Raumfeld devices: - * - * * Controller - * * Connector - * * Speaker S/M - * - * See http://www.raumfeld.com for details. - * - * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/gpio.h> -#include <linux/smsc911x.h> -#include <linux/input.h> -#include <linux/rotary_encoder.h> -#include <linux/gpio_keys.h> -#include <linux/input/eeti_ts.h> -#include <linux/leds.h> -#include <linux/w1-gpio.h> -#include <linux/sched.h> -#include <linux/pwm_backlight.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/spi/spi.h> -#include <linux/spi/spi_gpio.h> -#include <linux/lis3lv02d.h> -#include <linux/pda_power.h> -#include <linux/power_supply.h> -#include <linux/regulator/max8660.h> -#include <linux/regulator/machine.h> -#include <linux/regulator/fixed.h> -#include <linux/regulator/consumer.h> -#include <linux/delay.h> - -#include <asm/system_info.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa300.h> -#include <mach/ohci.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <plat/pxa3xx_nand.h> - -#include "generic.h" -#include "devices.h" -#include "clock.h" - -/* common GPIO definitions */ - -/* inputs */ -#define GPIO_ON_OFF (14) -#define GPIO_VOLENC_A (19) -#define GPIO_VOLENC_B (20) -#define GPIO_CHARGE_DONE (23) -#define GPIO_CHARGE_IND (27) -#define GPIO_TOUCH_IRQ (32) -#define GPIO_ETH_IRQ (40) -#define GPIO_SPI_MISO (98) -#define GPIO_ACCEL_IRQ (104) -#define GPIO_RESCUE_BOOT (115) -#define GPIO_DOCK_DETECT (116) -#define GPIO_KEY1 (117) -#define GPIO_KEY2 (118) -#define GPIO_KEY3 (119) -#define GPIO_CHARGE_USB_OK (112) -#define GPIO_CHARGE_DC_OK (101) -#define GPIO_CHARGE_USB_SUSP (102) - -/* outputs */ -#define GPIO_SHUTDOWN_SUPPLY (16) -#define GPIO_SHUTDOWN_BATT (18) -#define GPIO_CHRG_PEN2 (31) -#define GPIO_TFT_VA_EN (33) -#define GPIO_SPDIF_CS (34) -#define GPIO_LED2 (35) -#define GPIO_LED1 (36) -#define GPIO_SPDIF_RESET (38) -#define GPIO_SPI_CLK (95) -#define GPIO_MCLK_DAC_CS (96) -#define GPIO_SPI_MOSI (97) -#define GPIO_W1_PULLUP_ENABLE (105) -#define GPIO_DISPLAY_ENABLE (106) -#define GPIO_MCLK_RESET (111) -#define GPIO_W2W_RESET (113) -#define GPIO_W2W_PDN (114) -#define GPIO_CODEC_RESET (120) -#define GPIO_AUDIO_VA_ENABLE (124) -#define GPIO_ACCEL_CS (125) -#define GPIO_ONE_WIRE (126) - -/* - * GPIO configurations - */ -static mfp_cfg_t raumfeld_controller_pin_config[] __initdata = { - /* UART1 */ - GPIO77_UART1_RXD, - GPIO78_UART1_TXD, - GPIO79_UART1_CTS, - GPIO81_UART1_DSR, - GPIO83_UART1_DTR, - GPIO84_UART1_RTS, - - /* UART3 */ - GPIO110_UART3_RXD, - - /* USB Host */ - GPIO0_2_USBH_PEN, - GPIO1_2_USBH_PWR, - - /* I2C */ - GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - - /* SPI */ - GPIO34_GPIO, /* SPDIF_CS */ - GPIO96_GPIO, /* MCLK_CS */ - GPIO125_GPIO, /* ACCEL_CS */ - - /* MMC */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, - - /* One-wire */ - GPIO126_GPIO | MFP_LPM_FLOAT, - GPIO105_GPIO | MFP_PULL_LOW | MFP_LPM_PULL_LOW, - - /* CHRG_USB_OK */ - GPIO101_GPIO | MFP_PULL_HIGH, - /* CHRG_USB_OK */ - GPIO112_GPIO | MFP_PULL_HIGH, - /* CHRG_USB_SUSP */ - GPIO102_GPIO, - /* DISPLAY_ENABLE */ - GPIO106_GPIO, - /* DOCK_DETECT */ - GPIO116_GPIO | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - - /* LCD */ - GPIO54_LCD_LDD_0, - GPIO55_LCD_LDD_1, - GPIO56_LCD_LDD_2, - GPIO57_LCD_LDD_3, - GPIO58_LCD_LDD_4, - GPIO59_LCD_LDD_5, - GPIO60_LCD_LDD_6, - GPIO61_LCD_LDD_7, - GPIO62_LCD_LDD_8, - GPIO63_LCD_LDD_9, - GPIO64_LCD_LDD_10, - GPIO65_LCD_LDD_11, - GPIO66_LCD_LDD_12, - GPIO67_LCD_LDD_13, - GPIO68_LCD_LDD_14, - GPIO69_LCD_LDD_15, - GPIO70_LCD_LDD_16, - GPIO71_LCD_LDD_17, - GPIO72_LCD_FCLK, - GPIO73_LCD_LCLK, - GPIO74_LCD_PCLK, - GPIO75_LCD_BIAS, -}; - -static mfp_cfg_t raumfeld_connector_pin_config[] __initdata = { - /* UART1 */ - GPIO77_UART1_RXD, - GPIO78_UART1_TXD, - GPIO79_UART1_CTS, - GPIO81_UART1_DSR, - GPIO83_UART1_DTR, - GPIO84_UART1_RTS, - - /* UART3 */ - GPIO110_UART3_RXD, - - /* USB Host */ - GPIO0_2_USBH_PEN, - GPIO1_2_USBH_PWR, - - /* I2C */ - GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - - /* SPI */ - GPIO34_GPIO, /* SPDIF_CS */ - GPIO96_GPIO, /* MCLK_CS */ - GPIO125_GPIO, /* ACCEL_CS */ - - /* MMC */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, - - /* Ethernet */ - GPIO1_nCS2, /* CS */ - GPIO40_GPIO | MFP_PULL_HIGH, /* IRQ */ - - /* SSP for I2S */ - GPIO85_SSP1_SCLK, - GPIO89_SSP1_EXTCLK, - GPIO86_SSP1_FRM, - GPIO87_SSP1_TXD, - GPIO88_SSP1_RXD, - GPIO90_SSP1_SYSCLK, - - /* SSP2 for S/PDIF */ - GPIO25_SSP2_SCLK, - GPIO26_SSP2_FRM, - GPIO27_SSP2_TXD, - GPIO29_SSP2_EXTCLK, - - /* LEDs */ - GPIO35_GPIO | MFP_LPM_PULL_LOW, - GPIO36_GPIO | MFP_LPM_DRIVE_HIGH, -}; - -static mfp_cfg_t raumfeld_speaker_pin_config[] __initdata = { - /* UART1 */ - GPIO77_UART1_RXD, - GPIO78_UART1_TXD, - GPIO79_UART1_CTS, - GPIO81_UART1_DSR, - GPIO83_UART1_DTR, - GPIO84_UART1_RTS, - - /* UART3 */ - GPIO110_UART3_RXD, - - /* USB Host */ - GPIO0_2_USBH_PEN, - GPIO1_2_USBH_PWR, - - /* I2C */ - GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT, - - /* SPI */ - GPIO34_GPIO, /* SPDIF_CS */ - GPIO96_GPIO, /* MCLK_CS */ - GPIO125_GPIO, /* ACCEL_CS */ - - /* MMC */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, - - /* Ethernet */ - GPIO1_nCS2, /* CS */ - GPIO40_GPIO | MFP_PULL_HIGH, /* IRQ */ - - /* SSP for I2S */ - GPIO85_SSP1_SCLK, - GPIO89_SSP1_EXTCLK, - GPIO86_SSP1_FRM, - GPIO87_SSP1_TXD, - GPIO88_SSP1_RXD, - GPIO90_SSP1_SYSCLK, - - /* LEDs */ - GPIO35_GPIO | MFP_LPM_PULL_LOW, - GPIO36_GPIO | MFP_LPM_DRIVE_HIGH, -}; - -/* - * SMSC LAN9220 Ethernet - */ - -static struct resource smc91x_resources[] = { - { - .start = PXA3xx_CS2_PHYS, - .end = PXA3xx_CS2_PHYS + 0xfffff, - .flags = IORESOURCE_MEM, - }, - { - .start = PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ), - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING, - } -}; - -static struct smsc911x_platform_config raumfeld_smsc911x_config = { - .phy_interface = PHY_INTERFACE_MODE_MII, - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, - .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, - .flags = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS, -}; - -static struct platform_device smc91x_device = { - .name = "smsc911x", - .id = -1, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &raumfeld_smsc911x_config, - } -}; - -/** - * NAND - */ - -static struct mtd_partition raumfeld_nand_partitions[] = { - { - .name = "Bootloader", - .offset = 0, - .size = 0xa0000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - { - .name = "BootloaderEnvironment", - .offset = 0xa0000, - .size = 0x20000, - }, - { - .name = "BootloaderSplashScreen", - .offset = 0xc0000, - .size = 0x60000, - }, - { - .name = "UBI", - .offset = 0x120000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct pxa3xx_nand_platform_data raumfeld_nand_info = { - .enable_arbiter = 1, - .keep_config = 1, - .num_cs = 1, - .parts[0] = raumfeld_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(raumfeld_nand_partitions), -}; - -/** - * USB (OHCI) support - */ - -static struct pxaohci_platform_data raumfeld_ohci_info = { - .port_mode = PMM_GLOBAL_MODE, - .flags = ENABLE_PORT1, -}; - -/** - * Rotary encoder input device - */ - -static struct rotary_encoder_platform_data raumfeld_rotary_encoder_info = { - .steps = 24, - .axis = REL_X, - .relative_axis = 1, - .gpio_a = GPIO_VOLENC_A, - .gpio_b = GPIO_VOLENC_B, - .inverted_a = 1, - .inverted_b = 0, -}; - -static struct platform_device rotary_encoder_device = { - .name = "rotary-encoder", - .id = 0, - .dev = { - .platform_data = &raumfeld_rotary_encoder_info, - } -}; - -/** - * GPIO buttons - */ - -static struct gpio_keys_button gpio_keys_button[] = { - { - .code = KEY_F1, - .type = EV_KEY, - .gpio = GPIO_KEY1, - .active_low = 1, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "Button 1", - }, - { - .code = KEY_F2, - .type = EV_KEY, - .gpio = GPIO_KEY2, - .active_low = 1, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "Button 2", - }, - { - .code = KEY_F3, - .type = EV_KEY, - .gpio = GPIO_KEY3, - .active_low = 1, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "Button 3", - }, - { - .code = KEY_F4, - .type = EV_KEY, - .gpio = GPIO_RESCUE_BOOT, - .active_low = 0, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "rescue boot button", - }, - { - .code = KEY_F5, - .type = EV_KEY, - .gpio = GPIO_DOCK_DETECT, - .active_low = 1, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "dock detect", - }, - { - .code = KEY_F6, - .type = EV_KEY, - .gpio = GPIO_ON_OFF, - .active_low = 0, - .wakeup = 0, - .debounce_interval = 5, /* ms */ - .desc = "on_off button", - }, -}; - -static struct gpio_keys_platform_data gpio_keys_platform_data = { - .buttons = gpio_keys_button, - .nbuttons = ARRAY_SIZE(gpio_keys_button), - .rep = 0, -}; - -static struct platform_device raumfeld_gpio_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &gpio_keys_platform_data, - } -}; - -/** - * GPIO LEDs - */ - -static struct gpio_led raumfeld_leds[] = { - { - .name = "raumfeld:1", - .gpio = GPIO_LED1, - .active_low = 1, - .default_state = LEDS_GPIO_DEFSTATE_ON, - }, - { - .name = "raumfeld:2", - .gpio = GPIO_LED2, - .active_low = 0, - .default_state = LEDS_GPIO_DEFSTATE_OFF, - } -}; - -static struct gpio_led_platform_data raumfeld_led_platform_data = { - .leds = raumfeld_leds, - .num_leds = ARRAY_SIZE(raumfeld_leds), -}; - -static struct platform_device raumfeld_led_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &raumfeld_led_platform_data, - }, -}; - -/** - * One-wire (W1 bus) support - */ - -static void w1_enable_external_pullup(int enable) -{ - gpio_set_value(GPIO_W1_PULLUP_ENABLE, enable); - msleep(100); -} - -static struct w1_gpio_platform_data w1_gpio_platform_data = { - .pin = GPIO_ONE_WIRE, - .is_open_drain = 0, - .enable_external_pullup = w1_enable_external_pullup, -}; - -struct platform_device raumfeld_w1_gpio_device = { - .name = "w1-gpio", - .dev = { - .platform_data = &w1_gpio_platform_data - } -}; - -static void __init raumfeld_w1_init(void) -{ - int ret = gpio_request(GPIO_W1_PULLUP_ENABLE, - "W1 external pullup enable"); - - if (ret < 0) - pr_warning("Unable to request GPIO_W1_PULLUP_ENABLE\n"); - else - gpio_direction_output(GPIO_W1_PULLUP_ENABLE, 0); - - platform_device_register(&raumfeld_w1_gpio_device); -} - -/** - * Framebuffer device - */ - -/* PWM controlled backlight */ -static struct platform_pwm_backlight_data raumfeld_pwm_backlight_data = { - .pwm_id = 0, - .max_brightness = 100, - .dft_brightness = 100, - /* 10000 ns = 10 ms ^= 100 kHz */ - .pwm_period_ns = 10000, -}; - -static struct platform_device raumfeld_pwm_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm0.dev, - .platform_data = &raumfeld_pwm_backlight_data, - } -}; - -/* LT3593 controlled backlight */ -static struct gpio_led raumfeld_lt3593_led = { - .name = "backlight", - .gpio = mfp_to_gpio(MFP_PIN_GPIO17), - .default_state = LEDS_GPIO_DEFSTATE_ON, -}; - -static struct gpio_led_platform_data raumfeld_lt3593_platform_data = { - .leds = &raumfeld_lt3593_led, - .num_leds = 1, -}; - -static struct platform_device raumfeld_lt3593_device = { - .name = "leds-lt3593", - .id = -1, - .dev = { - .platform_data = &raumfeld_lt3593_platform_data, - }, -}; - -static struct pxafb_mode_info sharp_lq043t3dx02_mode = { - .pixclock = 111000, - .xres = 480, - .yres = 272, - .bpp = 16, - .hsync_len = 41, - .left_margin = 2, - .right_margin = 1, - .vsync_len = 10, - .upper_margin = 3, - .lower_margin = 1, - .sync = 0, -}; - -static struct pxafb_mach_info raumfeld_sharp_lcd_info = { - .modes = &sharp_lq043t3dx02_mode, - .num_modes = 1, - .video_mem_size = 0x400000, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -#ifdef CONFIG_PXA3XX_GCU - .acceleration_enabled = 1, -#endif -}; - -static void __init raumfeld_lcd_init(void) -{ - int ret; - - ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); - if (ret < 0) - pr_warning("Unable to request GPIO_TFT_VA_EN\n"); - else - gpio_direction_output(GPIO_TFT_VA_EN, 1); - - msleep(100); - - ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); - if (ret < 0) - pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n"); - else - gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); - - /* Hardware revision 2 has the backlight regulator controlled - * by an LT3593, earlier and later devices use PWM for that. */ - if ((system_rev & 0xff) == 2) { - platform_device_register(&raumfeld_lt3593_device); - } else { - mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; - pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); - platform_device_register(&raumfeld_pwm_backlight_device); - } - - pxa_set_fb_info(NULL, &raumfeld_sharp_lcd_info); - platform_device_register(&pxa3xx_device_gcu); -} - -/** - * SPI devices - */ - -struct spi_gpio_platform_data raumfeld_spi_platform_data = { - .sck = GPIO_SPI_CLK, - .mosi = GPIO_SPI_MOSI, - .miso = GPIO_SPI_MISO, - .num_chipselect = 3, -}; - -static struct platform_device raumfeld_spi_device = { - .name = "spi_gpio", - .id = 0, - .dev = { - .platform_data = &raumfeld_spi_platform_data, - } -}; - -static struct lis3lv02d_platform_data lis3_pdata = { - .click_flags = LIS3_CLICK_SINGLE_X | - LIS3_CLICK_SINGLE_Y | - LIS3_CLICK_SINGLE_Z, - .irq_cfg = LIS3_IRQ1_CLICK | LIS3_IRQ2_CLICK, - .wakeup_flags = LIS3_WAKEUP_X_LO | LIS3_WAKEUP_X_HI | - LIS3_WAKEUP_Y_LO | LIS3_WAKEUP_Y_HI | - LIS3_WAKEUP_Z_LO | LIS3_WAKEUP_Z_HI, - .wakeup_thresh = 10, - .click_thresh_x = 10, - .click_thresh_y = 10, - .click_thresh_z = 10, -}; - -#define SPI_AK4104 \ -{ \ - .modalias = "ak4104-codec", \ - .max_speed_hz = 10000, \ - .bus_num = 0, \ - .chip_select = 0, \ - .controller_data = (void *) GPIO_SPDIF_CS, \ -} - -#define SPI_LIS3 \ -{ \ - .modalias = "lis3lv02d_spi", \ - .max_speed_hz = 1000000, \ - .bus_num = 0, \ - .chip_select = 1, \ - .controller_data = (void *) GPIO_ACCEL_CS, \ - .platform_data = &lis3_pdata, \ - .irq = PXA_GPIO_TO_IRQ(GPIO_ACCEL_IRQ), \ -} - -#define SPI_DAC7512 \ -{ \ - .modalias = "dac7512", \ - .max_speed_hz = 1000000, \ - .bus_num = 0, \ - .chip_select = 2, \ - .controller_data = (void *) GPIO_MCLK_DAC_CS, \ -} - -static struct spi_board_info connector_spi_devices[] __initdata = { - SPI_AK4104, - SPI_DAC7512, -}; - -static struct spi_board_info speaker_spi_devices[] __initdata = { - SPI_DAC7512, -}; - -static struct spi_board_info controller_spi_devices[] __initdata = { - SPI_LIS3, -}; - -/** - * MMC for Marvell Libertas 8688 via SDIO - */ - -static int raumfeld_mci_init(struct device *dev, irq_handler_t isr, void *data) -{ - gpio_set_value(GPIO_W2W_RESET, 1); - gpio_set_value(GPIO_W2W_PDN, 1); - - return 0; -} - -static void raumfeld_mci_exit(struct device *dev, void *data) -{ - gpio_set_value(GPIO_W2W_RESET, 0); - gpio_set_value(GPIO_W2W_PDN, 0); -} - -static struct pxamci_platform_data raumfeld_mci_platform_data = { - .init = raumfeld_mci_init, - .exit = raumfeld_mci_exit, - .detect_delay_ms = 200, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -/* - * External power / charge logic - */ - -static int power_supply_init(struct device *dev) -{ - return 0; -} - -static void power_supply_exit(struct device *dev) -{ -} - -static int raumfeld_is_ac_online(void) -{ - return !gpio_get_value(GPIO_CHARGE_DC_OK); -} - -static int raumfeld_is_usb_online(void) -{ - return 0; -} - -static char *raumfeld_power_supplicants[] = { "ds2760-battery.0" }; - -static void raumfeld_power_signal_charged(void) -{ - struct power_supply *psy = - power_supply_get_by_name(raumfeld_power_supplicants[0]); - - if (psy) - power_supply_set_battery_charged(psy); -} - -static int raumfeld_power_resume(void) -{ - /* check if GPIO_CHARGE_DONE went low while we were sleeping */ - if (!gpio_get_value(GPIO_CHARGE_DONE)) - raumfeld_power_signal_charged(); - - return 0; -} - -static struct pda_power_pdata power_supply_info = { - .init = power_supply_init, - .is_ac_online = raumfeld_is_ac_online, - .is_usb_online = raumfeld_is_usb_online, - .exit = power_supply_exit, - .supplied_to = raumfeld_power_supplicants, - .num_supplicants = ARRAY_SIZE(raumfeld_power_supplicants), - .resume = raumfeld_power_resume, -}; - -static struct resource power_supply_resources[] = { - { - .name = "ac", - .flags = IORESOURCE_IRQ | - IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE, - .start = GPIO_CHARGE_DC_OK, - .end = GPIO_CHARGE_DC_OK, - }, -}; - -static irqreturn_t charge_done_irq(int irq, void *dev_id) -{ - raumfeld_power_signal_charged(); - return IRQ_HANDLED; -} - -static struct platform_device raumfeld_power_supply = { - .name = "pda-power", - .id = -1, - .dev = { - .platform_data = &power_supply_info, - }, - .resource = power_supply_resources, - .num_resources = ARRAY_SIZE(power_supply_resources), -}; - -static void __init raumfeld_power_init(void) -{ - int ret; - - /* Set PEN2 high to enable maximum charge current */ - ret = gpio_request(GPIO_CHRG_PEN2, "CHRG_PEN2"); - if (ret < 0) - pr_warning("Unable to request GPIO_CHRG_PEN2\n"); - else - gpio_direction_output(GPIO_CHRG_PEN2, 1); - - ret = gpio_request(GPIO_CHARGE_DC_OK, "CABLE_DC_OK"); - if (ret < 0) - pr_warning("Unable to request GPIO_CHARGE_DC_OK\n"); - - ret = gpio_request(GPIO_CHARGE_USB_SUSP, "CHARGE_USB_SUSP"); - if (ret < 0) - pr_warning("Unable to request GPIO_CHARGE_USB_SUSP\n"); - else - gpio_direction_output(GPIO_CHARGE_USB_SUSP, 0); - - power_supply_resources[0].start = gpio_to_irq(GPIO_CHARGE_DC_OK); - power_supply_resources[0].end = gpio_to_irq(GPIO_CHARGE_DC_OK); - - ret = request_irq(gpio_to_irq(GPIO_CHARGE_DONE), - &charge_done_irq, IORESOURCE_IRQ_LOWEDGE, - "charge_done", NULL); - - if (ret < 0) - printk(KERN_ERR "%s: unable to register irq %d\n", __func__, - GPIO_CHARGE_DONE); - else - platform_device_register(&raumfeld_power_supply); -} - -/* Fixed regulator for AUDIO_VA, 0-0048 maps to the cs4270 codec device */ - -static struct regulator_consumer_supply audio_va_consumer_supply = - REGULATOR_SUPPLY("va", "0-0048"); - -struct regulator_init_data audio_va_initdata = { - .consumer_supplies = &audio_va_consumer_supply, - .num_consumer_supplies = 1, - .constraints = { - .valid_ops_mask = REGULATOR_CHANGE_STATUS, - }, -}; - -static struct fixed_voltage_config audio_va_config = { - .supply_name = "audio_va", - .microvolts = 5000000, - .gpio = GPIO_AUDIO_VA_ENABLE, - .enable_high = 1, - .enabled_at_boot = 0, - .init_data = &audio_va_initdata, -}; - -static struct platform_device audio_va_device = { - .name = "reg-fixed-voltage", - .id = 0, - .dev = { - .platform_data = &audio_va_config, - }, -}; - -/* Dummy supplies for Codec's VD/VLC */ - -static struct regulator_consumer_supply audio_dummy_supplies[] = { - REGULATOR_SUPPLY("vd", "0-0048"), - REGULATOR_SUPPLY("vlc", "0-0048"), -}; - -struct regulator_init_data audio_dummy_initdata = { - .consumer_supplies = audio_dummy_supplies, - .num_consumer_supplies = ARRAY_SIZE(audio_dummy_supplies), - .constraints = { - .valid_ops_mask = REGULATOR_CHANGE_STATUS, - }, -}; - -static struct fixed_voltage_config audio_dummy_config = { - .supply_name = "audio_vd", - .microvolts = 3300000, - .gpio = -1, - .init_data = &audio_dummy_initdata, -}; - -static struct platform_device audio_supply_dummy_device = { - .name = "reg-fixed-voltage", - .id = 1, - .dev = { - .platform_data = &audio_dummy_config, - }, -}; - -static struct platform_device *audio_regulator_devices[] = { - &audio_va_device, - &audio_supply_dummy_device, -}; - -/** - * Regulator support via MAX8660 - */ - -static struct regulator_consumer_supply vcc_mmc_supply = - REGULATOR_SUPPLY("vmmc", "pxa2xx-mci.0"); - -static struct regulator_init_data vcc_mmc_init_data = { - .constraints = { - .min_uV = 3300000, - .max_uV = 3300000, - .valid_modes_mask = REGULATOR_MODE_NORMAL, - .valid_ops_mask = REGULATOR_CHANGE_STATUS | - REGULATOR_CHANGE_VOLTAGE | - REGULATOR_CHANGE_MODE, - }, - .consumer_supplies = &vcc_mmc_supply, - .num_consumer_supplies = 1, -}; - -struct max8660_subdev_data max8660_v6_subdev_data = { - .id = MAX8660_V6, - .name = "vmmc", - .platform_data = &vcc_mmc_init_data, -}; - -static struct max8660_platform_data max8660_pdata = { - .subdevs = &max8660_v6_subdev_data, - .num_subdevs = 1, -}; - -/** - * I2C devices - */ - -static struct i2c_board_info raumfeld_pwri2c_board_info = { - .type = "max8660", - .addr = 0x34, - .platform_data = &max8660_pdata, -}; - -static struct i2c_board_info raumfeld_connector_i2c_board_info __initdata = { - .type = "cs4270", - .addr = 0x48, -}; - -static struct eeti_ts_platform_data eeti_ts_pdata = { - .irq_active_high = 1, -}; - -static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = { - .type = "eeti_ts", - .addr = 0x0a, - .irq = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ), - .platform_data = &eeti_ts_pdata, -}; - -static struct platform_device *raumfeld_common_devices[] = { - &raumfeld_gpio_keys_device, - &raumfeld_led_device, - &raumfeld_spi_device, -}; - -static void __init raumfeld_audio_init(void) -{ - int ret; - - ret = gpio_request(GPIO_CODEC_RESET, "cs4270 reset"); - if (ret < 0) - pr_warning("unable to request GPIO_CODEC_RESET\n"); - else - gpio_direction_output(GPIO_CODEC_RESET, 1); - - ret = gpio_request(GPIO_SPDIF_RESET, "ak4104 s/pdif reset"); - if (ret < 0) - pr_warning("unable to request GPIO_SPDIF_RESET\n"); - else - gpio_direction_output(GPIO_SPDIF_RESET, 1); - - ret = gpio_request(GPIO_MCLK_RESET, "MCLK reset"); - if (ret < 0) - pr_warning("unable to request GPIO_MCLK_RESET\n"); - else - gpio_direction_output(GPIO_MCLK_RESET, 1); - - platform_add_devices(ARRAY_AND_SIZE(audio_regulator_devices)); -} - -static void __init raumfeld_common_init(void) -{ - int ret; - - /* The on/off button polarity has changed after revision 1 */ - if ((system_rev & 0xff) > 1) { - int i; - - for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++) - if (!strcmp(gpio_keys_button[i].desc, "on_off button")) - gpio_keys_button[i].active_low = 1; - } - - enable_irq_wake(IRQ_WAKEUP0); - - pxa3xx_set_nand_info(&raumfeld_nand_info); - pxa3xx_set_i2c_power_info(NULL); - pxa_set_ohci_info(&raumfeld_ohci_info); - pxa_set_mci_info(&raumfeld_mci_platform_data); - pxa_set_i2c_info(NULL); - pxa_set_ffuart_info(NULL); - - ret = gpio_request(GPIO_W2W_RESET, "Wi2Wi reset"); - if (ret < 0) - pr_warning("Unable to request GPIO_W2W_RESET\n"); - else - gpio_direction_output(GPIO_W2W_RESET, 0); - - ret = gpio_request(GPIO_W2W_PDN, "Wi2Wi powerup"); - if (ret < 0) - pr_warning("Unable to request GPIO_W2W_PDN\n"); - else - gpio_direction_output(GPIO_W2W_PDN, 0); - - /* this can be used to switch off the device */ - ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown"); - if (ret < 0) - pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); - else - gpio_direction_output(GPIO_SHUTDOWN_SUPPLY, 0); - - platform_add_devices(ARRAY_AND_SIZE(raumfeld_common_devices)); - i2c_register_board_info(1, &raumfeld_pwri2c_board_info, 1); -} - -static void __init raumfeld_controller_init(void) -{ - int ret; - - pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_controller_pin_config)); - platform_device_register(&rotary_encoder_device); - spi_register_board_info(ARRAY_AND_SIZE(controller_spi_devices)); - i2c_register_board_info(0, &raumfeld_controller_i2c_board_info, 1); - - ret = gpio_request(GPIO_SHUTDOWN_BATT, "battery shutdown"); - if (ret < 0) - pr_warning("Unable to request GPIO_SHUTDOWN_BATT\n"); - else - gpio_direction_output(GPIO_SHUTDOWN_BATT, 0); - - raumfeld_common_init(); - raumfeld_power_init(); - raumfeld_lcd_init(); - raumfeld_w1_init(); -} - -static void __init raumfeld_connector_init(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_connector_pin_config)); - spi_register_board_info(ARRAY_AND_SIZE(connector_spi_devices)); - i2c_register_board_info(0, &raumfeld_connector_i2c_board_info, 1); - - platform_device_register(&smc91x_device); - - raumfeld_audio_init(); - raumfeld_common_init(); -} - -static void __init raumfeld_speaker_init(void) -{ - pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_speaker_pin_config)); - spi_register_board_info(ARRAY_AND_SIZE(speaker_spi_devices)); - i2c_register_board_info(0, &raumfeld_connector_i2c_board_info, 1); - - platform_device_register(&smc91x_device); - platform_device_register(&rotary_encoder_device); - - raumfeld_audio_init(); - raumfeld_common_init(); -} - -/* physical memory regions */ -#define RAUMFELD_SDRAM_BASE 0xa0000000 /* SDRAM region */ - -#ifdef CONFIG_MACH_RAUMFELD_RC -MACHINE_START(RAUMFELD_RC, "Raumfeld Controller") - .atag_offset = 0x100, - .init_machine = raumfeld_controller_init, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_RAUMFELD_CONNECTOR -MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector") - .atag_offset = 0x100, - .init_machine = raumfeld_connector_init, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_RAUMFELD_SPEAKER -MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker") - .atag_offset = 0x100, - .init_machine = raumfeld_speaker_init, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/reset.c b/ANDROID_3.4.5/arch/arm/mach-pxa/reset.c deleted file mode 100644 index b4528899..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/reset.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/io.h> -#include <asm/proc-fns.h> -#include <asm/system_misc.h> - -#include <mach/regs-ost.h> -#include <mach/reset.h> - -unsigned int reset_status; -EXPORT_SYMBOL(reset_status); - -static void do_hw_reset(void); - -static int reset_gpio = -1; - -int init_gpio_reset(int gpio, int output, int level) -{ - int rc; - - rc = gpio_request(gpio, "reset generator"); - if (rc) { - printk(KERN_ERR "Can't request reset_gpio\n"); - goto out; - } - - if (output) - rc = gpio_direction_output(gpio, level); - else - rc = gpio_direction_input(gpio); - if (rc) { - printk(KERN_ERR "Can't configure reset_gpio\n"); - gpio_free(gpio); - goto out; - } - -out: - if (!rc) - reset_gpio = gpio; - - return rc; -} - -/* - * Trigger GPIO reset. - * This covers various types of logic connecting gpio pin - * to RESET pins (nRESET or GPIO_RESET): - */ -static void do_gpio_reset(void) -{ - BUG_ON(reset_gpio == -1); - - /* drive it low */ - gpio_direction_output(reset_gpio, 0); - mdelay(2); - /* rising edge or drive high */ - gpio_set_value(reset_gpio, 1); - mdelay(2); - /* falling edge */ - gpio_set_value(reset_gpio, 0); - - /* give it some time */ - mdelay(10); - - WARN_ON(1); - /* fallback */ - do_hw_reset(); -} - -static void do_hw_reset(void) -{ - /* Initialize the watchdog and let it fire */ - OWER = OWER_WME; - OSSR = OSSR_M3; - OSMR3 = OSCR + 368640; /* ... in 100 ms */ -} - -void pxa_restart(char mode, const char *cmd) -{ - local_irq_disable(); - local_fiq_disable(); - - clear_reset_status(RESET_STATUS_ALL); - - switch (mode) { - case 's': - /* Jump into ROM at address 0 */ - soft_restart(0); - break; - case 'g': - do_gpio_reset(); - break; - case 'h': - default: - do_hw_reset(); - break; - } -} - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/saar.c b/ANDROID_3.4.5/arch/arm/mach-pxa/saar.c deleted file mode 100644 index 86c95a5d..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/saar.c +++ /dev/null @@ -1,607 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/saar.c - * - * Support for the Marvell PXA930 Handheld Platform (aka SAAR) - * - * Copyright (C) 2007-2008 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * publishhed by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/interrupt.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/clk.h> -#include <linux/gpio.h> -#include <linux/delay.h> -#include <linux/fb.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/smc91x.h> -#include <linux/mfd/da903x.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/onenand.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> - -#include <mach/pxa930.h> -#include <mach/pxafb.h> - -#include "devices.h" -#include "generic.h" - -#define GPIO_LCD_RESET (16) - -/* SAAR MFP configurations */ -static mfp_cfg_t saar_mfp_cfg[] __initdata = { - /* LCD */ - GPIO23_LCD_DD0, - GPIO24_LCD_DD1, - GPIO25_LCD_DD2, - GPIO26_LCD_DD3, - GPIO27_LCD_DD4, - GPIO28_LCD_DD5, - GPIO29_LCD_DD6, - GPIO44_LCD_DD7, - GPIO21_LCD_CS, - GPIO22_LCD_VSYNC, - GPIO17_LCD_FCLK_RD, - GPIO18_LCD_LCLK_A0, - GPIO19_LCD_PCLK_WR, - GPIO16_GPIO, /* LCD reset */ - - /* Ethernet */ - DF_nCS1_nCS3, - GPIO97_GPIO, - - /* DFI */ - DF_INT_RnB_ND_INT_RnB, - DF_nRE_nOE_ND_nRE, - DF_nWE_ND_nWE, - DF_CLE_nOE_ND_CLE, - DF_nADV1_ALE_ND_ALE, - DF_nADV2_ALE_nCS3, - DF_nCS0_ND_nCS0, - 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, -}; - -#define SAAR_ETH_PHYS (0x14000000) - -static struct resource smc91x_resources[] = { - [0] = { - .start = (SAAR_ETH_PHYS + 0x300), - .end = (SAAR_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO97)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO97)), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct smc91x_platdata saar_smc91x_info = { - .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &saar_smc91x_info, - }, -}; - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static uint16_t lcd_power_on[] = { - /* single frame */ - SMART_CMD_NOOP, - SMART_CMD(0x00), - SMART_DELAY(0), - - SMART_CMD_NOOP, - SMART_CMD(0x00), - SMART_DELAY(0), - - SMART_CMD_NOOP, - SMART_CMD(0x00), - SMART_DELAY(0), - - SMART_CMD_NOOP, - SMART_CMD(0x00), - SMART_DELAY(10), - - /* calibration control */ - SMART_CMD(0x00), - SMART_CMD(0xA4), - SMART_DAT(0x80), - SMART_DAT(0x01), - SMART_DELAY(150), - - /*Power-On Init sequence*/ - SMART_CMD(0x00), /* output ctrl */ - SMART_CMD(0x01), - SMART_DAT(0x01), - SMART_DAT(0x00), - SMART_CMD(0x00), /* wave ctrl */ - SMART_CMD(0x02), - SMART_DAT(0x07), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x03), /* entry mode */ - SMART_DAT(0xD0), - SMART_DAT(0x30), - SMART_CMD(0x00), - SMART_CMD(0x08), /* display ctrl 2 */ - SMART_DAT(0x08), - SMART_DAT(0x08), - SMART_CMD(0x00), - SMART_CMD(0x09), /* display ctrl 3 */ - SMART_DAT(0x04), - SMART_DAT(0x2F), - SMART_CMD(0x00), - SMART_CMD(0x0A), /* display ctrl 4 */ - SMART_DAT(0x00), - SMART_DAT(0x08), - SMART_CMD(0x00), - SMART_CMD(0x0D), /* Frame Marker position */ - SMART_DAT(0x00), - SMART_DAT(0x08), - SMART_CMD(0x00), - SMART_CMD(0x60), /* Driver output control */ - SMART_DAT(0x27), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x61), /* Base image display control */ - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_CMD(0x00), - SMART_CMD(0x30), /* Y settings 30h-3Dh */ - SMART_DAT(0x07), - SMART_DAT(0x07), - SMART_CMD(0x00), - SMART_CMD(0x31), - SMART_DAT(0x00), - SMART_DAT(0x07), - SMART_CMD(0x00), - SMART_CMD(0x32), /* Timing(3), ASW HOLD=0.5CLK */ - SMART_DAT(0x04), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x33), /* Timing(4), CKV ST=0CLK, CKV ED=1CLK */ - SMART_DAT(0x03), - SMART_DAT(0x03), - SMART_CMD(0x00), - SMART_CMD(0x34), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x35), - SMART_DAT(0x02), - SMART_DAT(0x05), - SMART_CMD(0x00), - SMART_CMD(0x36), - SMART_DAT(0x1F), - SMART_DAT(0x1F), - SMART_CMD(0x00), - SMART_CMD(0x37), - SMART_DAT(0x07), - SMART_DAT(0x07), - SMART_CMD(0x00), - SMART_CMD(0x38), - SMART_DAT(0x00), - SMART_DAT(0x07), - SMART_CMD(0x00), - SMART_CMD(0x39), - SMART_DAT(0x04), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x3A), - SMART_DAT(0x03), - SMART_DAT(0x03), - SMART_CMD(0x00), - SMART_CMD(0x3B), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x3C), - SMART_DAT(0x02), - SMART_DAT(0x05), - SMART_CMD(0x00), - SMART_CMD(0x3D), - SMART_DAT(0x1F), - SMART_DAT(0x1F), - SMART_CMD(0x00), /* Display control 1 */ - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_CMD(0x00), /* Power control 5 */ - SMART_CMD(0x17), - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_CMD(0x00), /* Power control 1 */ - SMART_CMD(0x10), - SMART_DAT(0x10), - SMART_DAT(0xB0), - SMART_CMD(0x00), /* Power control 2 */ - SMART_CMD(0x11), - SMART_DAT(0x01), - SMART_DAT(0x30), - SMART_CMD(0x00), /* Power control 3 */ - SMART_CMD(0x12), - SMART_DAT(0x01), - SMART_DAT(0x9E), - SMART_CMD(0x00), /* Power control 4 */ - SMART_CMD(0x13), - SMART_DAT(0x17), - SMART_DAT(0x00), - SMART_CMD(0x00), /* Power control 3 */ - SMART_CMD(0x12), - SMART_DAT(0x01), - SMART_DAT(0xBE), - SMART_DELAY(100), - - /* display mode : 240*320 */ - SMART_CMD(0x00), /* RAM address set(H) 0*/ - SMART_CMD(0x20), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* RAM address set(V) 4*/ - SMART_CMD(0x21), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* Start of Window RAM address set(H) 8*/ - SMART_CMD(0x50), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* End of Window RAM address set(H) 12*/ - SMART_CMD(0x51), - SMART_DAT(0x00), - SMART_DAT(0xEF), - SMART_CMD(0x00), /* Start of Window RAM address set(V) 16*/ - SMART_CMD(0x52), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* End of Window RAM address set(V) 20*/ - SMART_CMD(0x53), - SMART_DAT(0x01), - SMART_DAT(0x3F), - SMART_CMD(0x00), /* Panel interface control 1 */ - SMART_CMD(0x90), - SMART_DAT(0x00), - SMART_DAT(0x1A), - SMART_CMD(0x00), /* Panel interface control 2 */ - SMART_CMD(0x92), - SMART_DAT(0x04), - SMART_DAT(0x00), - SMART_CMD(0x00), /* Panel interface control 3 */ - SMART_CMD(0x93), - SMART_DAT(0x00), - SMART_DAT(0x05), - SMART_DELAY(20), -}; - -static uint16_t lcd_panel_on[] = { - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x21), - SMART_DELAY(1), - - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x61), - SMART_DELAY(100), - - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x01), - SMART_DAT(0x73), - SMART_DELAY(1), -}; - -static uint16_t lcd_panel_off[] = { - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x72), - SMART_DELAY(40), - - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_DELAY(1), - - SMART_CMD(0x00), - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_DELAY(1), -}; - -static uint16_t lcd_power_off[] = { - SMART_CMD(0x00), - SMART_CMD(0x10), - SMART_DAT(0x00), - SMART_DAT(0x80), - - SMART_CMD(0x00), - SMART_CMD(0x11), - SMART_DAT(0x01), - SMART_DAT(0x60), - - SMART_CMD(0x00), - SMART_CMD(0x12), - SMART_DAT(0x01), - SMART_DAT(0xAE), - SMART_DELAY(40), - - SMART_CMD(0x00), - SMART_CMD(0x10), - SMART_DAT(0x00), - SMART_DAT(0x00), -}; - -static uint16_t update_framedata[] = { - /* set display ram: 240*320 */ - SMART_CMD(0x00), /* RAM address set(H) 0*/ - SMART_CMD(0x20), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* RAM address set(V) 4*/ - SMART_CMD(0x21), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* Start of Window RAM address set(H) 8 */ - SMART_CMD(0x50), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* End of Window RAM address set(H) 12 */ - SMART_CMD(0x51), - SMART_DAT(0x00), - SMART_DAT(0xEF), - SMART_CMD(0x00), /* Start of Window RAM address set(V) 16 */ - SMART_CMD(0x52), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), /* End of Window RAM address set(V) 20 */ - SMART_CMD(0x53), - SMART_DAT(0x01), - SMART_DAT(0x3F), - - /* wait for vsync cmd before transferring frame data */ - SMART_CMD_WAIT_FOR_VSYNC, - - /* write ram */ - SMART_CMD(0x00), - SMART_CMD(0x22), - - /* write frame data */ - SMART_CMD_WRITE_FRAME, -}; - -static void ltm022a97a_lcd_power(int on, struct fb_var_screeninfo *var) -{ - static int pin_requested = 0; - struct fb_info *info = container_of(var, struct fb_info, var); - int err; - - if (!pin_requested) { - err = gpio_request(GPIO_LCD_RESET, "lcd reset"); - if (err) { - pr_err("failed to request gpio for LCD reset\n"); - return; - } - - gpio_direction_output(GPIO_LCD_RESET, 0); - pin_requested = 1; - } - - if (on) { - gpio_set_value(GPIO_LCD_RESET, 0); msleep(100); - gpio_set_value(GPIO_LCD_RESET, 1); msleep(10); - - pxafb_smart_queue(info, ARRAY_AND_SIZE(lcd_power_on)); - pxafb_smart_queue(info, ARRAY_AND_SIZE(lcd_panel_on)); - } else { - pxafb_smart_queue(info, ARRAY_AND_SIZE(lcd_panel_off)); - pxafb_smart_queue(info, ARRAY_AND_SIZE(lcd_power_off)); - } - - err = pxafb_smart_flush(info); - if (err) - pr_err("%s: timed out\n", __func__); -} - -static void ltm022a97a_update(struct fb_info *info) -{ - pxafb_smart_queue(info, ARRAY_AND_SIZE(update_framedata)); - pxafb_smart_flush(info); -} - -static struct pxafb_mode_info toshiba_ltm022a97a_modes[] = { - [0] = { - .xres = 240, - .yres = 320, - .bpp = 16, - .a0csrd_set_hld = 30, - .a0cswr_set_hld = 30, - .wr_pulse_width = 30, - .rd_pulse_width = 30, - .op_hold_time = 30, - .cmd_inh_time = 60, - - /* L_LCLK_A0 and L_LCLK_RD active low */ - .sync = FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT, - }, -}; - -static struct pxafb_mach_info saar_lcd_info = { - .modes = toshiba_ltm022a97a_modes, - .num_modes = 1, - .lcd_conn = LCD_SMART_PANEL_8BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = ltm022a97a_lcd_power, - .smart_update = ltm022a97a_update, -}; - -static void __init saar_init_lcd(void) -{ - pxa_set_fb_info(NULL, &saar_lcd_info); -} -#else -static inline void saar_init_lcd(void) {} -#endif - -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct da9034_backlight_pdata saar_da9034_backlight = { - .output_current = 4, /* 4mA */ -}; - -static struct da903x_subdev_info saar_da9034_subdevs[] = { - [0] = { - .name = "da903x-backlight", - .id = DA9034_ID_WLED, - .platform_data = &saar_da9034_backlight, - }, -}; - -static struct da903x_platform_data saar_da9034_info = { - .num_subdevs = ARRAY_SIZE(saar_da9034_subdevs), - .subdevs = saar_da9034_subdevs, -}; - -static struct i2c_board_info saar_i2c_info[] = { - [0] = { - .type = "da9034", - .addr = 0x34, - .platform_data = &saar_da9034_info, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), - }, -}; - -static void __init saar_init_i2c(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(saar_i2c_info)); -} -#else -static inline void saar_init_i2c(void) {} -#endif - -#if defined(CONFIG_MTD_ONENAND) || defined(CONFIG_MTD_ONENAND_MODULE) -static struct mtd_partition saar_onenand_partitions[] = { - { - .name = "bootloader", - .offset = 0, - .size = SZ_1M, - .mask_flags = MTD_WRITEABLE, - }, { - .name = "reserved", - .offset = MTDPART_OFS_APPEND, - .size = SZ_128K, - .mask_flags = MTD_WRITEABLE, - }, { - .name = "reserved", - .offset = MTDPART_OFS_APPEND, - .size = SZ_8M, - .mask_flags = MTD_WRITEABLE, - }, { - .name = "kernel", - .offset = MTDPART_OFS_APPEND, - .size = (SZ_2M + SZ_1M), - .mask_flags = 0, - }, { - .name = "filesystem", - .offset = MTDPART_OFS_APPEND, - .size = SZ_32M + SZ_16M, - .mask_flags = 0, - } -}; - -static struct onenand_platform_data saar_onenand_info = { - .parts = saar_onenand_partitions, - .nr_parts = ARRAY_SIZE(saar_onenand_partitions), -}; - -#define SMC_CS0_PHYS_BASE (0x10000000) - -static struct resource saar_resource_onenand[] = { - [0] = { - .start = SMC_CS0_PHYS_BASE, - .end = SMC_CS0_PHYS_BASE + SZ_1M, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device saar_device_onenand = { - .name = "onenand-flash", - .id = -1, - .dev = { - .platform_data = &saar_onenand_info, - }, - .resource = saar_resource_onenand, - .num_resources = ARRAY_SIZE(saar_resource_onenand), -}; - -static void __init saar_init_onenand(void) -{ - platform_device_register(&saar_device_onenand); -} -#else -static void __init saar_init_onenand(void) {} -#endif - -static void __init saar_init(void) -{ - /* initialize MFP configurations */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(saar_mfp_cfg)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_device_register(&smc91x_device); - saar_init_onenand(); - - saar_init_i2c(); - saar_init_lcd(); -} - -MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)") - /* Maintainer: Eric Miao <eric.miao@marvell.com> */ - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = saar_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/saarb.c b/ANDROID_3.4.5/arch/arm/mach-pxa/saarb.c deleted file mode 100644 index 5aded5e6..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/saarb.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/saarb.c - * - * Support for the Marvell Handheld Platform (aka SAARB) - * - * Copyright (C) 2007-2010 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * publishhed by the Free Software Foundation. - */ -#include <linux/gpio.h> -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/mfd/88pm860x.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/irqs.h> -#include <mach/hardware.h> -#include <mach/mfp.h> -#include <mach/mfp-pxa930.h> -#include <mach/pxa95x.h> - -#include "generic.h" - -#define SAARB_NR_IRQS (IRQ_BOARD_START + 40) - -static struct pm860x_touch_pdata saarb_touch = { - .gpadc_prebias = 1, - .slot_cycle = 1, - .tsi_prebias = 6, - .pen_prebias = 16, - .pen_prechg = 2, - .res_x = 300, -}; - -static struct pm860x_backlight_pdata saarb_backlight[] = { - { - .id = PM8606_ID_BACKLIGHT, - .iset = PM8606_WLED_CURRENT(24), - .flags = PM8606_BACKLIGHT1, - }, - {}, -}; - -static struct pm860x_led_pdata saarb_led[] = { - { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_RED, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_GREEN, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_BLUE, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_RED, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_GREEN, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_BLUE, - }, -}; - -static struct pm860x_platform_data saarb_pm8607_info = { - .touch = &saarb_touch, - .backlight = &saarb_backlight[0], - .led = &saarb_led[0], - .companion_addr = 0x10, - .irq_mode = 0, - .irq_base = IRQ_BOARD_START, - - .i2c_port = GI2C_PORT, -}; - -static struct i2c_board_info saarb_i2c_info[] = { - { - .type = "88PM860x", - .addr = 0x34, - .platform_data = &saarb_pm8607_info, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), - }, -}; - -static void __init saarb_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(saarb_i2c_info)); -} - -MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = SAARB_NR_IRQS, - .init_irq = pxa95x_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = saarb_init, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/sharpsl_pm.c b/ANDROID_3.4.5/arch/arm/mach-pxa/sharpsl_pm.c deleted file mode 100644 index bdf4cb88..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/sharpsl_pm.c +++ /dev/null @@ -1,999 +0,0 @@ -/* - * Battery and Power Management code for the Sharp SL-C7xx and SL-Cxx00 - * series of PDAs - * - * Copyright (c) 2004-2005 Richard Purdie - * - * Based on code written by Sharp for 2.4 kernels - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#undef DEBUG - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/interrupt.h> -#include <linux/platform_device.h> -#include <linux/apm-emulation.h> -#include <linux/timer.h> -#include <linux/delay.h> -#include <linux/leds.h> -#include <linux/suspend.h> -#include <linux/gpio.h> -#include <linux/io.h> - -#include <asm/mach-types.h> -#include <mach/pm.h> -#include <mach/pxa2xx-regs.h> -#include <mach/regs-rtc.h> -#include <mach/sharpsl_pm.h> - -/* - * Constants - */ -#define SHARPSL_CHARGE_ON_TIME_INTERVAL (msecs_to_jiffies(1*60*1000)) /* 1 min */ -#define SHARPSL_CHARGE_FINISH_TIME (msecs_to_jiffies(10*60*1000)) /* 10 min */ -#define SHARPSL_BATCHK_TIME (msecs_to_jiffies(15*1000)) /* 15 sec */ -#define SHARPSL_BATCHK_TIME_SUSPEND (60*10) /* 10 min */ - -#define SHARPSL_WAIT_CO_TIME 15 /* 15 sec */ -#define SHARPSL_WAIT_DISCHARGE_ON 100 /* 100 msec */ -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP 10 /* 10 msec */ -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT 10 /* 10 msec */ -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN 10 /* 10 msec */ -#define SHARPSL_CHARGE_WAIT_TIME 15 /* 15 msec */ -#define SHARPSL_CHARGE_CO_CHECK_TIME 5 /* 5 msec */ -#define SHARPSL_CHARGE_RETRY_CNT 1 /* eqv. 10 min */ - -/* - * Prototypes - */ -#ifdef CONFIG_PM -static int sharpsl_off_charge_battery(void); -static int sharpsl_check_battery_voltage(void); -static int sharpsl_fatal_check(void); -#endif -static int sharpsl_check_battery_temp(void); -static int sharpsl_ac_check(void); -static int sharpsl_average_value(int ad); -static void sharpsl_average_clear(void); -static void sharpsl_charge_toggle(struct work_struct *private_); -static void sharpsl_battery_thread(struct work_struct *private_); - - -/* - * Variables - */ -struct sharpsl_pm_status sharpsl_pm; -static DECLARE_DELAYED_WORK(toggle_charger, sharpsl_charge_toggle); -static DECLARE_DELAYED_WORK(sharpsl_bat, sharpsl_battery_thread); -DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger); - - - -struct battery_thresh sharpsl_battery_levels_acin[] = { - { 213, 100}, - { 212, 98}, - { 211, 95}, - { 210, 93}, - { 209, 90}, - { 208, 88}, - { 207, 85}, - { 206, 83}, - { 205, 80}, - { 204, 78}, - { 203, 75}, - { 202, 73}, - { 201, 70}, - { 200, 68}, - { 199, 65}, - { 198, 63}, - { 197, 60}, - { 196, 58}, - { 195, 55}, - { 194, 53}, - { 193, 50}, - { 192, 48}, - { 192, 45}, - { 191, 43}, - { 191, 40}, - { 190, 38}, - { 190, 35}, - { 189, 33}, - { 188, 30}, - { 187, 28}, - { 186, 25}, - { 185, 23}, - { 184, 20}, - { 183, 18}, - { 182, 15}, - { 181, 13}, - { 180, 10}, - { 179, 8}, - { 178, 5}, - { 0, 0}, -}; - -struct battery_thresh sharpsl_battery_levels_noac[] = { - { 213, 100}, - { 212, 98}, - { 211, 95}, - { 210, 93}, - { 209, 90}, - { 208, 88}, - { 207, 85}, - { 206, 83}, - { 205, 80}, - { 204, 78}, - { 203, 75}, - { 202, 73}, - { 201, 70}, - { 200, 68}, - { 199, 65}, - { 198, 63}, - { 197, 60}, - { 196, 58}, - { 195, 55}, - { 194, 53}, - { 193, 50}, - { 192, 48}, - { 191, 45}, - { 190, 43}, - { 189, 40}, - { 188, 38}, - { 187, 35}, - { 186, 33}, - { 185, 30}, - { 184, 28}, - { 183, 25}, - { 182, 23}, - { 181, 20}, - { 180, 18}, - { 179, 15}, - { 178, 13}, - { 177, 10}, - { 176, 8}, - { 175, 5}, - { 0, 0}, -}; - -/* MAX1111 Commands */ -#define MAXCTRL_PD0 (1u << 0) -#define MAXCTRL_PD1 (1u << 1) -#define MAXCTRL_SGL (1u << 2) -#define MAXCTRL_UNI (1u << 3) -#define MAXCTRL_SEL_SH 4 -#define MAXCTRL_STR (1u << 7) - -extern int max1111_read_channel(int); -/* - * Read MAX1111 ADC - */ -int sharpsl_pm_pxa_read_max1111(int channel) -{ - /* Ugly, better move this function into another module */ - if (machine_is_tosa()) - return 0; - - /* max1111 accepts channels from 0-3, however, - * it is encoded from 0-7 here in the code. - */ - return max1111_read_channel(channel >> 1); -} - -static int get_percentage(int voltage) -{ - int i = sharpsl_pm.machinfo->bat_levels - 1; - int bl_status = sharpsl_pm.machinfo->backlight_get_status ? sharpsl_pm.machinfo->backlight_get_status() : 0; - struct battery_thresh *thresh; - - if (sharpsl_pm.charge_mode == CHRG_ON) - thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_acin_bl : sharpsl_pm.machinfo->bat_levels_acin; - else - thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_noac_bl : sharpsl_pm.machinfo->bat_levels_noac; - - while (i > 0 && (voltage > thresh[i].voltage)) - i--; - - return thresh[i].percentage; -} - -static int get_apm_status(int voltage) -{ - int low_thresh, high_thresh; - - if (sharpsl_pm.charge_mode == CHRG_ON) { - high_thresh = sharpsl_pm.machinfo->status_high_acin; - low_thresh = sharpsl_pm.machinfo->status_low_acin; - } else { - high_thresh = sharpsl_pm.machinfo->status_high_noac; - low_thresh = sharpsl_pm.machinfo->status_low_noac; - } - - if (voltage >= high_thresh) - return APM_BATTERY_STATUS_HIGH; - if (voltage >= low_thresh) - return APM_BATTERY_STATUS_LOW; - return APM_BATTERY_STATUS_CRITICAL; -} - -void sharpsl_battery_kick(void) -{ - schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125)); -} -EXPORT_SYMBOL(sharpsl_battery_kick); - - -static void sharpsl_battery_thread(struct work_struct *private_) -{ - int voltage, percent, apm_status, i; - - if (!sharpsl_pm.machinfo) - return; - - sharpsl_pm.battstat.ac_status = (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN) ? APM_AC_ONLINE : APM_AC_OFFLINE); - - /* Corgi cannot confirm when battery fully charged so periodically kick! */ - if (!sharpsl_pm.machinfo->batfull_irq && (sharpsl_pm.charge_mode == CHRG_ON) - && time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_ON_TIME_INTERVAL)) - schedule_delayed_work(&toggle_charger, 0); - - for (i = 0; i < 5; i++) { - voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); - if (voltage > 0) - break; - } - if (voltage <= 0) { - voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage; - dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n"); - } - - voltage = sharpsl_average_value(voltage); - apm_status = get_apm_status(voltage); - percent = get_percentage(voltage); - - /* At low battery voltages, the voltage has a tendency to start - creeping back up so we try to avoid this here */ - if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE) - || (apm_status == APM_BATTERY_STATUS_HIGH) - || percent <= sharpsl_pm.battstat.mainbat_percent) { - sharpsl_pm.battstat.mainbat_voltage = voltage; - sharpsl_pm.battstat.mainbat_status = apm_status; - sharpsl_pm.battstat.mainbat_percent = percent; - } - - dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %ld\n", voltage, - sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies); - - /* Suspend if critical battery level */ - if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE) - && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL) - && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) { - sharpsl_pm.flags |= SHARPSL_APM_QUEUED; - dev_err(sharpsl_pm.dev, "Fatal Off\n"); - apm_queue_event(APM_CRITICAL_SUSPEND); - } - - schedule_delayed_work(&sharpsl_bat, SHARPSL_BATCHK_TIME); -} - -void sharpsl_pm_led(int val) -{ - if (val == SHARPSL_LED_ERROR) { - dev_err(sharpsl_pm.dev, "Charging Error!\n"); - } else if (val == SHARPSL_LED_ON) { - dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); - led_trigger_event(sharpsl_charge_led_trigger, LED_FULL); - } else { - dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); - led_trigger_event(sharpsl_charge_led_trigger, LED_OFF); - } -} - -static void sharpsl_charge_on(void) -{ - dev_dbg(sharpsl_pm.dev, "Turning Charger On\n"); - - sharpsl_pm.full_count = 0; - sharpsl_pm.charge_mode = CHRG_ON; - schedule_delayed_work(&toggle_charger, msecs_to_jiffies(250)); - schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(500)); -} - -static void sharpsl_charge_off(void) -{ - dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n"); - - sharpsl_pm.machinfo->charge(0); - sharpsl_pm_led(SHARPSL_LED_OFF); - sharpsl_pm.charge_mode = CHRG_OFF; - - schedule_delayed_work(&sharpsl_bat, 0); -} - -static void sharpsl_charge_error(void) -{ - sharpsl_pm_led(SHARPSL_LED_ERROR); - sharpsl_pm.machinfo->charge(0); - sharpsl_pm.charge_mode = CHRG_ERROR; -} - -static void sharpsl_charge_toggle(struct work_struct *private_) -{ - dev_dbg(sharpsl_pm.dev, "Toggling Charger at time: %lx\n", jiffies); - - if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { - sharpsl_charge_off(); - return; - } else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) { - sharpsl_charge_error(); - return; - } - - sharpsl_pm_led(SHARPSL_LED_ON); - sharpsl_pm.machinfo->charge(0); - mdelay(SHARPSL_CHARGE_WAIT_TIME); - sharpsl_pm.machinfo->charge(1); - - sharpsl_pm.charge_start_time = jiffies; -} - -static void sharpsl_ac_timer(unsigned long data) -{ - int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); - - dev_dbg(sharpsl_pm.dev, "AC Status: %d\n", acin); - - sharpsl_average_clear(); - if (acin && (sharpsl_pm.charge_mode != CHRG_ON)) - sharpsl_charge_on(); - else if (sharpsl_pm.charge_mode == CHRG_ON) - sharpsl_charge_off(); - - schedule_delayed_work(&sharpsl_bat, 0); -} - - -static irqreturn_t sharpsl_ac_isr(int irq, void *dev_id) -{ - /* Delay the event slightly to debounce */ - /* Must be a smaller delay than the chrg_full_isr below */ - mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); - - return IRQ_HANDLED; -} - -static void sharpsl_chrg_full_timer(unsigned long data) -{ - dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies); - - sharpsl_pm.full_count++; - - if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { - dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n"); - if (sharpsl_pm.charge_mode == CHRG_ON) - sharpsl_charge_off(); - } else if (sharpsl_pm.full_count < 2) { - dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n"); - schedule_delayed_work(&toggle_charger, 0); - } else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) { - dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n"); - schedule_delayed_work(&toggle_charger, 0); - } else { - sharpsl_charge_off(); - sharpsl_pm.charge_mode = CHRG_DONE; - dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n"); - } -} - -/* Charging Finished Interrupt (Not present on Corgi) */ -/* Can trigger at the same time as an AC status change so - delay until after that has been processed */ -static irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id) -{ - if (sharpsl_pm.flags & SHARPSL_SUSPENDED) - return IRQ_HANDLED; - - /* delay until after any ac interrupt */ - mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500)); - - return IRQ_HANDLED; -} - -static irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id) -{ - int is_fatal = 0; - - if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) { - dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n"); - is_fatal = 1; - } - - if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)) { - dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n"); - is_fatal = 1; - } - - if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) { - sharpsl_pm.flags |= SHARPSL_APM_QUEUED; - apm_queue_event(APM_CRITICAL_SUSPEND); - } - - return IRQ_HANDLED; -} - -/* - * Maintain an average of the last 10 readings - */ -#define SHARPSL_CNV_VALUE_NUM 10 -static int sharpsl_ad_index; - -static void sharpsl_average_clear(void) -{ - sharpsl_ad_index = 0; -} - -static int sharpsl_average_value(int ad) -{ - int i, ad_val = 0; - static int sharpsl_ad[SHARPSL_CNV_VALUE_NUM+1]; - - if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) { - sharpsl_ad_index = 0; - return ad; - } - - sharpsl_ad[sharpsl_ad_index] = ad; - sharpsl_ad_index++; - if (sharpsl_ad_index >= SHARPSL_CNV_VALUE_NUM) { - for (i = 0; i < (SHARPSL_CNV_VALUE_NUM-1); i++) - sharpsl_ad[i] = sharpsl_ad[i+1]; - sharpsl_ad_index = SHARPSL_CNV_VALUE_NUM - 1; - } - for (i = 0; i < sharpsl_ad_index; i++) - ad_val += sharpsl_ad[i]; - - return ad_val / sharpsl_ad_index; -} - -/* - * Take an array of 5 integers, remove the maximum and minimum values - * and return the average. - */ -static int get_select_val(int *val) -{ - int i, j, k, temp, sum = 0; - - /* Find MAX val */ - temp = val[0]; - j = 0; - for (i = 1; i < 5; i++) { - if (temp < val[i]) { - temp = val[i]; - j = i; - } - } - - /* Find MIN val */ - temp = val[4]; - k = 4; - for (i = 3; i >= 0; i--) { - if (temp > val[i]) { - temp = val[i]; - k = i; - } - } - - for (i = 0; i < 5; i++) - if (i != j && i != k) - sum += val[i]; - - dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]); - - return sum/3; -} - -static int sharpsl_check_battery_temp(void) -{ - int val, i, buff[5]; - - /* Check battery temperature */ - for (i = 0; i < 5; i++) { - mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); - sharpsl_pm.machinfo->measure_temp(1); - mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); - buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_TEMP); - sharpsl_pm.machinfo->measure_temp(0); - } - - val = get_select_val(buff); - - dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val); - if (val > sharpsl_pm.machinfo->charge_on_temp) { - printk(KERN_WARNING "Not charging: temperature out of limits.\n"); - return -1; - } - - return 0; -} - -#ifdef CONFIG_PM -static int sharpsl_check_battery_voltage(void) -{ - int val, i, buff[5]; - - /* disable charge, enable discharge */ - sharpsl_pm.machinfo->charge(0); - sharpsl_pm.machinfo->discharge(1); - mdelay(SHARPSL_WAIT_DISCHARGE_ON); - - if (sharpsl_pm.machinfo->discharge1) - sharpsl_pm.machinfo->discharge1(1); - - /* Check battery voltage */ - for (i = 0; i < 5; i++) { - buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); - mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); - } - - if (sharpsl_pm.machinfo->discharge1) - sharpsl_pm.machinfo->discharge1(0); - - sharpsl_pm.machinfo->discharge(0); - - val = get_select_val(buff); - dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val); - - if (val < sharpsl_pm.machinfo->charge_on_volt) - return -1; - - return 0; -} -#endif - -static int sharpsl_ac_check(void) -{ - int temp, i, buff[5]; - - for (i = 0; i < 5; i++) { - buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT); - mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN); - } - - temp = get_select_val(buff); - dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n", temp); - - if ((temp > sharpsl_pm.machinfo->charge_acin_high) || (temp < sharpsl_pm.machinfo->charge_acin_low)) { - dev_err(sharpsl_pm.dev, "Error: AC check failed: voltage %d.\n", temp); - return -1; - } - - return 0; -} - -#ifdef CONFIG_PM -static int sharpsl_pm_suspend(struct platform_device *pdev, pm_message_t state) -{ - sharpsl_pm.flags |= SHARPSL_SUSPENDED; - flush_delayed_work_sync(&toggle_charger); - flush_delayed_work_sync(&sharpsl_bat); - - if (sharpsl_pm.charge_mode == CHRG_ON) - sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; - else - sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; - - return 0; -} - -static int sharpsl_pm_resume(struct platform_device *pdev) -{ - /* Clear the reset source indicators as they break the bootloader upon reboot */ - RCSR = 0x0f; - sharpsl_average_clear(); - sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED; - sharpsl_pm.flags &= ~SHARPSL_SUSPENDED; - - return 0; -} - -static void corgi_goto_sleep(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) -{ - dev_dbg(sharpsl_pm.dev, "Time is: %08x\n", RCNR); - - dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n", sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG); - /* not charging and AC-IN! */ - - if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN))) { - dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n"); - sharpsl_pm.charge_mode = CHRG_OFF; - sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; - sharpsl_off_charge_battery(); - } - - sharpsl_pm.machinfo->presuspend(); - - PEDR = 0xffffffff; /* clear it */ - - sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE; - if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) { - RTSR &= RTSR_ALE; - RTAR = RCNR + SHARPSL_BATCHK_TIME_SUSPEND; - dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n", RTAR); - sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE; - } else if (alarm_enable) { - RTSR &= RTSR_ALE; - RTAR = alarm_time; - dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n", RTAR); - } else { - dev_dbg(sharpsl_pm.dev, "No alarms set.\n"); - } - - pxa_pm_enter(state); - - sharpsl_pm.machinfo->postsuspend(); - - dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n", PEDR); -} - -static int corgi_enter_suspend(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) -{ - if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable)) { - if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) { - dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n"); - corgi_goto_sleep(alarm_time, alarm_enable, state); - return 1; - } - if (sharpsl_off_charge_battery()) { - dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n"); - corgi_goto_sleep(alarm_time, alarm_enable, state); - return 1; - } - dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n"); - } - - if ((!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) || - (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL))) { - dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n"); - corgi_goto_sleep(alarm_time, alarm_enable, state); - return 1; - } - - return 0; -} - -static int corgi_pxa_pm_enter(suspend_state_t state) -{ - unsigned long alarm_time = RTAR; - unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0); - - dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n"); - - corgi_goto_sleep(alarm_time, alarm_status, state); - - while (corgi_enter_suspend(alarm_time, alarm_status, state)) - {} - - if (sharpsl_pm.machinfo->earlyresume) - sharpsl_pm.machinfo->earlyresume(); - - dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n"); - - return 0; -} - -/* - * Check for fatal battery errors - * Fatal returns -1 - */ -static int sharpsl_fatal_check(void) -{ - int buff[5], temp, i, acin; - - dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n"); - - /* Check AC-Adapter */ - acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); - - if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { - sharpsl_pm.machinfo->charge(0); - udelay(100); - sharpsl_pm.machinfo->discharge(1); /* enable discharge */ - mdelay(SHARPSL_WAIT_DISCHARGE_ON); - } - - if (sharpsl_pm.machinfo->discharge1) - sharpsl_pm.machinfo->discharge1(1); - - /* Check battery : check inserting battery ? */ - for (i = 0; i < 5; i++) { - buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); - mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); - } - - if (sharpsl_pm.machinfo->discharge1) - sharpsl_pm.machinfo->discharge1(0); - - if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { - udelay(100); - sharpsl_pm.machinfo->charge(1); - sharpsl_pm.machinfo->discharge(0); - } - - temp = get_select_val(buff); - dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %ld\n", acin, temp, sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT)); - - if ((acin && (temp < sharpsl_pm.machinfo->fatal_acin_volt)) || - (!acin && (temp < sharpsl_pm.machinfo->fatal_noacin_volt))) - return -1; - return 0; -} - -static int sharpsl_off_charge_error(void) -{ - dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n"); - sharpsl_pm.machinfo->charge(0); - sharpsl_pm_led(SHARPSL_LED_ERROR); - sharpsl_pm.charge_mode = CHRG_ERROR; - return 1; -} - -/* - * Charging Control while suspended - * Return 1 - go straight to sleep - * Return 0 - sleep or wakeup depending on other factors - */ -static int sharpsl_off_charge_battery(void) -{ - int time; - - dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode); - - if (sharpsl_pm.charge_mode == CHRG_OFF) { - dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n"); - - /* AC Check */ - if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0)) - return sharpsl_off_charge_error(); - - /* Start Charging */ - sharpsl_pm_led(SHARPSL_LED_ON); - sharpsl_pm.machinfo->charge(0); - mdelay(SHARPSL_CHARGE_WAIT_TIME); - sharpsl_pm.machinfo->charge(1); - - sharpsl_pm.charge_mode = CHRG_ON; - sharpsl_pm.full_count = 0; - - return 1; - } else if (sharpsl_pm.charge_mode != CHRG_ON) { - return 1; - } - - if (sharpsl_pm.full_count == 0) { - int time; - - dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n"); - - if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0)) - return sharpsl_off_charge_error(); - - sharpsl_pm.machinfo->charge(0); - mdelay(SHARPSL_CHARGE_WAIT_TIME); - sharpsl_pm.machinfo->charge(1); - sharpsl_pm.charge_mode = CHRG_ON; - - mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); - - time = RCNR; - while (1) { - /* Check if any wakeup event had occurred */ - if (sharpsl_pm.machinfo->charger_wakeup() != 0) - return 0; - /* Check for timeout */ - if ((RCNR - time) > SHARPSL_WAIT_CO_TIME) - return 1; - if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) { - dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occurred. Retrying to check\n"); - sharpsl_pm.full_count++; - sharpsl_pm.machinfo->charge(0); - mdelay(SHARPSL_CHARGE_WAIT_TIME); - sharpsl_pm.machinfo->charge(1); - return 1; - } - } - } - - dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n"); - - mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); - - time = RCNR; - while (1) { - /* Check if any wakeup event had occurred */ - if (sharpsl_pm.machinfo->charger_wakeup()) - return 0; - /* Check for timeout */ - if ((RCNR-time) > SHARPSL_WAIT_CO_TIME) { - if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) { - dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n"); - sharpsl_pm.full_count = 0; - } - sharpsl_pm.full_count++; - return 1; - } - if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) { - dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n"); - sharpsl_pm_led(SHARPSL_LED_OFF); - sharpsl_pm.machinfo->charge(0); - sharpsl_pm.charge_mode = CHRG_DONE; - return 1; - } - } -} -#else -#define sharpsl_pm_suspend NULL -#define sharpsl_pm_resume NULL -#endif - -static ssize_t battery_percentage_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_percent); -} - -static ssize_t battery_voltage_show(struct device *dev, struct device_attribute *attr, char *buf) -{ - return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_voltage); -} - -static DEVICE_ATTR(battery_percentage, 0444, battery_percentage_show, NULL); -static DEVICE_ATTR(battery_voltage, 0444, battery_voltage_show, NULL); - -extern void (*apm_get_power_status)(struct apm_power_info *); - -static void sharpsl_apm_get_power_status(struct apm_power_info *info) -{ - info->ac_line_status = sharpsl_pm.battstat.ac_status; - - if (sharpsl_pm.charge_mode == CHRG_ON) - info->battery_status = APM_BATTERY_STATUS_CHARGING; - else - info->battery_status = sharpsl_pm.battstat.mainbat_status; - - info->battery_flag = (1 << info->battery_status); - info->battery_life = sharpsl_pm.battstat.mainbat_percent; -} - -#ifdef CONFIG_PM -static const struct platform_suspend_ops sharpsl_pm_ops = { - .prepare = pxa_pm_prepare, - .finish = pxa_pm_finish, - .enter = corgi_pxa_pm_enter, - .valid = suspend_valid_only_mem, -}; -#endif - -static int __devinit sharpsl_pm_probe(struct platform_device *pdev) -{ - int ret; - - if (!pdev->dev.platform_data) - return -EINVAL; - - sharpsl_pm.dev = &pdev->dev; - sharpsl_pm.machinfo = pdev->dev.platform_data; - sharpsl_pm.charge_mode = CHRG_OFF; - sharpsl_pm.flags = 0; - - init_timer(&sharpsl_pm.ac_timer); - sharpsl_pm.ac_timer.function = sharpsl_ac_timer; - - init_timer(&sharpsl_pm.chrg_full_timer); - sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer; - - led_trigger_register_simple("sharpsl-charge", &sharpsl_charge_led_trigger); - - sharpsl_pm.machinfo->init(); - - gpio_request(sharpsl_pm.machinfo->gpio_acin, "AC IN"); - gpio_direction_input(sharpsl_pm.machinfo->gpio_acin); - gpio_request(sharpsl_pm.machinfo->gpio_batfull, "Battery Full"); - gpio_direction_input(sharpsl_pm.machinfo->gpio_batfull); - gpio_request(sharpsl_pm.machinfo->gpio_batlock, "Battery Lock"); - gpio_direction_input(sharpsl_pm.machinfo->gpio_batlock); - - /* Register interrupt handlers */ - if (request_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr, IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "AC Input Detect", sharpsl_ac_isr)) { - dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_acin)); - } - - if (request_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr, IRQF_DISABLED | IRQF_TRIGGER_FALLING, "Battery Cover", sharpsl_fatal_isr)) { - dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batlock)); - } - - if (sharpsl_pm.machinfo->gpio_fatal) { - if (request_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_fatal), sharpsl_fatal_isr, IRQF_DISABLED | IRQF_TRIGGER_FALLING, "Fatal Battery", sharpsl_fatal_isr)) { - dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_fatal)); - } - } - - if (sharpsl_pm.machinfo->batfull_irq) { - /* Register interrupt handler. */ - if (request_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr, IRQF_DISABLED | IRQF_TRIGGER_RISING, "CO", sharpsl_chrg_full_isr)) { - dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batfull)); - } - } - - ret = device_create_file(&pdev->dev, &dev_attr_battery_percentage); - ret |= device_create_file(&pdev->dev, &dev_attr_battery_voltage); - if (ret != 0) - dev_warn(&pdev->dev, "Failed to register attributes (%d)\n", ret); - - apm_get_power_status = sharpsl_apm_get_power_status; - -#ifdef CONFIG_PM - suspend_set_ops(&sharpsl_pm_ops); -#endif - - mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); - - return 0; -} - -static int sharpsl_pm_remove(struct platform_device *pdev) -{ - suspend_set_ops(NULL); - - device_remove_file(&pdev->dev, &dev_attr_battery_percentage); - device_remove_file(&pdev->dev, &dev_attr_battery_voltage); - - led_trigger_unregister_simple(sharpsl_charge_led_trigger); - - free_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr); - free_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr); - - if (sharpsl_pm.machinfo->gpio_fatal) - free_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_fatal), sharpsl_fatal_isr); - - if (sharpsl_pm.machinfo->batfull_irq) - free_irq(PXA_GPIO_TO_IRQ(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr); - - gpio_free(sharpsl_pm.machinfo->gpio_batlock); - gpio_free(sharpsl_pm.machinfo->gpio_batfull); - gpio_free(sharpsl_pm.machinfo->gpio_acin); - - if (sharpsl_pm.machinfo->exit) - sharpsl_pm.machinfo->exit(); - - del_timer_sync(&sharpsl_pm.chrg_full_timer); - del_timer_sync(&sharpsl_pm.ac_timer); - - return 0; -} - -static struct platform_driver sharpsl_pm_driver = { - .probe = sharpsl_pm_probe, - .remove = sharpsl_pm_remove, - .suspend = sharpsl_pm_suspend, - .resume = sharpsl_pm_resume, - .driver = { - .name = "sharpsl-pm", - }, -}; - -static int __devinit sharpsl_pm_init(void) -{ - return platform_driver_register(&sharpsl_pm_driver); -} - -static void sharpsl_pm_exit(void) -{ - platform_driver_unregister(&sharpsl_pm_driver); -} - -late_initcall(sharpsl_pm_init); -module_exit(sharpsl_pm_exit); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/sleep.S b/ANDROID_3.4.5/arch/arm/mach-pxa/sleep.S deleted file mode 100644 index 1e544be9..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/sleep.S +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Low-level PXA250/210 sleep/wakeUp support - * - * Initial SA1110 code: - * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com> - * - * Adapted for PXA by Nicolas Pitre: - * Copyright (c) 2002 Monta Vista Software, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License. - */ - -#include <linux/linkage.h> -#include <asm/assembler.h> -#include <mach/hardware.h> -#include <mach/smemc.h> -#include <mach/pxa2xx-regs.h> - -#define MDREFR_KDIV 0x200a4000 // all banks -#define CCCR_SLEEP 0x00000107 // L=7 2N=2 A=0 PPDIS=0 CPDIS=0 - - .text - -#ifdef CONFIG_PXA3xx -/* - * pxa3xx_finish_suspend() - forces CPU into sleep state (S2D3C4) - */ -ENTRY(pxa3xx_finish_suspend) - mov r0, #0x06 @ S2D3C4 mode - mcr p14, 0, r0, c7, c0, 0 @ enter sleep - -20: b 20b @ waiting for sleep -#endif /* CONFIG_PXA3xx */ - -#ifdef CONFIG_PXA27x -/* - * pxa27x_finish_suspend() - * - * Forces CPU into sleep state. - * - * r0 = value for PWRMODE M field for desired sleep state - */ -ENTRY(pxa27x_finish_suspend) - @ Put the processor to sleep - @ (also workaround for sighting 28071) - - @ prepare value for sleep mode - mov r1, r0 @ sleep mode - - @ prepare pointer to physical address 0 (virtual mapping in generic.c) - mov r2, #UNCACHED_PHYS_0 - - @ prepare SDRAM refresh settings - ldr r4, =MDREFR - ldr r5, [r4] - - @ enable SDRAM self-refresh mode - orr r5, r5, #MDREFR_SLFRSH - - @ set SDCLKx divide-by-2 bits (this is part of a workaround for Errata 50) - ldr r6, =MDREFR_KDIV - orr r5, r5, r6 - - @ Intel PXA270 Specification Update notes problems sleeping - @ with core operating above 91 MHz - @ (see Errata 50, ...processor does not exit from sleep...) - - ldr r6, =CCCR - ldr r8, [r6] @ keep original value for resume - - ldr r7, =CCCR_SLEEP @ prepare CCCR sleep value - mov r0, #0x2 @ prepare value for CLKCFG - - @ align execution to a cache line - b pxa_cpu_do_suspend -#endif - -#ifdef CONFIG_PXA25x -/* - * pxa25x_finish_suspend() - * - * Forces CPU into sleep state. - * - * r0 = value for PWRMODE M field for desired sleep state - */ - -ENTRY(pxa25x_finish_suspend) - @ prepare value for sleep mode - mov r1, r0 @ sleep mode - - @ prepare pointer to physical address 0 (virtual mapping in generic.c) - mov r2, #UNCACHED_PHYS_0 - - @ prepare SDRAM refresh settings - ldr r4, =MDREFR - ldr r5, [r4] - - @ enable SDRAM self-refresh mode - orr r5, r5, #MDREFR_SLFRSH - - @ Intel PXA255 Specification Update notes problems - @ about suspending with PXBus operating above 133MHz - @ (see Errata 31, GPIO output signals, ... unpredictable in sleep - @ - @ We keep the change-down close to the actual suspend on SDRAM - @ as possible to eliminate messing about with the refresh clock - @ as the system will restore with the original speed settings - @ - @ Ben Dooks, 13-Sep-2004 - - ldr r6, =CCCR - ldr r8, [r6] @ keep original value for resume - - @ ensure x1 for run and turbo mode with memory clock - bic r7, r8, #CCCR_M_MASK | CCCR_N_MASK - orr r7, r7, #(1<<5) | (2<<7) - - @ check that the memory frequency is within limits - and r14, r7, #CCCR_L_MASK - teq r14, #1 - bicne r7, r7, #CCCR_L_MASK - orrne r7, r7, #1 @@ 99.53MHz - - @ get ready for the change - - @ note, turbo is not preserved over sleep so there is no - @ point in preserving it here. we save it on the stack with the - @ other CP registers instead. - mov r0, #0 - mcr p14, 0, r0, c6, c0, 0 - orr r0, r0, #2 @ initiate change bit - b pxa_cpu_do_suspend -#endif - - .ltorg - .align 5 -pxa_cpu_do_suspend: - - @ All needed values are now in registers. - @ These last instructions should be in cache - - @ initiate the frequency change... - str r7, [r6] - mcr p14, 0, r0, c6, c0, 0 - - @ restore the original cpu speed value for resume - str r8, [r6] - - @ need 6 13-MHz cycles before changing PWRMODE - @ just set frequency to 91-MHz... 6*91/13 = 42 - - mov r0, #42 -10: subs r0, r0, #1 - bne 10b - - @ Do not reorder... - @ Intel PXA270 Specification Update notes problems performing - @ external accesses after SDRAM is put in self-refresh mode - @ (see Errata 39 ...hangs when entering self-refresh mode) - - @ force address lines low by reading at physical address 0 - ldr r3, [r2] - - @ put SDRAM into self-refresh - str r5, [r4] - - @ enter sleep mode - mcr p14, 0, r1, c7, c0, 0 @ PWRMODE - -20: b 20b @ loop waiting for sleep diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/smemc.c b/ANDROID_3.4.5/arch/arm/mach-pxa/smemc.c deleted file mode 100644 index 79923058..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/smemc.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Static Memory Controller - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/io.h> -#include <linux/syscore_ops.h> - -#include <mach/hardware.h> -#include <mach/smemc.h> - -#ifdef CONFIG_PM -static unsigned long msc[2]; -static unsigned long sxcnfg, memclkcfg; -static unsigned long csadrcfg[4]; - -static int pxa3xx_smemc_suspend(void) -{ - msc[0] = __raw_readl(MSC0); - msc[1] = __raw_readl(MSC1); - sxcnfg = __raw_readl(SXCNFG); - memclkcfg = __raw_readl(MEMCLKCFG); - csadrcfg[0] = __raw_readl(CSADRCFG0); - csadrcfg[1] = __raw_readl(CSADRCFG1); - csadrcfg[2] = __raw_readl(CSADRCFG2); - csadrcfg[3] = __raw_readl(CSADRCFG3); - - return 0; -} - -static void pxa3xx_smemc_resume(void) -{ - __raw_writel(msc[0], MSC0); - __raw_writel(msc[1], MSC1); - __raw_writel(sxcnfg, SXCNFG); - __raw_writel(memclkcfg, MEMCLKCFG); - __raw_writel(csadrcfg[0], CSADRCFG0); - __raw_writel(csadrcfg[1], CSADRCFG1); - __raw_writel(csadrcfg[2], CSADRCFG2); - __raw_writel(csadrcfg[3], CSADRCFG3); -} - -static struct syscore_ops smemc_syscore_ops = { - .suspend = pxa3xx_smemc_suspend, - .resume = pxa3xx_smemc_resume, -}; - -static int __init smemc_init(void) -{ - if (cpu_is_pxa3xx()) - register_syscore_ops(&smemc_syscore_ops); - - return 0; -} -subsys_initcall(smemc_init); -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/spitz.c b/ANDROID_3.4.5/arch/arm/mach-pxa/spitz.c deleted file mode 100644 index df2ab0fb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/spitz.c +++ /dev/null @@ -1,1022 +0,0 @@ -/* - * Support for Sharp SL-Cxx00 Series of PDAs - * Models: SL-C3000 (Spitz), SL-C1000 (Akita) and SL-C3100 (Borzoi) - * - * Copyright (c) 2005 Richard Purdie - * - * Based on Sharp's 2.4 kernel patches/lubbock.c - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/gpio_keys.h> -#include <linux/gpio.h> -#include <linux/leds.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/i2c/pca953x.h> -#include <linux/spi/spi.h> -#include <linux/spi/ads7846.h> -#include <linux/spi/corgi_lcd.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/mtd/sharpsl.h> -#include <linux/mtd/physmap.h> -#include <linux/input/matrix_keypad.h> -#include <linux/regulator/machine.h> -#include <linux/io.h> -#include <linux/module.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/sharpsl_param.h> -#include <asm/hardware/scoop.h> - -#include <mach/pxa27x.h> -#include <mach/pxa27x-udc.h> -#include <mach/reset.h> -#include <mach/irda.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <mach/pxafb.h> -#include <mach/spitz.h> -#include <mach/sharpsl_pm.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long spitz_pin_config[] __initdata = { - /* Chip Selects */ - GPIO78_nCS_2, /* SCOOP #2 */ - GPIO79_nCS_3, /* NAND */ - GPIO80_nCS_4, /* SCOOP #1 */ - - /* LCD - 16bpp Active TFT */ - GPIOxx_LCD_TFT_16BPP, - - /* PC Card */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO104_PSKTSEL, - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - - /* MMC */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - - /* GPIOs */ - GPIO9_GPIO, /* SPITZ_GPIO_nSD_DETECT */ - GPIO16_GPIO, /* SPITZ_GPIO_SYNC */ - GPIO81_GPIO, /* SPITZ_GPIO_nSD_WP */ - GPIO41_GPIO, /* SPITZ_GPIO_USB_CONNECT */ - GPIO37_GPIO, /* SPITZ_GPIO_USB_HOST */ - GPIO35_GPIO, /* SPITZ_GPIO_USB_DEVICE */ - GPIO22_GPIO, /* SPITZ_GPIO_HSYNC */ - GPIO94_GPIO, /* SPITZ_GPIO_CF_CD */ - GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */ - GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */ - - /* GPIO matrix keypad */ - GPIO88_GPIO, /* column 0 */ - GPIO23_GPIO, /* column 1 */ - GPIO24_GPIO, /* column 2 */ - GPIO25_GPIO, /* column 3 */ - GPIO26_GPIO, /* column 4 */ - GPIO27_GPIO, /* column 5 */ - GPIO52_GPIO, /* column 6 */ - GPIO103_GPIO, /* column 7 */ - GPIO107_GPIO, /* column 8 */ - GPIO108_GPIO, /* column 9 */ - GPIO114_GPIO, /* column 10 */ - GPIO12_GPIO, /* row 0 */ - GPIO17_GPIO, /* row 1 */ - GPIO91_GPIO, /* row 2 */ - GPIO34_GPIO, /* row 3 */ - GPIO36_GPIO, /* row 4 */ - GPIO38_GPIO, /* row 5 */ - GPIO39_GPIO, /* row 6 */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, /* SPITZ_GPIO_KEY_INT */ - GPIO1_GPIO | WAKEUP_ON_EDGE_FALL, /* SPITZ_GPIO_RESET */ -}; - - -/****************************************************************************** - * Scoop GPIO expander - ******************************************************************************/ -#if defined(CONFIG_SHARP_SCOOP) || defined(CONFIG_SHARP_SCOOP_MODULE) -/* SCOOP Device #1 */ -static struct resource spitz_scoop_1_resources[] = { - [0] = { - .start = 0x10800000, - .end = 0x10800fff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config spitz_scoop_1_setup = { - .io_dir = SPITZ_SCP_IO_DIR, - .io_out = SPITZ_SCP_IO_OUT, - .suspend_clr = SPITZ_SCP_SUS_CLR, - .suspend_set = SPITZ_SCP_SUS_SET, - .gpio_base = SPITZ_SCP_GPIO_BASE, -}; - -struct platform_device spitz_scoop_1_device = { - .name = "sharp-scoop", - .id = 0, - .dev = { - .platform_data = &spitz_scoop_1_setup, - }, - .num_resources = ARRAY_SIZE(spitz_scoop_1_resources), - .resource = spitz_scoop_1_resources, -}; - -/* SCOOP Device #2 */ -static struct resource spitz_scoop_2_resources[] = { - [0] = { - .start = 0x08800040, - .end = 0x08800fff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config spitz_scoop_2_setup = { - .io_dir = SPITZ_SCP2_IO_DIR, - .io_out = SPITZ_SCP2_IO_OUT, - .suspend_clr = SPITZ_SCP2_SUS_CLR, - .suspend_set = SPITZ_SCP2_SUS_SET, - .gpio_base = SPITZ_SCP2_GPIO_BASE, -}; - -struct platform_device spitz_scoop_2_device = { - .name = "sharp-scoop", - .id = 1, - .dev = { - .platform_data = &spitz_scoop_2_setup, - }, - .num_resources = ARRAY_SIZE(spitz_scoop_2_resources), - .resource = spitz_scoop_2_resources, -}; - -static void __init spitz_scoop_init(void) -{ - platform_device_register(&spitz_scoop_1_device); - - /* Akita doesn't have the second SCOOP chip */ - if (!machine_is_akita()) - platform_device_register(&spitz_scoop_2_device); -} - -/* Power control is shared with between one of the CF slots and SD */ -static void spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) -{ - unsigned short cpr; - unsigned long flags; - - if (new_cpr & 0x7) { - gpio_set_value(SPITZ_GPIO_CF_POWER, 1); - mdelay(5); - } - - local_irq_save(flags); - - cpr = read_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR); - - if (enable & new_cpr) - cpr |= new_cpr; - else - cpr &= ~enable; - - write_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR, cpr); - - local_irq_restore(flags); - - if (!(cpr & 0x7)) { - mdelay(1); - gpio_set_value(SPITZ_GPIO_CF_POWER, 0); - } -} - -#else -static inline void spitz_scoop_init(void) {} -static inline void spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) {} -#endif - -/****************************************************************************** - * PCMCIA - ******************************************************************************/ -#if defined(CONFIG_PCMCIA_PXA2XX) || defined(CONFIG_PCMCIA_PXA2XX_MODULE) -static void spitz_pcmcia_pwr(struct device *scoop, uint16_t cpr, int nr) -{ - /* Only need to override behaviour for slot 0 */ - if (nr == 0) - spitz_card_pwr_ctrl( - cpr & (SCOOP_CPR_CF_3V | SCOOP_CPR_CF_XV), cpr); - else - write_scoop_reg(scoop, SCOOP_CPR, cpr); -} - -static struct scoop_pcmcia_dev spitz_pcmcia_scoop[] = { - { - .dev = &spitz_scoop_1_device.dev, - .irq = SPITZ_IRQ_GPIO_CF_IRQ, - .cd_irq = SPITZ_IRQ_GPIO_CF_CD, - .cd_irq_str = "PCMCIA0 CD", - }, { - .dev = &spitz_scoop_2_device.dev, - .irq = SPITZ_IRQ_GPIO_CF2_IRQ, - .cd_irq = -1, - }, -}; - -static struct scoop_pcmcia_config spitz_pcmcia_config = { - .devs = &spitz_pcmcia_scoop[0], - .num_devs = 2, - .power_ctrl = spitz_pcmcia_pwr, -}; - -static void __init spitz_pcmcia_init(void) -{ - /* Akita has only one PCMCIA slot used */ - if (machine_is_akita()) - spitz_pcmcia_config.num_devs = 1; - - platform_scoop_config = &spitz_pcmcia_config; -} -#else -static inline void spitz_pcmcia_init(void) {} -#endif - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE) - -#define SPITZ_KEY_CALENDAR KEY_F1 -#define SPITZ_KEY_ADDRESS KEY_F2 -#define SPITZ_KEY_FN KEY_F3 -#define SPITZ_KEY_CANCEL KEY_F4 -#define SPITZ_KEY_EXOK KEY_F5 -#define SPITZ_KEY_EXCANCEL KEY_F6 -#define SPITZ_KEY_EXJOGDOWN KEY_F7 -#define SPITZ_KEY_EXJOGUP KEY_F8 -#define SPITZ_KEY_JAP1 KEY_LEFTALT -#define SPITZ_KEY_JAP2 KEY_RIGHTCTRL -#define SPITZ_KEY_SYNC KEY_F9 -#define SPITZ_KEY_MAIL KEY_F10 -#define SPITZ_KEY_OK KEY_F11 -#define SPITZ_KEY_MENU KEY_F12 - -static const uint32_t spitz_keymap[] = { - KEY(0, 0, KEY_LEFTCTRL), - KEY(0, 1, KEY_1), - KEY(0, 2, KEY_3), - KEY(0, 3, KEY_5), - KEY(0, 4, KEY_6), - KEY(0, 5, KEY_7), - KEY(0, 6, KEY_9), - KEY(0, 7, KEY_0), - KEY(0, 8, KEY_BACKSPACE), - KEY(0, 9, SPITZ_KEY_EXOK), /* EXOK */ - KEY(0, 10, SPITZ_KEY_EXCANCEL), /* EXCANCEL */ - KEY(1, 1, KEY_2), - KEY(1, 2, KEY_4), - KEY(1, 3, KEY_R), - KEY(1, 4, KEY_Y), - KEY(1, 5, KEY_8), - KEY(1, 6, KEY_I), - KEY(1, 7, KEY_O), - KEY(1, 8, KEY_P), - KEY(1, 9, SPITZ_KEY_EXJOGDOWN), /* EXJOGDOWN */ - KEY(1, 10, SPITZ_KEY_EXJOGUP), /* EXJOGUP */ - KEY(2, 0, KEY_TAB), - KEY(2, 1, KEY_Q), - KEY(2, 2, KEY_E), - KEY(2, 3, KEY_T), - KEY(2, 4, KEY_G), - KEY(2, 5, KEY_U), - KEY(2, 6, KEY_J), - KEY(2, 7, KEY_K), - KEY(3, 0, SPITZ_KEY_ADDRESS), /* ADDRESS */ - KEY(3, 1, KEY_W), - KEY(3, 2, KEY_S), - KEY(3, 3, KEY_F), - KEY(3, 4, KEY_V), - KEY(3, 5, KEY_H), - KEY(3, 6, KEY_M), - KEY(3, 7, KEY_L), - KEY(3, 9, KEY_RIGHTSHIFT), - KEY(4, 0, SPITZ_KEY_CALENDAR), /* CALENDAR */ - KEY(4, 1, KEY_A), - KEY(4, 2, KEY_D), - KEY(4, 3, KEY_C), - KEY(4, 4, KEY_B), - KEY(4, 5, KEY_N), - KEY(4, 6, KEY_DOT), - KEY(4, 8, KEY_ENTER), - KEY(4, 9, KEY_LEFTSHIFT), - KEY(5, 0, SPITZ_KEY_MAIL), /* MAIL */ - KEY(5, 1, KEY_Z), - KEY(5, 2, KEY_X), - KEY(5, 3, KEY_MINUS), - KEY(5, 4, KEY_SPACE), - KEY(5, 5, KEY_COMMA), - KEY(5, 7, KEY_UP), - KEY(5, 10, SPITZ_KEY_FN), /* FN */ - KEY(6, 0, KEY_SYSRQ), - KEY(6, 1, SPITZ_KEY_JAP1), /* JAP1 */ - KEY(6, 2, SPITZ_KEY_JAP2), /* JAP2 */ - KEY(6, 3, SPITZ_KEY_CANCEL), /* CANCEL */ - KEY(6, 4, SPITZ_KEY_OK), /* OK */ - KEY(6, 5, SPITZ_KEY_MENU), /* MENU */ - KEY(6, 6, KEY_LEFT), - KEY(6, 7, KEY_DOWN), - KEY(6, 8, KEY_RIGHT), -}; - -static const struct matrix_keymap_data spitz_keymap_data = { - .keymap = spitz_keymap, - .keymap_size = ARRAY_SIZE(spitz_keymap), -}; - -static const uint32_t spitz_row_gpios[] = - { 12, 17, 91, 34, 36, 38, 39 }; -static const uint32_t spitz_col_gpios[] = - { 88, 23, 24, 25, 26, 27, 52, 103, 107, 108, 114 }; - -static struct matrix_keypad_platform_data spitz_mkp_pdata = { - .keymap_data = &spitz_keymap_data, - .row_gpios = spitz_row_gpios, - .col_gpios = spitz_col_gpios, - .num_row_gpios = ARRAY_SIZE(spitz_row_gpios), - .num_col_gpios = ARRAY_SIZE(spitz_col_gpios), - .col_scan_delay_us = 10, - .debounce_ms = 10, - .wakeup = 1, -}; - -static struct platform_device spitz_mkp_device = { - .name = "matrix-keypad", - .id = -1, - .dev = { - .platform_data = &spitz_mkp_pdata, - }, -}; - -static void __init spitz_mkp_init(void) -{ - platform_device_register(&spitz_mkp_device); -} -#else -static inline void spitz_mkp_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button spitz_gpio_keys[] = { - { - .type = EV_PWR, - .code = KEY_SUSPEND, - .gpio = SPITZ_GPIO_ON_KEY, - .desc = "On Off", - .wakeup = 1, - }, - /* Two buttons detecting the lid state */ - { - .type = EV_SW, - .code = 0, - .gpio = SPITZ_GPIO_SWA, - .desc = "Display Down", - }, - { - .type = EV_SW, - .code = 1, - .gpio = SPITZ_GPIO_SWB, - .desc = "Lid Closed", - }, -}; - -static struct gpio_keys_platform_data spitz_gpio_keys_platform_data = { - .buttons = spitz_gpio_keys, - .nbuttons = ARRAY_SIZE(spitz_gpio_keys), -}; - -static struct platform_device spitz_gpio_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &spitz_gpio_keys_platform_data, - }, -}; - -static void __init spitz_keys_init(void) -{ - platform_device_register(&spitz_gpio_keys_device); -} -#else -static inline void spitz_keys_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static struct gpio_led spitz_gpio_leds[] = { - { - .name = "spitz:amber:charge", - .default_trigger = "sharpsl-charge", - .gpio = SPITZ_GPIO_LED_ORANGE, - }, - { - .name = "spitz:green:hddactivity", - .default_trigger = "ide-disk", - .gpio = SPITZ_GPIO_LED_GREEN, - }, -}; - -static struct gpio_led_platform_data spitz_gpio_leds_info = { - .leds = spitz_gpio_leds, - .num_leds = ARRAY_SIZE(spitz_gpio_leds), -}; - -static struct platform_device spitz_led_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &spitz_gpio_leds_info, - }, -}; - -static void __init spitz_leds_init(void) -{ - platform_device_register(&spitz_led_device); -} -#else -static inline void spitz_leds_init(void) {} -#endif - -/****************************************************************************** - * SSP Devices - ******************************************************************************/ -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -static void spitz_ads7846_wait_for_hsync(void) -{ - while (gpio_get_value(SPITZ_GPIO_HSYNC)) - cpu_relax(); - - while (!gpio_get_value(SPITZ_GPIO_HSYNC)) - cpu_relax(); -} - -static struct ads7846_platform_data spitz_ads7846_info = { - .model = 7846, - .vref_delay_usecs = 100, - .x_plate_ohms = 419, - .y_plate_ohms = 486, - .pressure_max = 1024, - .gpio_pendown = SPITZ_GPIO_TP_INT, - .wait_for_sync = spitz_ads7846_wait_for_hsync, -}; - -static struct pxa2xx_spi_chip spitz_ads7846_chip = { - .gpio_cs = SPITZ_GPIO_ADS7846_CS, -}; - -static void spitz_bl_kick_battery(void) -{ - void (*kick_batt)(void); - - kick_batt = symbol_get(sharpsl_battery_kick); - if (kick_batt) { - kick_batt(); - symbol_put(sharpsl_battery_kick); - } -} - -static struct corgi_lcd_platform_data spitz_lcdcon_info = { - .init_mode = CORGI_LCD_MODE_VGA, - .max_intensity = 0x2f, - .default_intensity = 0x1f, - .limit_mask = 0x0b, - .gpio_backlight_cont = SPITZ_GPIO_BACKLIGHT_CONT, - .gpio_backlight_on = SPITZ_GPIO_BACKLIGHT_ON, - .kick_battery = spitz_bl_kick_battery, -}; - -static struct pxa2xx_spi_chip spitz_lcdcon_chip = { - .gpio_cs = SPITZ_GPIO_LCDCON_CS, -}; - -static struct pxa2xx_spi_chip spitz_max1111_chip = { - .gpio_cs = SPITZ_GPIO_MAX1111_CS, -}; - -static struct spi_board_info spitz_spi_devices[] = { - { - .modalias = "ads7846", - .max_speed_hz = 1200000, - .bus_num = 2, - .chip_select = 0, - .platform_data = &spitz_ads7846_info, - .controller_data = &spitz_ads7846_chip, - .irq = PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT), - }, { - .modalias = "corgi-lcd", - .max_speed_hz = 50000, - .bus_num = 2, - .chip_select = 1, - .platform_data = &spitz_lcdcon_info, - .controller_data = &spitz_lcdcon_chip, - }, { - .modalias = "max1111", - .max_speed_hz = 450000, - .bus_num = 2, - .chip_select = 2, - .controller_data = &spitz_max1111_chip, - }, -}; - -static struct pxa2xx_spi_master spitz_spi_info = { - .num_chipselect = 3, -}; - -static void __init spitz_spi_init(void) -{ - struct corgi_lcd_platform_data *lcd_data = &spitz_lcdcon_info; - - if (machine_is_akita()) { - lcd_data->gpio_backlight_cont = AKITA_GPIO_BACKLIGHT_CONT; - lcd_data->gpio_backlight_on = AKITA_GPIO_BACKLIGHT_ON; - } - - pxa2xx_set_spi_info(2, &spitz_spi_info); - spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices)); -} -#else -static inline void spitz_spi_init(void) {} -#endif - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -/* - * NOTE: The card detect interrupt isn't debounced so we delay it by 250ms to - * give the card a chance to fully insert/eject. - */ -static void spitz_mci_setpower(struct device *dev, unsigned int vdd) -{ - struct pxamci_platform_data* p_d = dev->platform_data; - - if ((1 << vdd) & p_d->ocr_mask) - spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, SCOOP_CPR_SD_3V); - else - spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, 0x0); -} - -static struct pxamci_platform_data spitz_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .setpower = spitz_mci_setpower, - .gpio_card_detect = SPITZ_GPIO_nSD_DETECT, - .gpio_card_ro = SPITZ_GPIO_nSD_WP, - .gpio_power = -1, -}; - -static void __init spitz_mmc_init(void) -{ - pxa_set_mci_info(&spitz_mci_platform_data); -} -#else -static inline void spitz_mmc_init(void) {} -#endif - -/****************************************************************************** - * USB Host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static int spitz_ohci_init(struct device *dev) -{ - int err; - - err = gpio_request(SPITZ_GPIO_USB_HOST, "USB_HOST"); - if (err) - return err; - - /* Only Port 2 is connected, setup USB Port 2 Output Control Register */ - UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; - - return gpio_direction_output(SPITZ_GPIO_USB_HOST, 1); -} - -static void spitz_ohci_exit(struct device *dev) -{ - gpio_free(SPITZ_GPIO_USB_HOST); -} - -static struct pxaohci_platform_data spitz_ohci_platform_data = { - .port_mode = PMM_NPS_MODE, - .init = spitz_ohci_init, - .exit = spitz_ohci_exit, - .flags = ENABLE_PORT_ALL | NO_OC_PROTECTION, - .power_budget = 150, -}; - -static void __init spitz_uhc_init(void) -{ - pxa_set_ohci_info(&spitz_ohci_platform_data); -} -#else -static inline void spitz_uhc_init(void) {} -#endif - -/****************************************************************************** - * IrDA - ******************************************************************************/ -#if defined(CONFIG_PXA_FICP) || defined(CONFIG_PXA_FICP_MODULE) -static struct pxaficp_platform_data spitz_ficp_platform_data = { - .transceiver_cap = IR_SIRMODE | IR_OFF, -}; - -static void __init spitz_irda_init(void) -{ - if (machine_is_akita()) - spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON; - else - spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON; - - pxa_set_ficp_info(&spitz_ficp_platform_data); -} -#else -static inline void spitz_irda_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info spitz_pxafb_modes[] = { - { - .pixclock = 19231, - .xres = 480, - .yres = 640, - .bpp = 16, - .hsync_len = 40, - .left_margin = 46, - .right_margin = 125, - .vsync_len = 3, - .upper_margin = 1, - .lower_margin = 0, - .sync = 0, - }, { - .pixclock = 134617, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 20, - .left_margin = 20, - .right_margin = 46, - .vsync_len = 2, - .upper_margin = 1, - .lower_margin = 0, - .sync = 0, - }, -}; - -static struct pxafb_mach_info spitz_pxafb_info = { - .modes = spitz_pxafb_modes, - .num_modes = ARRAY_SIZE(spitz_pxafb_modes), - .fixed_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_ALTERNATE_MAPPING, -}; - -static void __init spitz_lcd_init(void) -{ - pxa_set_fb_info(NULL, &spitz_pxafb_info); -} -#else -static inline void spitz_lcd_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_MTD_NAND_SHARPSL) || defined(CONFIG_MTD_NAND_SHARPSL_MODULE) -static struct mtd_partition spitz_nand_partitions[] = { - { - .name = "System Area", - .offset = 0, - .size = 7 * 1024 * 1024, - }, { - .name = "Root Filesystem", - .offset = 7 * 1024 * 1024, - }, { - .name = "Home Filesystem", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; - -static struct nand_bbt_descr spitz_nand_bbt = { - .options = 0, - .offs = 4, - .len = 2, - .pattern = scan_ff_pattern -}; - -static struct nand_ecclayout akita_oobinfo = { - .oobfree = { {0x08, 0x09} }, - .eccbytes = 24, - .eccpos = { - 0x05, 0x01, 0x02, 0x03, 0x06, 0x07, 0x15, 0x11, - 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23, - 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37, - }, -}; - -static struct sharpsl_nand_platform_data spitz_nand_pdata = { - .badblock_pattern = &spitz_nand_bbt, - .partitions = spitz_nand_partitions, - .nr_partitions = ARRAY_SIZE(spitz_nand_partitions), -}; - -static struct resource spitz_nand_resources[] = { - { - .start = PXA_CS3_PHYS, - .end = PXA_CS3_PHYS + SZ_4K - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device spitz_nand_device = { - .name = "sharpsl-nand", - .id = -1, - .resource = spitz_nand_resources, - .num_resources = ARRAY_SIZE(spitz_nand_resources), - .dev = { - .platform_data = &spitz_nand_pdata, - } -}; - -static void __init spitz_nand_init(void) -{ - if (machine_is_spitz()) { - spitz_nand_partitions[1].size = 5 * 1024 * 1024; - } else if (machine_is_akita()) { - spitz_nand_partitions[1].size = 58 * 1024 * 1024; - spitz_nand_bbt.len = 1; - spitz_nand_pdata.ecc_layout = &akita_oobinfo; - } else if (machine_is_borzoi()) { - spitz_nand_partitions[1].size = 32 * 1024 * 1024; - spitz_nand_bbt.len = 1; - spitz_nand_pdata.ecc_layout = &akita_oobinfo; - } - - platform_device_register(&spitz_nand_device); -} -#else -static inline void spitz_nand_init(void) {} -#endif - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition spitz_rom_parts[] = { - { - .name ="Boot PROM Filesystem", - .offset = 0x00140000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data spitz_rom_data = { - .width = 2, - .nr_parts = ARRAY_SIZE(spitz_rom_parts), - .parts = spitz_rom_parts, -}; - -static struct resource spitz_rom_resources[] = { - { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_8M - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device spitz_rom_device = { - .name = "physmap-flash", - .id = -1, - .resource = spitz_rom_resources, - .num_resources = ARRAY_SIZE(spitz_rom_resources), - .dev = { - .platform_data = &spitz_rom_data, - }, -}; - -static void __init spitz_nor_init(void) -{ - platform_device_register(&spitz_rom_device); -} -#else -static inline void spitz_nor_init(void) {} -#endif - -/****************************************************************************** - * GPIO expander - ******************************************************************************/ -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct pca953x_platform_data akita_pca953x_pdata = { - .gpio_base = AKITA_IOEXP_GPIO_BASE, -}; - -static struct i2c_board_info spitz_i2c_devs[] = { - { - .type = "wm8750", - .addr = 0x1b, - }, { - .type = "max7310", - .addr = 0x18, - .platform_data = &akita_pca953x_pdata, - }, -}; - -static struct regulator_consumer_supply isl6271a_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data isl6271a_info[] = { - { - .constraints = { - .name = "vcc_core range", - .min_uV = 850000, - .max_uV = 1600000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .consumer_supplies = isl6271a_consumers, - .num_consumer_supplies = ARRAY_SIZE(isl6271a_consumers), - } -}; - -static struct i2c_board_info spitz_pi2c_devs[] = { - { - .type = "isl6271a", - .addr = 0x0c, - .platform_data = &isl6271a_info, - }, -}; - -static void __init spitz_i2c_init(void) -{ - int size = ARRAY_SIZE(spitz_i2c_devs); - - /* Only Akita has the max7310 chip */ - if (!machine_is_akita()) - size--; - - pxa_set_i2c_info(NULL); - pxa27x_set_i2c_power_info(NULL); - i2c_register_board_info(0, spitz_i2c_devs, size); - i2c_register_board_info(1, ARRAY_AND_SIZE(spitz_pi2c_devs)); -} -#else -static inline void spitz_i2c_init(void) {} -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void spitz_poweroff(void) -{ - pxa_restart('g', NULL); -} - -static void spitz_restart(char mode, const char *cmd) -{ - uint32_t msc0 = __raw_readl(MSC0); - /* Bootloader magic for a reboot */ - if ((msc0 & 0xffff0000) == 0x7ff00000) - __raw_writel((msc0 & 0xffff) | 0x7ee00000, MSC0); - - spitz_poweroff(); -} - -static void __init spitz_init(void) -{ - init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0); - pm_power_off = spitz_poweroff; - - PMCR = 0x00; - - /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ - PCFR |= PCFR_OPDE; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - spitz_spi_init(); - spitz_scoop_init(); - spitz_mkp_init(); - spitz_keys_init(); - spitz_leds_init(); - spitz_mmc_init(); - spitz_pcmcia_init(); - spitz_irda_init(); - spitz_uhc_init(); - spitz_lcd_init(); - spitz_nor_init(); - spitz_nand_init(); - spitz_i2c_init(); -} - -static void __init spitz_fixup(struct tag *tags, char **cmdline, - struct meminfo *mi) -{ - sharpsl_save_param(); - mi->nr_banks = 1; - mi->bank[0].start = 0xa0000000; - mi->bank[0].size = (64*1024*1024); -} - -#ifdef CONFIG_MACH_SPITZ -MACHINE_START(SPITZ, "SHARP Spitz") - .restart_mode = 'g', - .fixup = spitz_fixup, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = spitz_init, - .timer = &pxa_timer, - .restart = spitz_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_BORZOI -MACHINE_START(BORZOI, "SHARP Borzoi") - .restart_mode = 'g', - .fixup = spitz_fixup, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = spitz_init, - .timer = &pxa_timer, - .restart = spitz_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_AKITA -MACHINE_START(AKITA, "SHARP Akita") - .restart_mode = 'g', - .fixup = spitz_fixup, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .init_machine = spitz_init, - .timer = &pxa_timer, - .restart = spitz_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/spitz_pm.c b/ANDROID_3.4.5/arch/arm/mach-pxa/spitz_pm.c deleted file mode 100644 index 438f02fe..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/spitz_pm.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Battery and Power Management code for the Sharp SL-Cxx00 - * - * Copyright (c) 2005 Richard Purdie - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/module.h> -#include <linux/stat.h> -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/gpio-pxa.h> -#include <linux/interrupt.h> -#include <linux/platform_device.h> -#include <linux/apm-emulation.h> - -#include <asm/irq.h> -#include <asm/mach-types.h> -#include <mach/hardware.h> - -#include <mach/spitz.h> -#include <mach/pxa27x.h> -#include <mach/sharpsl_pm.h> - -#include "generic.h" - -#define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ -#define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ -#define SHARPSL_CHARGE_ON_ACIN_HIGH 0x9b /* 6V */ -#define SHARPSL_CHARGE_ON_ACIN_LOW 0x34 /* 2V */ -#define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ -#define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ - -static int spitz_last_ac_status; - -static struct gpio spitz_charger_gpios[] = { - { SPITZ_GPIO_KEY_INT, GPIOF_IN, "Keyboard Interrupt" }, - { SPITZ_GPIO_SYNC, GPIOF_IN, "Sync" }, - { SPITZ_GPIO_AC_IN, GPIOF_IN, "Charger Detection" }, - { SPITZ_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" }, - { SPITZ_GPIO_JK_B, GPIOF_OUT_INIT_LOW, "JK B" }, - { SPITZ_GPIO_CHRG_ON, GPIOF_OUT_INIT_LOW, "Charger On" }, -}; - -static void spitz_charger_init(void) -{ - gpio_request_array(ARRAY_AND_SIZE(spitz_charger_gpios)); -} - -static void spitz_measure_temp(int on) -{ - gpio_set_value(SPITZ_GPIO_ADC_TEMP_ON, on); -} - -static void spitz_charge(int on) -{ - if (on) { - if (sharpsl_pm.flags & SHARPSL_SUSPENDED) { - gpio_set_value(SPITZ_GPIO_JK_B, 1); - gpio_set_value(SPITZ_GPIO_CHRG_ON, 0); - } else { - gpio_set_value(SPITZ_GPIO_JK_B, 0); - gpio_set_value(SPITZ_GPIO_CHRG_ON, 0); - } - } else { - gpio_set_value(SPITZ_GPIO_JK_B, 0); - gpio_set_value(SPITZ_GPIO_CHRG_ON, 1); - } -} - -static void spitz_discharge(int on) -{ - gpio_set_value(SPITZ_GPIO_JK_A, on); -} - -/* HACK - For unknown reasons, accurate voltage readings are only made with a load - on the power bus which the green led on spitz provides */ -static void spitz_discharge1(int on) -{ - gpio_set_value(SPITZ_GPIO_LED_GREEN, on); -} - -static unsigned long gpio18_config[] = { - GPIO18_RDY, - GPIO18_GPIO, -}; - -static void spitz_presuspend(void) -{ - spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); - - /* GPIO Sleep Register */ - PGSR0 = 0x00144018; - PGSR1 = 0x00EF0000; - if (machine_is_akita()) { - PGSR2 = 0x2121C000; - PGSR3 = 0x00600400; - } else { - PGSR2 = 0x0121C000; - PGSR3 = 0x00600000; - } - - PGSR0 &= ~SPITZ_GPIO_G0_STROBE_BIT; - PGSR1 &= ~SPITZ_GPIO_G1_STROBE_BIT; - PGSR2 &= ~SPITZ_GPIO_G2_STROBE_BIT; - PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT; - PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0); - - pxa2xx_mfp_config(&gpio18_config[0], 1); - gpio_request_one(18, GPIOF_OUT_INIT_HIGH, "Unknown"); - gpio_free(18); - - PRER = GPIO_bit(SPITZ_GPIO_KEY_INT); - PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); - PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC; - PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); - PKSR = 0xffffffff; /* clear */ - - /* nRESET_OUT Disable */ - PSLR |= PSLR_SL_ROD; - - /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ - PCFR = PCFR_GPR_EN | PCFR_OPDE; -} - -static void spitz_postsuspend(void) -{ - pxa2xx_mfp_config(&gpio18_config[1], 1); -} - -static int spitz_should_wakeup(unsigned int resume_on_alarm) -{ - int is_resume = 0; - int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); - - if (spitz_last_ac_status != acin) { - if (acin) { - /* charge on */ - sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; - dev_dbg(sharpsl_pm.dev, "AC Inserted\n"); - } else { - /* charge off */ - dev_dbg(sharpsl_pm.dev, "AC Removed\n"); - sharpsl_pm_led(SHARPSL_LED_OFF); - sharpsl_pm.machinfo->charge(0); - sharpsl_pm.charge_mode = CHRG_OFF; - } - spitz_last_ac_status = acin; - /* Return to suspend as this must be what we were woken for */ - return 0; - } - - if (PEDR & GPIO_bit(SPITZ_GPIO_KEY_INT)) - is_resume |= GPIO_bit(SPITZ_GPIO_KEY_INT); - - if (PKSR & GPIO_bit(SPITZ_GPIO_SYNC)) - is_resume |= GPIO_bit(SPITZ_GPIO_SYNC); - - if (resume_on_alarm && (PEDR & PWER_RTC)) - is_resume |= PWER_RTC; - - dev_dbg(sharpsl_pm.dev, "is_resume: %x\n", is_resume); - return is_resume; -} - -static unsigned long spitz_charger_wakeup(void) -{ - unsigned long ret; - ret = ((!gpio_get_value(SPITZ_GPIO_KEY_INT) - << GPIO_bit(SPITZ_GPIO_KEY_INT)) - | gpio_get_value(SPITZ_GPIO_SYNC)); - return ret; -} - -unsigned long spitzpm_read_devdata(int type) -{ - switch (type) { - case SHARPSL_STATUS_ACIN: - return !gpio_get_value(SPITZ_GPIO_AC_IN); - case SHARPSL_STATUS_LOCK: - return gpio_get_value(sharpsl_pm.machinfo->gpio_batlock); - case SHARPSL_STATUS_CHRGFULL: - return gpio_get_value(sharpsl_pm.machinfo->gpio_batfull); - case SHARPSL_STATUS_FATAL: - return gpio_get_value(sharpsl_pm.machinfo->gpio_fatal); - case SHARPSL_ACIN_VOLT: - return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT); - case SHARPSL_BATT_TEMP: - return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP); - case SHARPSL_BATT_VOLT: - default: - return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT); - } -} - -struct sharpsl_charger_machinfo spitz_pm_machinfo = { - .init = spitz_charger_init, - .exit = NULL, - .gpio_batlock = SPITZ_GPIO_BAT_COVER, - .gpio_acin = SPITZ_GPIO_AC_IN, - .gpio_batfull = SPITZ_GPIO_CHRG_FULL, - .batfull_irq = 1, - .gpio_fatal = SPITZ_GPIO_FATAL_BAT, - .discharge = spitz_discharge, - .discharge1 = spitz_discharge1, - .charge = spitz_charge, - .measure_temp = spitz_measure_temp, - .presuspend = spitz_presuspend, - .postsuspend = spitz_postsuspend, - .read_devdata = spitzpm_read_devdata, - .charger_wakeup = spitz_charger_wakeup, - .should_wakeup = spitz_should_wakeup, -#if defined(CONFIG_LCD_CORGI) - .backlight_limit = corgi_lcd_limit_intensity, -#endif - .charge_on_volt = SHARPSL_CHARGE_ON_VOLT, - .charge_on_temp = SHARPSL_CHARGE_ON_TEMP, - .charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH, - .charge_acin_low = SHARPSL_CHARGE_ON_ACIN_LOW, - .fatal_acin_volt = SHARPSL_FATAL_ACIN_VOLT, - .fatal_noacin_volt= SHARPSL_FATAL_NOACIN_VOLT, - .bat_levels = 40, - .bat_levels_noac = sharpsl_battery_levels_noac, - .bat_levels_acin = sharpsl_battery_levels_acin, - .status_high_acin = 188, - .status_low_acin = 178, - .status_high_noac = 185, - .status_low_noac = 175, -}; - -static struct platform_device *spitzpm_device; - -static int __devinit spitzpm_init(void) -{ - int ret; - - if (!machine_is_spitz() && !machine_is_akita() - && !machine_is_borzoi()) - return -ENODEV; - - spitzpm_device = platform_device_alloc("sharpsl-pm", -1); - if (!spitzpm_device) - return -ENOMEM; - - spitzpm_device->dev.platform_data = &spitz_pm_machinfo; - ret = platform_device_add(spitzpm_device); - - if (ret) - platform_device_put(spitzpm_device); - - return ret; -} - -static void spitzpm_exit(void) -{ - platform_device_unregister(spitzpm_device); -} - -module_init(spitzpm_init); -module_exit(spitzpm_exit); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/standby.S b/ANDROID_3.4.5/arch/arm/mach-pxa/standby.S deleted file mode 100644 index 29f5f5c1..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/standby.S +++ /dev/null @@ -1,114 +0,0 @@ -/* - * PXA27x standby mode - * - * Author: David Burrage - * - * 2005 (c) MontaVista Software, Inc. This file is licensed under - * the terms of the GNU General Public License version 2. This program - * is licensed "as is" without any warranty of any kind, whether express - * or implied. - */ - -#include <linux/linkage.h> -#include <asm/assembler.h> -#include <mach/hardware.h> - -#include <mach/pxa2xx-regs.h> - - .text - -#ifdef CONFIG_PXA27x -ENTRY(pxa_cpu_standby) - ldr r0, =PSSR - mov r1, #(PSSR_PH | PSSR_STS) - mov r2, #PWRMODE_STANDBY - mov r3, #UNCACHED_PHYS_0 @ Read mem context in. - ldr ip, [r3] - b 1f - - .align 5 -1: mcr p14, 0, r2, c7, c0, 0 @ put the system into Standby - str r1, [r0] @ make sure PSSR_PH/STS are clear - mov pc, lr - -#endif - -#ifdef CONFIG_PXA3xx - -#define PXA3_MDCNFG 0x0000 -#define PXA3_MDCNFG_DMCEN (1 << 30) -#define PXA3_DDR_HCAL 0x0060 -#define PXA3_DDR_HCAL_HCRNG 0x1f -#define PXA3_DDR_HCAL_HCPROG (1 << 28) -#define PXA3_DDR_HCAL_HCEN (1 << 31) -#define PXA3_DMCIER 0x0070 -#define PXA3_DMCIER_EDLP (1 << 29) -#define PXA3_DMCISR 0x0078 -#define PXA3_RCOMP 0x0100 -#define PXA3_RCOMP_SWEVAL (1 << 31) - -ENTRY(pm_enter_standby_start) - mov r1, #0xf6000000 @ DMEMC_REG_BASE (PXA3_MDCNFG) - add r1, r1, #0x00100000 - - /* - * Preload the TLB entry for accessing the dynamic memory - * controller registers. Note that page table lookups will - * fail until the dynamic memory controller has been - * reinitialised - and that includes MMU page table walks. - * This also means that only the dynamic memory controller - * can be reliably accessed in the code following standby. - */ - ldr r2, [r1] @ Dummy read PXA3_MDCNFG - - mcr p14, 0, r0, c7, c0, 0 - .rept 8 - nop - .endr - - ldr r0, [r1, #PXA3_DDR_HCAL] @ Clear (and wait for) HCEN - bic r0, r0, #PXA3_DDR_HCAL_HCEN - str r0, [r1, #PXA3_DDR_HCAL] -1: ldr r0, [r1, #PXA3_DDR_HCAL] - tst r0, #PXA3_DDR_HCAL_HCEN - bne 1b - - ldr r0, [r1, #PXA3_RCOMP] @ Initiate RCOMP - orr r0, r0, #PXA3_RCOMP_SWEVAL - str r0, [r1, #PXA3_RCOMP] - - mov r0, #~0 @ Clear interrupts - str r0, [r1, #PXA3_DMCISR] - - ldr r0, [r1, #PXA3_DMCIER] @ set DMIER[EDLP] - orr r0, r0, #PXA3_DMCIER_EDLP - str r0, [r1, #PXA3_DMCIER] - - ldr r0, [r1, #PXA3_DDR_HCAL] @ clear HCRNG, set HCPROG, HCEN - bic r0, r0, #PXA3_DDR_HCAL_HCRNG - orr r0, r0, #PXA3_DDR_HCAL_HCEN | PXA3_DDR_HCAL_HCPROG - str r0, [r1, #PXA3_DDR_HCAL] - -1: ldr r0, [r1, #PXA3_DMCISR] - tst r0, #PXA3_DMCIER_EDLP - beq 1b - - ldr r0, [r1, #PXA3_MDCNFG] @ set PXA3_MDCNFG[DMCEN] - orr r0, r0, #PXA3_MDCNFG_DMCEN - str r0, [r1, #PXA3_MDCNFG] -1: ldr r0, [r1, #PXA3_MDCNFG] - tst r0, #PXA3_MDCNFG_DMCEN - beq 1b - - ldr r0, [r1, #PXA3_DDR_HCAL] @ set PXA3_DDR_HCAL[HCRNG] - orr r0, r0, #2 @ HCRNG - str r0, [r1, #PXA3_DDR_HCAL] - - ldr r0, [r1, #PXA3_DMCIER] @ Clear the interrupt - bic r0, r0, #0x20000000 - str r0, [r1, #PXA3_DMCIER] - - mov pc, lr -ENTRY(pm_enter_standby_end) - -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/stargate2.c b/ANDROID_3.4.5/arch/arm/mach-pxa/stargate2.c deleted file mode 100644 index 4cd645e2..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/stargate2.c +++ /dev/null @@ -1,1030 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/stargate2.c - * - * Author: Ed C. Epp - * Created: Nov 05, 2002 - * Copyright: Intel Corp. - * - * Modified 2009: Jonathan Cameron <jic23@cam.ac.uk> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/device.h> -#include <linux/interrupt.h> -#include <linux/sched.h> -#include <linux/bitops.h> -#include <linux/fb.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/regulator/machine.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/plat-ram.h> -#include <linux/mtd/partitions.h> - -#include <linux/i2c/pxa-i2c.h> -#include <linux/i2c/pcf857x.h> -#include <linux/i2c/at24.h> -#include <linux/smc91x.h> -#include <linux/gpio.h> -#include <linux/leds.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <asm/irq.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa27x.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/pxa27x-udc.h> -#include <mach/smemc.h> - -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/mfd/da903x.h> -#include <linux/sht15.h> - -#include "devices.h" -#include "generic.h" - -#define STARGATE_NR_IRQS (IRQ_BOARD_START + 8) - -/* Bluetooth */ -#define SG2_BT_RESET 81 - -/* SD */ -#define SG2_GPIO_nSD_DETECT 90 -#define SG2_SD_POWER_ENABLE 89 - -static unsigned long sg2_im2_unified_pin_config[] __initdata = { - /* Device Identification for wakeup*/ - GPIO102_GPIO, - /* DA9030 */ - GPIO1_GPIO, - - /* MMC */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - - /* 802.15.4 radio - driver out of mainline */ - GPIO22_GPIO, /* CC_RSTN */ - GPIO114_GPIO, /* CC_FIFO */ - GPIO116_GPIO, /* CC_CCA */ - GPIO0_GPIO, /* CC_FIFOP */ - GPIO16_GPIO, /* CCSFD */ - GPIO115_GPIO, /* Power enable */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* SSP 3 - 802.15.4 radio */ - GPIO39_GPIO, /* Chip Select */ - GPIO34_SSP3_SCLK, - GPIO35_SSP3_TXD, - GPIO41_SSP3_RXD, - - /* SSP 2 to daughter boards */ - GPIO11_SSP2_RXD, - GPIO38_SSP2_TXD, - GPIO36_SSP2_SCLK, - GPIO37_GPIO, /* chip select */ - - /* SSP 1 - to daughter boards */ - GPIO24_GPIO, /* Chip Select */ - GPIO23_SSP1_SCLK, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - - /* BTUART Basic Connector*/ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* STUART - IM2 via debug board not sure on SG2*/ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* Basic sensor board */ - GPIO96_GPIO, /* accelerometer interrupt */ - GPIO99_GPIO, /* ADC interrupt */ - - /* SHT15 */ - GPIO100_GPIO, - GPIO98_GPIO, - - /* Basic sensor board */ - GPIO96_GPIO, /* accelerometer interrupt */ - GPIO99_GPIO, /* ADC interrupt */ - - /* Connector pins specified as gpios */ - GPIO94_GPIO, /* large basic connector pin 14 */ - GPIO10_GPIO, /* large basic connector pin 23 */ -}; - -static struct sht15_platform_data platform_data_sht15 = { - .gpio_data = 100, - .gpio_sck = 98, -}; - -static struct platform_device sht15 = { - .name = "sht15", - .id = -1, - .dev = { - .platform_data = &platform_data_sht15, - }, -}; - -static struct regulator_consumer_supply stargate2_sensor_3_con[] = { - { - .dev_name = "sht15", - .supply = "vcc", - }, -}; - -enum stargate2_ldos{ - vcc_vref, - vcc_cc2420, - /* a mote connector? */ - vcc_mica, - /* the CSR bluecore chip */ - vcc_bt, - /* The two voltages available to sensor boards */ - vcc_sensor_1_8, - vcc_sensor_3, - /* directly connected to the pxa27x */ - vcc_sram_ext, - vcc_pxa_pll, - vcc_pxa_usim, /* Reference voltage for certain gpios */ - vcc_pxa_mem, - vcc_pxa_flash, - vcc_pxa_core, /*Dc-Dc buck not yet supported */ - vcc_lcd, - vcc_bb, - vcc_bbio, /*not sure!*/ - vcc_io, /* cc2420 802.15.4 radio and pxa vcc_io ?*/ -}; - -/* The values of the various regulator constraints are obviously dependent - * on exactly what is wired to each ldo. Unfortunately this information is - * not generally available. More information has been requested from Xbow. - */ -static struct regulator_init_data stargate2_ldo_init_data[] = { - [vcc_bbio] = { - .constraints = { /* board default 1.8V */ - .name = "vcc_bbio", - .min_uV = 1800000, - .max_uV = 1800000, - }, - }, - [vcc_bb] = { - .constraints = { /* board default 2.8V */ - .name = "vcc_bb", - .min_uV = 2700000, - .max_uV = 3000000, - }, - }, - [vcc_pxa_flash] = { - .constraints = {/* default is 1.8V */ - .name = "vcc_pxa_flash", - .min_uV = 1800000, - .max_uV = 1800000, - }, - }, - [vcc_cc2420] = { /* also vcc_io */ - .constraints = { - /* board default is 2.8V */ - .name = "vcc_cc2420", - .min_uV = 2700000, - .max_uV = 3300000, - }, - }, - [vcc_vref] = { /* Reference for what? */ - .constraints = { /* default 1.8V */ - .name = "vcc_vref", - .min_uV = 1800000, - .max_uV = 1800000, - }, - }, - [vcc_sram_ext] = { - .constraints = { /* default 2.8V */ - .name = "vcc_sram_ext", - .min_uV = 2800000, - .max_uV = 2800000, - }, - }, - [vcc_mica] = { - .constraints = { /* default 2.8V */ - .name = "vcc_mica", - .min_uV = 2800000, - .max_uV = 2800000, - }, - }, - [vcc_bt] = { - .constraints = { /* default 2.8V */ - .name = "vcc_bt", - .min_uV = 2800000, - .max_uV = 2800000, - }, - }, - [vcc_lcd] = { - .constraints = { /* default 2.8V */ - .name = "vcc_lcd", - .min_uV = 2700000, - .max_uV = 3300000, - }, - }, - [vcc_io] = { /* Same or higher than everything - * bar vccbat and vccusb */ - .constraints = { /* default 2.8V */ - .name = "vcc_io", - .min_uV = 2692000, - .max_uV = 3300000, - }, - }, - [vcc_sensor_1_8] = { - .constraints = { /* default 1.8V */ - .name = "vcc_sensor_1_8", - .min_uV = 1800000, - .max_uV = 1800000, - }, - }, - [vcc_sensor_3] = { /* curiously default 2.8V */ - .constraints = { - .name = "vcc_sensor_3", - .min_uV = 2800000, - .max_uV = 3000000, - }, - .num_consumer_supplies = ARRAY_SIZE(stargate2_sensor_3_con), - .consumer_supplies = stargate2_sensor_3_con, - }, - [vcc_pxa_pll] = { /* 1.17V - 1.43V, default 1.3V*/ - .constraints = { - .name = "vcc_pxa_pll", - .min_uV = 1170000, - .max_uV = 1430000, - }, - }, - [vcc_pxa_usim] = { - .constraints = { /* default 1.8V */ - .name = "vcc_pxa_usim", - .min_uV = 1710000, - .max_uV = 2160000, - }, - }, - [vcc_pxa_mem] = { - .constraints = { /* default 1.8V */ - .name = "vcc_pxa_mem", - .min_uV = 1800000, - .max_uV = 1800000, - }, - }, -}; - -static struct mtd_partition stargate2flash_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = 0, - }, { - .name = "Kernel", - .size = 0x00200000, - .offset = 0x00040000, - .mask_flags = 0 - }, { - .name = "Filesystem", - .size = 0x01DC0000, - .offset = 0x00240000, - .mask_flags = 0 - }, -}; - -static struct resource flash_resources = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct flash_platform_data stargate2_flash_data = { - .map_name = "cfi_probe", - .parts = stargate2flash_partitions, - .nr_parts = ARRAY_SIZE(stargate2flash_partitions), - .name = "PXA27xOnChipROM", - .width = 2, -}; - -static struct platform_device stargate2_flash_device = { - .name = "pxa2xx-flash", - .id = 0, - .dev = { - .platform_data = &stargate2_flash_data, - }, - .resource = &flash_resources, - .num_resources = 1, -}; - -static struct pxa2xx_spi_master pxa_ssp_master_0_info = { - .num_chipselect = 1, -}; - -static struct pxa2xx_spi_master pxa_ssp_master_1_info = { - .num_chipselect = 1, -}; - -static struct pxa2xx_spi_master pxa_ssp_master_2_info = { - .num_chipselect = 1, -}; - -/* An upcoming kernel change will scrap SFRM usage so these - * drivers have been moved to use gpio's via cs_control */ -static struct pxa2xx_spi_chip staccel_chip_info = { - .tx_threshold = 8, - .rx_threshold = 8, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = 24, -}; - -static struct pxa2xx_spi_chip cc2420_info = { - .tx_threshold = 8, - .rx_threshold = 8, - .dma_burst_size = 8, - .timeout = 235, - .gpio_cs = 39, -}; - -static struct spi_board_info spi_board_info[] __initdata = { - { - .modalias = "lis3l02dq", - .max_speed_hz = 8000000,/* 8MHz max spi frequency at 3V */ - .bus_num = 1, - .chip_select = 0, - .controller_data = &staccel_chip_info, - .irq = PXA_GPIO_TO_IRQ(96), - }, { - .modalias = "cc2420", - .max_speed_hz = 6500000, - .bus_num = 3, - .chip_select = 0, - .controller_data = &cc2420_info, - }, -}; - -static void sg2_udc_command(int cmd) -{ - switch (cmd) { - case PXA2XX_UDC_CMD_CONNECT: - UP2OCR |= UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; - break; - case PXA2XX_UDC_CMD_DISCONNECT: - UP2OCR &= ~(UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE); - break; - } -} - -static struct i2c_pxa_platform_data i2c_pwr_pdata = { - .fast_mode = 1, -}; - -static struct i2c_pxa_platform_data i2c_pdata = { - .fast_mode = 1, -}; - -static void __init imote2_stargate2_init(void) -{ - - pxa2xx_mfp_config(ARRAY_AND_SIZE(sg2_im2_unified_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info); - pxa2xx_set_spi_info(2, &pxa_ssp_master_1_info); - pxa2xx_set_spi_info(3, &pxa_ssp_master_2_info); - spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); - - - pxa27x_set_i2c_power_info(&i2c_pwr_pdata); - pxa_set_i2c_info(&i2c_pdata); -} - -#ifdef CONFIG_MACH_INTELMOTE2 -/* As the the imote2 doesn't currently have a conventional SD slot - * there is no option to hotplug cards, making all this rather simple - */ -static int imote2_mci_get_ro(struct device *dev) -{ - return 0; -} - -/* Rather simple case as hotplugging not possible */ -static struct pxamci_platform_data imote2_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* default anyway */ - .get_ro = imote2_mci_get_ro, - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -static struct gpio_led imote2_led_pins[] = { - { - .name = "imote2:red", - .gpio = 103, - .active_low = 1, - }, { - .name = "imote2:green", - .gpio = 104, - .active_low = 1, - }, { - .name = "imote2:blue", - .gpio = 105, - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data imote2_led_data = { - .num_leds = ARRAY_SIZE(imote2_led_pins), - .leds = imote2_led_pins, -}; - -static struct platform_device imote2_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &imote2_led_data, - }, -}; - -static struct da903x_subdev_info imote2_da9030_subdevs[] = { - { - .name = "da903x-regulator", - .id = DA9030_ID_LDO2, - .platform_data = &stargate2_ldo_init_data[vcc_bbio], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO3, - .platform_data = &stargate2_ldo_init_data[vcc_bb], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO4, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_flash], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO5, - .platform_data = &stargate2_ldo_init_data[vcc_cc2420], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO6, - .platform_data = &stargate2_ldo_init_data[vcc_vref], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO7, - .platform_data = &stargate2_ldo_init_data[vcc_sram_ext], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO8, - .platform_data = &stargate2_ldo_init_data[vcc_mica], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO9, - .platform_data = &stargate2_ldo_init_data[vcc_bt], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO10, - .platform_data = &stargate2_ldo_init_data[vcc_sensor_1_8], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO11, - .platform_data = &stargate2_ldo_init_data[vcc_sensor_3], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO12, - .platform_data = &stargate2_ldo_init_data[vcc_lcd], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO15, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_pll], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO17, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_usim], - }, { - .name = "da903x-regulator", /*pxa vcc i/o and cc2420 vcc i/o */ - .id = DA9030_ID_LDO18, - .platform_data = &stargate2_ldo_init_data[vcc_io], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO19, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_mem], - }, -}; - -static struct da903x_platform_data imote2_da9030_pdata = { - .num_subdevs = ARRAY_SIZE(imote2_da9030_subdevs), - .subdevs = imote2_da9030_subdevs, -}; - -static struct i2c_board_info __initdata imote2_pwr_i2c_board_info[] = { - { - .type = "da9030", - .addr = 0x49, - .platform_data = &imote2_da9030_pdata, - .irq = PXA_GPIO_TO_IRQ(1), - }, -}; - -static struct i2c_board_info __initdata imote2_i2c_board_info[] = { - { /* UCAM sensor board */ - .type = "max1239", - .addr = 0x35, - }, { /* ITS400 Sensor board only */ - .type = "max1363", - .addr = 0x34, - /* Through a nand gate - Also beware, on V2 sensor board the - * pull up resistors are missing. - */ - .irq = PXA_GPIO_TO_IRQ(99), - }, { /* ITS400 Sensor board only */ - .type = "tsl2561", - .addr = 0x49, - /* Through a nand gate - Also beware, on V2 sensor board the - * pull up resistors are missing. - */ - .irq = PXA_GPIO_TO_IRQ(99), - }, { /* ITS400 Sensor board only */ - .type = "tmp175", - .addr = 0x4A, - .irq = PXA_GPIO_TO_IRQ(96), - }, { /* IMB400 Multimedia board */ - .type = "wm8940", - .addr = 0x1A, - }, -}; - -static unsigned long imote2_pin_config[] __initdata = { - - /* Button */ - GPIO91_GPIO, - - /* LEDS */ - GPIO103_GPIO, /* red led */ - GPIO104_GPIO, /* green led */ - GPIO105_GPIO, /* blue led */ -}; - -static struct pxa2xx_udc_mach_info imote2_udc_info __initdata = { - .udc_command = sg2_udc_command, -}; - -static struct platform_device imote2_audio_device = { - .name = "imote2-audio", - .id = -1, -}; - -static struct platform_device *imote2_devices[] = { - &stargate2_flash_device, - &imote2_leds, - &sht15, - &imote2_audio_device, -}; - -static void __init imote2_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(imote2_pin_config)); - - imote2_stargate2_init(); - - platform_add_devices(imote2_devices, ARRAY_SIZE(imote2_devices)); - - i2c_register_board_info(0, imote2_i2c_board_info, - ARRAY_SIZE(imote2_i2c_board_info)); - i2c_register_board_info(1, imote2_pwr_i2c_board_info, - ARRAY_SIZE(imote2_pwr_i2c_board_info)); - - pxa_set_mci_info(&imote2_mci_platform_data); - pxa_set_udc_info(&imote2_udc_info); -} -#endif - -#ifdef CONFIG_MACH_STARGATE2 - -static unsigned long stargate2_pin_config[] __initdata = { - - GPIO15_nCS_1, /* SRAM */ - /* SMC91x */ - GPIO80_nCS_4, - GPIO40_GPIO, /*cable detect?*/ - - /* Button */ - GPIO91_GPIO | WAKEUP_ON_LEVEL_HIGH, - - /* Compact Flash */ - GPIO79_PSKTSEL, - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO120_GPIO, /* Buff ctrl */ - GPIO108_GPIO, /* Power ctrl */ - GPIO82_GPIO, /* Reset */ - GPIO53_GPIO, /* SG2_S0_GPIO_DETECT */ - - /* MMC not shared with imote2 */ - GPIO90_GPIO, /* nSD detect */ - GPIO89_GPIO, /* SD_POWER_ENABLE */ - - /* Bluetooth */ - GPIO81_GPIO, /* reset */ -}; - -static struct resource smc91x_resources[] = { - [0] = { - .name = "smc91x-regs", - .start = (PXA_CS4_PHYS + 0x300), - .end = (PXA_CS4_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(40), - .end = PXA_GPIO_TO_IRQ(40), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct smc91x_platdata stargate2_smc91x_info = { - .flags = SMC91X_USE_8BIT | SMC91X_USE_16BIT | SMC91X_USE_32BIT - | SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = -1, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &stargate2_smc91x_info, - }, -}; - - -/* - * The card detect interrupt isn't debounced so we delay it by 250ms - * to give the card a chance to fully insert / eject. - */ -static int stargate2_mci_init(struct device *dev, - irq_handler_t stargate2_detect_int, - void *data) -{ - int err; - - err = gpio_request(SG2_SD_POWER_ENABLE, "SG2_sd_power_enable"); - if (err) { - printk(KERN_ERR "Can't get the gpio for SD power control"); - goto return_err; - } - gpio_direction_output(SG2_SD_POWER_ENABLE, 0); - - err = gpio_request(SG2_GPIO_nSD_DETECT, "SG2_sd_detect"); - if (err) { - printk(KERN_ERR "Can't get the sd detect gpio"); - goto free_power_en; - } - gpio_direction_input(SG2_GPIO_nSD_DETECT); - - err = request_irq(PXA_GPIO_TO_IRQ(SG2_GPIO_nSD_DETECT), - stargate2_detect_int, - IRQ_TYPE_EDGE_BOTH, - "MMC card detect", - data); - if (err) { - printk(KERN_ERR "can't request MMC card detect IRQ\n"); - goto free_nsd_detect; - } - return 0; - - free_nsd_detect: - gpio_free(SG2_GPIO_nSD_DETECT); - free_power_en: - gpio_free(SG2_SD_POWER_ENABLE); - return_err: - return err; -} - -/** - * stargate2_mci_setpower() - set state of mmc power supply - * - * Very simple control. Either it is on or off and is controlled by - * a gpio pin */ -static void stargate2_mci_setpower(struct device *dev, unsigned int vdd) -{ - gpio_set_value(SG2_SD_POWER_ENABLE, !!vdd); -} - -static void stargate2_mci_exit(struct device *dev, void *data) -{ - free_irq(PXA_GPIO_TO_IRQ(SG2_GPIO_nSD_DETECT), data); - gpio_free(SG2_SD_POWER_ENABLE); - gpio_free(SG2_GPIO_nSD_DETECT); -} - -static struct pxamci_platform_data stargate2_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .init = stargate2_mci_init, - .setpower = stargate2_mci_setpower, - .exit = stargate2_mci_exit, -}; - - -/* - * SRAM - The Stargate 2 has 32MB of SRAM. - * - * Here it is made available as an MTD. This will then - * typically have a cifs filesystem created on it to provide - * fast temporary storage. - */ -static struct resource sram_resources = { - .start = PXA_CS1_PHYS, - .end = PXA_CS1_PHYS + SZ_32M-1, - .flags = IORESOURCE_MEM, -}; - -static struct platdata_mtd_ram stargate2_sram_pdata = { - .mapname = "Stargate2 SRAM", - .bankwidth = 2, -}; - -static struct platform_device stargate2_sram = { - .name = "mtd-ram", - .id = 0, - .resource = &sram_resources, - .num_resources = 1, - .dev = { - .platform_data = &stargate2_sram_pdata, - }, -}; - -static struct pcf857x_platform_data platform_data_pcf857x = { - .gpio_base = 128, - .n_latch = 0, - .setup = NULL, - .teardown = NULL, - .context = NULL, -}; - -static struct at24_platform_data pca9500_eeprom_pdata = { - .byte_len = 256, - .page_size = 4, -}; - -/** - * stargate2_reset_bluetooth() reset the bluecore to ensure consistent state - **/ -static int stargate2_reset_bluetooth(void) -{ - int err; - err = gpio_request(SG2_BT_RESET, "SG2_BT_RESET"); - if (err) { - printk(KERN_ERR "Could not get gpio for bluetooth reset\n"); - return err; - } - gpio_direction_output(SG2_BT_RESET, 1); - mdelay(5); - /* now reset it - 5 msec minimum */ - gpio_set_value(SG2_BT_RESET, 0); - mdelay(10); - gpio_set_value(SG2_BT_RESET, 1); - gpio_free(SG2_BT_RESET); - return 0; -} - -static struct led_info stargate2_leds[] = { - { - .name = "sg2:red", - .flags = DA9030_LED_RATE_ON, - }, { - .name = "sg2:blue", - .flags = DA9030_LED_RATE_ON, - }, { - .name = "sg2:green", - .flags = DA9030_LED_RATE_ON, - }, -}; - -static struct da903x_subdev_info stargate2_da9030_subdevs[] = { - { - .name = "da903x-led", - .id = DA9030_ID_LED_2, - .platform_data = &stargate2_leds[0], - }, { - .name = "da903x-led", - .id = DA9030_ID_LED_3, - .platform_data = &stargate2_leds[2], - }, { - .name = "da903x-led", - .id = DA9030_ID_LED_4, - .platform_data = &stargate2_leds[1], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO2, - .platform_data = &stargate2_ldo_init_data[vcc_bbio], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO3, - .platform_data = &stargate2_ldo_init_data[vcc_bb], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO4, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_flash], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO5, - .platform_data = &stargate2_ldo_init_data[vcc_cc2420], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO6, - .platform_data = &stargate2_ldo_init_data[vcc_vref], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO7, - .platform_data = &stargate2_ldo_init_data[vcc_sram_ext], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO8, - .platform_data = &stargate2_ldo_init_data[vcc_mica], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO9, - .platform_data = &stargate2_ldo_init_data[vcc_bt], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO10, - .platform_data = &stargate2_ldo_init_data[vcc_sensor_1_8], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO11, - .platform_data = &stargate2_ldo_init_data[vcc_sensor_3], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO12, - .platform_data = &stargate2_ldo_init_data[vcc_lcd], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO15, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_pll], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO17, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_usim], - }, { - .name = "da903x-regulator", /*pxa vcc i/o and cc2420 vcc i/o */ - .id = DA9030_ID_LDO18, - .platform_data = &stargate2_ldo_init_data[vcc_io], - }, { - .name = "da903x-regulator", - .id = DA9030_ID_LDO19, - .platform_data = &stargate2_ldo_init_data[vcc_pxa_mem], - }, -}; - -static struct da903x_platform_data stargate2_da9030_pdata = { - .num_subdevs = ARRAY_SIZE(stargate2_da9030_subdevs), - .subdevs = stargate2_da9030_subdevs, -}; - -static struct i2c_board_info __initdata stargate2_pwr_i2c_board_info[] = { - { - .type = "da9030", - .addr = 0x49, - .platform_data = &stargate2_da9030_pdata, - .irq = PXA_GPIO_TO_IRQ(1), - }, -}; - -static struct i2c_board_info __initdata stargate2_i2c_board_info[] = { - /* Techically this a pca9500 - but it's compatible with the 8574 - * for gpio expansion and the 24c02 for eeprom access. - */ - { - .type = "pcf8574", - .addr = 0x27, - .platform_data = &platform_data_pcf857x, - }, { - .type = "24c02", - .addr = 0x57, - .platform_data = &pca9500_eeprom_pdata, - }, { - .type = "max1238", - .addr = 0x35, - }, { /* ITS400 Sensor board only */ - .type = "max1363", - .addr = 0x34, - /* Through a nand gate - Also beware, on V2 sensor board the - * pull up resistors are missing. - */ - .irq = PXA_GPIO_TO_IRQ(99), - }, { /* ITS400 Sensor board only */ - .type = "tsl2561", - .addr = 0x49, - /* Through a nand gate - Also beware, on V2 sensor board the - * pull up resistors are missing. - */ - .irq = PXA_GPIO_TO_IRQ(99), - }, { /* ITS400 Sensor board only */ - .type = "tmp175", - .addr = 0x4A, - .irq = PXA_GPIO_TO_IRQ(96), - }, -}; - -/* Board doesn't support cable detection - so always lie and say - * something is there. - */ -static int sg2_udc_detect(void) -{ - return 1; -} - -static struct pxa2xx_udc_mach_info stargate2_udc_info __initdata = { - .udc_is_connected = sg2_udc_detect, - .udc_command = sg2_udc_command, -}; - -static struct platform_device *stargate2_devices[] = { - &stargate2_flash_device, - &stargate2_sram, - &smc91x_device, - &sht15, -}; - -static void __init stargate2_init(void) -{ - /* This is probably a board specific hack as this must be set - prior to connecting the MFP stuff up. */ - __raw_writel(__raw_readl(MECR) & ~MECR_NOS, MECR); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(stargate2_pin_config)); - - imote2_stargate2_init(); - - platform_add_devices(ARRAY_AND_SIZE(stargate2_devices)); - - i2c_register_board_info(0, ARRAY_AND_SIZE(stargate2_i2c_board_info)); - i2c_register_board_info(1, stargate2_pwr_i2c_board_info, - ARRAY_SIZE(stargate2_pwr_i2c_board_info)); - - pxa_set_mci_info(&stargate2_mci_platform_data); - - pxa_set_udc_info(&stargate2_udc_info); - - stargate2_reset_bluetooth(); -} -#endif - -#ifdef CONFIG_MACH_INTELMOTE2 -MACHINE_START(INTELMOTE2, "IMOTE 2") - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = imote2_init, - .atag_offset = 0x100, - .restart = pxa_restart, -MACHINE_END -#endif - -#ifdef CONFIG_MACH_STARGATE2 -MACHINE_START(STARGATE2, "Stargate 2") - .map_io = pxa27x_map_io, - .nr_irqs = STARGATE_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = stargate2_init, - .atag_offset = 0x100, - .restart = pxa_restart, -MACHINE_END -#endif diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb.c b/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb.c deleted file mode 100644 index 736bfdc5..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb.c +++ /dev/null @@ -1,500 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/tavorevb.c - * - * Support for the Marvell PXA930 Evaluation Board - * - * Copyright (C) 2007-2008 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * publishhed by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/interrupt.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/clk.h> -#include <linux/gpio.h> -#include <linux/smc91x.h> -#include <linux/pwm_backlight.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa930.h> -#include <mach/pxafb.h> -#include <plat/pxa27x_keypad.h> - -#include "devices.h" -#include "generic.h" - -/* Tavor EVB MFP configurations */ -static mfp_cfg_t tavorevb_mfp_cfg[] __initdata = { - /* Ethernet */ - DF_nCS1_nCS3, - GPIO47_GPIO, - - /* LCD */ - GPIO23_LCD_DD0, - GPIO24_LCD_DD1, - GPIO25_LCD_DD2, - GPIO26_LCD_DD3, - GPIO27_LCD_DD4, - GPIO28_LCD_DD5, - GPIO29_LCD_DD6, - GPIO44_LCD_DD7, - GPIO21_LCD_CS, - GPIO22_LCD_CS2, - - GPIO17_LCD_FCLK_RD, - GPIO18_LCD_LCLK_A0, - GPIO19_LCD_PCLK_WR, - - /* LCD Backlight */ - GPIO43_PWM3, /* primary backlight */ - GPIO32_PWM0, /* secondary backlight */ - - /* Keypad */ - GPIO0_KP_MKIN_0, - GPIO2_KP_MKIN_1, - GPIO4_KP_MKIN_2, - GPIO6_KP_MKIN_3, - GPIO8_KP_MKIN_4, - GPIO10_KP_MKIN_5, - GPIO12_KP_MKIN_6, - GPIO1_KP_MKOUT_0, - GPIO3_KP_MKOUT_1, - GPIO5_KP_MKOUT_2, - GPIO7_KP_MKOUT_3, - GPIO9_KP_MKOUT_4, - GPIO11_KP_MKOUT_5, - GPIO13_KP_MKOUT_6, - - GPIO14_KP_DKIN_2, - GPIO15_KP_DKIN_3, -}; - -#define TAVOREVB_ETH_PHYS (0x14000000) - -static struct resource smc91x_resources[] = { - [0] = { - .start = (TAVOREVB_ETH_PHYS + 0x300), - .end = (TAVOREVB_ETH_PHYS + 0xfffff), - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO47)), - .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO47)), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct smc91x_platdata tavorevb_smc91x_info = { - .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &tavorevb_smc91x_info, - }, -}; - -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int tavorevb_matrix_key_map[] = { - /* KEY(row, col, key_code) */ - KEY(0, 4, KEY_A), KEY(0, 5, KEY_B), KEY(0, 6, KEY_C), - KEY(1, 4, KEY_E), KEY(1, 5, KEY_F), KEY(1, 6, KEY_G), - KEY(2, 4, KEY_I), KEY(2, 5, KEY_J), KEY(2, 6, KEY_K), - KEY(3, 4, KEY_M), KEY(3, 5, KEY_N), KEY(3, 6, KEY_O), - KEY(4, 5, KEY_R), KEY(4, 6, KEY_S), - KEY(5, 4, KEY_U), KEY(5, 4, KEY_V), KEY(5, 6, KEY_W), - - KEY(6, 4, KEY_Y), KEY(6, 5, KEY_Z), - - KEY(0, 3, KEY_0), KEY(2, 0, KEY_1), KEY(2, 1, KEY_2), KEY(2, 2, KEY_3), - KEY(2, 3, KEY_4), KEY(1, 0, KEY_5), KEY(1, 1, KEY_6), KEY(1, 2, KEY_7), - KEY(1, 3, KEY_8), KEY(0, 2, KEY_9), - - KEY(6, 6, KEY_SPACE), - KEY(0, 0, KEY_KPASTERISK), /* * */ - KEY(0, 1, KEY_KPDOT), /* # */ - - KEY(4, 1, KEY_UP), - KEY(4, 3, KEY_DOWN), - KEY(4, 0, KEY_LEFT), - KEY(4, 2, KEY_RIGHT), - KEY(6, 0, KEY_HOME), - KEY(3, 2, KEY_END), - KEY(6, 1, KEY_DELETE), - KEY(5, 2, KEY_BACK), - KEY(6, 3, KEY_CAPSLOCK), /* KEY_LEFTSHIFT), */ - - KEY(4, 4, KEY_ENTER), /* scroll push */ - KEY(6, 2, KEY_ENTER), /* keypad action */ - - KEY(3, 1, KEY_SEND), - KEY(5, 3, KEY_RECORD), - KEY(5, 0, KEY_VOLUMEUP), - KEY(5, 1, KEY_VOLUMEDOWN), - - KEY(3, 0, KEY_F22), /* soft1 */ - KEY(3, 3, KEY_F23), /* soft2 */ -}; - -static struct pxa27x_keypad_platform_data tavorevb_keypad_info = { - .matrix_key_rows = 7, - .matrix_key_cols = 7, - .matrix_key_map = tavorevb_matrix_key_map, - .matrix_key_map_size = ARRAY_SIZE(tavorevb_matrix_key_map), - .debounce_interval = 30, -}; - -static void __init tavorevb_init_keypad(void) -{ - pxa_set_keypad_info(&tavorevb_keypad_info); -} -#else -static inline void tavorevb_init_keypad(void) {} -#endif /* CONFIG_KEYBOARD_PXA27x || CONFIG_KEYBOARD_PXA27x_MODULE */ - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct platform_pwm_backlight_data tavorevb_backlight_data[] = { - [0] = { - /* primary backlight */ - .pwm_id = 2, - .max_brightness = 100, - .dft_brightness = 100, - .pwm_period_ns = 100000, - }, - [1] = { - /* secondary backlight */ - .pwm_id = 0, - .max_brightness = 100, - .dft_brightness = 100, - .pwm_period_ns = 100000, - }, -}; - -static struct platform_device tavorevb_backlight_devices[] = { - [0] = { - .name = "pwm-backlight", - .id = 0, - .dev = { - .platform_data = &tavorevb_backlight_data[0], - }, - }, - [1] = { - .name = "pwm-backlight", - .id = 1, - .dev = { - .platform_data = &tavorevb_backlight_data[1], - }, - }, -}; - -static uint16_t panel_init[] = { - /* DSTB OUT */ - SMART_CMD(0x00), - SMART_CMD_NOOP, - SMART_DELAY(1), - - SMART_CMD(0x00), - SMART_CMD_NOOP, - SMART_DELAY(1), - - SMART_CMD(0x00), - SMART_CMD_NOOP, - SMART_DELAY(1), - - /* STB OUT */ - SMART_CMD(0x00), - SMART_CMD(0x1D), - SMART_DAT(0x00), - SMART_DAT(0x05), - SMART_DELAY(1), - - /* P-ON Init sequence */ - SMART_CMD(0x00), /* OSC ON */ - SMART_CMD(0x00), - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_CMD(0x00), - SMART_CMD(0x01), /* SOURCE DRIVER SHIFT DIRECTION and display RAM setting */ - SMART_DAT(0x01), - SMART_DAT(0x27), - SMART_CMD(0x00), - SMART_CMD(0x02), /* LINE INV */ - SMART_DAT(0x02), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x03), /* IF mode(1) */ - SMART_DAT(0x01), /* 8bit smart mode(8-8),high speed write mode */ - SMART_DAT(0x30), - SMART_CMD(0x07), - SMART_CMD(0x00), /* RAM Write Mode */ - SMART_DAT(0x00), - SMART_DAT(0x03), - SMART_CMD(0x00), - - /* DISPLAY Setting, 262K, fixed(NO scroll), no split screen */ - SMART_CMD(0x07), - SMART_DAT(0x40), /* 16/18/19 BPP */ - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x08), /* BP, FP Seting, BP=2H, FP=3H */ - SMART_DAT(0x03), - SMART_DAT(0x02), - SMART_CMD(0x00), - SMART_CMD(0x0C), /* IF mode(2), using internal clock & MPU */ - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x0D), /* Frame setting, 1Min. Frequence, 16CLK */ - SMART_DAT(0x00), - SMART_DAT(0x10), - SMART_CMD(0x00), - SMART_CMD(0x12), /* Timing(1),ASW W=4CLK, ASW ST=1CLK */ - SMART_DAT(0x03), - SMART_DAT(0x02), - SMART_CMD(0x00), - SMART_CMD(0x13), /* Timing(2),OEV ST=0.5CLK, OEV ED=1CLK */ - SMART_DAT(0x01), - SMART_DAT(0x02), - SMART_CMD(0x00), - SMART_CMD(0x14), /* Timing(3), ASW HOLD=0.5CLK */ - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x15), /* Timing(4), CKV ST=0CLK, CKV ED=1CLK */ - SMART_DAT(0x20), - SMART_DAT(0x00), - SMART_CMD(0x00), - SMART_CMD(0x1C), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x03), - SMART_CMD(0x00), - SMART_DAT(0x04), - SMART_DAT(0x03), - SMART_CMD(0x03), - SMART_CMD(0x01), - SMART_DAT(0x03), - SMART_DAT(0x04), - SMART_CMD(0x03), - SMART_CMD(0x02), - SMART_DAT(0x04), - SMART_DAT(0x03), - SMART_CMD(0x03), - SMART_CMD(0x03), - SMART_DAT(0x03), - SMART_DAT(0x03), - SMART_CMD(0x03), - SMART_CMD(0x04), - SMART_DAT(0x01), - SMART_DAT(0x01), - SMART_CMD(0x03), - SMART_CMD(0x05), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x04), - SMART_CMD(0x02), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x04), - SMART_CMD(0x03), - SMART_DAT(0x01), - SMART_DAT(0x3F), - SMART_DELAY(0), - - /* DISP RAM setting: 240*320 */ - SMART_CMD(0x04), /* HADDR, START 0 */ - SMART_CMD(0x06), - SMART_DAT(0x00), - SMART_DAT(0x00), /* x1,3 */ - SMART_CMD(0x04), /* HADDR, END 4 */ - SMART_CMD(0x07), - SMART_DAT(0x00), - SMART_DAT(0xEF), /* x2, 7 */ - SMART_CMD(0x04), /* VADDR, START 8 */ - SMART_CMD(0x08), - SMART_DAT(0x00), /* y1, 10 */ - SMART_DAT(0x00), /* y1, 11 */ - SMART_CMD(0x04), /* VADDR, END 12 */ - SMART_CMD(0x09), - SMART_DAT(0x01), /* y2, 14 */ - SMART_DAT(0x3F), /* y2, 15 */ - SMART_CMD(0x02), /* RAM ADDR SETTING 16 */ - SMART_CMD(0x00), - SMART_DAT(0x00), - SMART_DAT(0x00), /* x1, 19 */ - SMART_CMD(0x02), /* RAM ADDR SETTING 20 */ - SMART_CMD(0x01), - SMART_DAT(0x00), /* y1, 22 */ - SMART_DAT(0x00), /* y1, 23 */ -}; - -static uint16_t panel_on[] = { - /* Power-IC ON */ - SMART_CMD(0x01), - SMART_CMD(0x02), - SMART_DAT(0x07), - SMART_DAT(0x7D), - SMART_CMD(0x01), - SMART_CMD(0x03), - SMART_DAT(0x00), - SMART_DAT(0x05), - SMART_CMD(0x01), - SMART_CMD(0x04), - SMART_DAT(0x00), - SMART_DAT(0x00), - SMART_CMD(0x01), - SMART_CMD(0x05), - SMART_DAT(0x00), - SMART_DAT(0x15), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xC0), - SMART_DAT(0x10), - SMART_DELAY(30), - - /* DISP ON */ - SMART_CMD(0x01), - SMART_CMD(0x01), - SMART_DAT(0x00), - SMART_DAT(0x01), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xFF), - SMART_DAT(0xFE), - SMART_DELAY(150), -}; - -static uint16_t panel_off[] = { - SMART_CMD(0x00), - SMART_CMD(0x1E), - SMART_DAT(0x00), - SMART_DAT(0x0A), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xFF), - SMART_DAT(0xEE), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xF8), - SMART_DAT(0x12), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xE8), - SMART_DAT(0x11), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0xC0), - SMART_DAT(0x11), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0x40), - SMART_DAT(0x11), - SMART_CMD(0x01), - SMART_CMD(0x00), - SMART_DAT(0x00), - SMART_DAT(0x10), -}; - -static uint16_t update_framedata[] = { - /* write ram */ - SMART_CMD(0x02), - SMART_CMD(0x02), - - /* write frame data */ - SMART_CMD_WRITE_FRAME, -}; - -static void ltm020d550_lcd_power(int on, struct fb_var_screeninfo *var) -{ - struct fb_info *info = container_of(var, struct fb_info, var); - - if (on) { - pxafb_smart_queue(info, ARRAY_AND_SIZE(panel_init)); - pxafb_smart_queue(info, ARRAY_AND_SIZE(panel_on)); - } else { - pxafb_smart_queue(info, ARRAY_AND_SIZE(panel_off)); - } - - if (pxafb_smart_flush(info)) - pr_err("%s: timed out\n", __func__); -} - -static void ltm020d550_update(struct fb_info *info) -{ - pxafb_smart_queue(info, ARRAY_AND_SIZE(update_framedata)); - pxafb_smart_flush(info); -} - -static struct pxafb_mode_info toshiba_ltm020d550_modes[] = { - [0] = { - .xres = 240, - .yres = 320, - .bpp = 16, - .a0csrd_set_hld = 30, - .a0cswr_set_hld = 30, - .wr_pulse_width = 30, - .rd_pulse_width = 170, - .op_hold_time = 30, - .cmd_inh_time = 60, - - /* L_LCLK_A0 and L_LCLK_RD active low */ - .sync = FB_SYNC_HOR_HIGH_ACT | - FB_SYNC_VERT_HIGH_ACT, - }, -}; - -static struct pxafb_mach_info tavorevb_lcd_info = { - .modes = toshiba_ltm020d550_modes, - .num_modes = 1, - .lcd_conn = LCD_SMART_PANEL_8BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = ltm020d550_lcd_power, - .smart_update = ltm020d550_update, -}; - -static void __init tavorevb_init_lcd(void) -{ - platform_device_register(&tavorevb_backlight_devices[0]); - platform_device_register(&tavorevb_backlight_devices[1]); - pxa_set_fb_info(NULL, &tavorevb_lcd_info); -} -#else -static inline void tavorevb_init_lcd(void) {} -#endif /* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */ - -static void __init tavorevb_init(void) -{ - /* initialize MFP configurations */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(tavorevb_mfp_cfg)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - platform_device_register(&smc91x_device); - - tavorevb_init_lcd(); - tavorevb_init_keypad(); -} - -MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)") - /* Maintainer: Eric Miao <eric.miao@marvell.com> */ - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = tavorevb_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb3.c b/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb3.c deleted file mode 100644 index f7d9305c..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/tavorevb3.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/tavorevb3.c - * - * Support for the Marvell EVB3 Development Platform. - * - * Copyright: (C) Copyright 2008-2010 Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * publishhed by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/gpio.h> -#include <linux/mfd/88pm860x.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa930.h> - -#include "devices.h" -#include "generic.h" - -#define TAVOREVB3_NR_IRQS (IRQ_BOARD_START + 24) - -static mfp_cfg_t evb3_mfp_cfg[] __initdata = { - /* UART */ - GPIO53_UART1_TXD, - GPIO54_UART1_RXD, - - /* PMIC */ - PMIC_INT_GPIO83, -}; - -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct pm860x_touch_pdata evb3_touch = { - .gpadc_prebias = 1, - .slot_cycle = 1, - .tsi_prebias = 6, - .pen_prebias = 16, - .pen_prechg = 2, - .res_x = 300, -}; - -static struct pm860x_backlight_pdata evb3_backlight[] = { - { - .id = PM8606_ID_BACKLIGHT, - .iset = PM8606_WLED_CURRENT(24), - .flags = PM8606_BACKLIGHT1, - }, - {}, -}; - -static struct pm860x_led_pdata evb3_led[] = { - { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_RED, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_GREEN, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED1_BLUE, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_RED, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_GREEN, - }, { - .id = PM8606_ID_LED, - .iset = PM8606_LED_CURRENT(12), - .flags = PM8606_LED2_BLUE, - }, -}; - -static struct pm860x_platform_data evb3_pm8607_info = { - .touch = &evb3_touch, - .backlight = &evb3_backlight[0], - .led = &evb3_led[0], - .companion_addr = 0x10, - .irq_mode = 0, - .irq_base = IRQ_BOARD_START, - - .i2c_port = GI2C_PORT, -}; - -static struct i2c_board_info evb3_i2c_info[] = { - { - .type = "88PM860x", - .addr = 0x34, - .platform_data = &evb3_pm8607_info, - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), - }, -}; - -static void __init evb3_init_i2c(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(evb3_i2c_info)); -} -#else -static inline void evb3_init_i2c(void) {} -#endif - -static void __init evb3_init(void) -{ - /* initialize MFP configurations */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(evb3_mfp_cfg)); - - pxa_set_ffuart_info(NULL); - - evb3_init_i2c(); -} - -MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = TAVOREVB3_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = evb3_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/time.c b/ANDROID_3.4.5/arch/arm/mach-pxa/time.c deleted file mode 100644 index 3d6c9bd9..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/time.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * arch/arm/mach-pxa/time.c - * - * PXA clocksource, clockevents, and OST interrupt handlers. - * Copyright (c) 2007 by Bill Gatliff <bgat@billgatliff.com>. - * - * Derived from Nicolas Pitre's PXA timer handler Copyright (c) 2001 - * by MontaVista Software, Inc. (Nico, your code rocks!) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/interrupt.h> -#include <linux/clockchips.h> - -#include <asm/div64.h> -#include <asm/mach/irq.h> -#include <asm/mach/time.h> -#include <asm/sched_clock.h> -#include <mach/regs-ost.h> -#include <mach/irqs.h> - -/* - * This is PXA's sched_clock implementation. This has a resolution - * of at least 308 ns and a maximum value of 208 days. - * - * The return value is guaranteed to be monotonic in that range as - * long as there is always less than 582 seconds between successive - * calls to sched_clock() which should always be the case in practice. - */ - -static u32 notrace pxa_read_sched_clock(void) -{ - return OSCR; -} - - -#define MIN_OSCR_DELTA 16 - -static irqreturn_t -pxa_ost0_interrupt(int irq, void *dev_id) -{ - struct clock_event_device *c = dev_id; - - /* Disarm the compare/match, signal the event. */ - OIER &= ~OIER_E0; - OSSR = OSSR_M0; - c->event_handler(c); - - return IRQ_HANDLED; -} - -static int -pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev) -{ - unsigned long next, oscr; - - OIER |= OIER_E0; - next = OSCR + delta; - OSMR0 = next; - oscr = OSCR; - - return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0; -} - -static void -pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev) -{ - switch (mode) { - case CLOCK_EVT_MODE_ONESHOT: - OIER &= ~OIER_E0; - OSSR = OSSR_M0; - break; - - case CLOCK_EVT_MODE_UNUSED: - case CLOCK_EVT_MODE_SHUTDOWN: - /* initializing, released, or preparing for suspend */ - OIER &= ~OIER_E0; - OSSR = OSSR_M0; - break; - - case CLOCK_EVT_MODE_RESUME: - case CLOCK_EVT_MODE_PERIODIC: - break; - } -} - -static struct clock_event_device ckevt_pxa_osmr0 = { - .name = "osmr0", - .features = CLOCK_EVT_FEAT_ONESHOT, - .rating = 200, - .set_next_event = pxa_osmr0_set_next_event, - .set_mode = pxa_osmr0_set_mode, -}; - -static struct irqaction pxa_ost0_irq = { - .name = "ost0", - .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, - .handler = pxa_ost0_interrupt, - .dev_id = &ckevt_pxa_osmr0, -}; - -static void __init pxa_timer_init(void) -{ - unsigned long clock_tick_rate = get_clock_tick_rate(); - - OIER = 0; - OSSR = OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3; - - setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate); - - clockevents_calc_mult_shift(&ckevt_pxa_osmr0, clock_tick_rate, 4); - ckevt_pxa_osmr0.max_delta_ns = - clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); - ckevt_pxa_osmr0.min_delta_ns = - clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; - ckevt_pxa_osmr0.cpumask = cpumask_of(0); - - setup_irq(IRQ_OST0, &pxa_ost0_irq); - - clocksource_mmio_init(&OSCR, "oscr0", clock_tick_rate, 200, 32, - clocksource_mmio_readl_up); - clockevents_register_device(&ckevt_pxa_osmr0); -} - -#ifdef CONFIG_PM -static unsigned long osmr[4], oier, oscr; - -static void pxa_timer_suspend(void) -{ - osmr[0] = OSMR0; - osmr[1] = OSMR1; - osmr[2] = OSMR2; - osmr[3] = OSMR3; - oier = OIER; - oscr = OSCR; -} - -static void pxa_timer_resume(void) -{ - /* - * Ensure that we have at least MIN_OSCR_DELTA between match - * register 0 and the OSCR, to guarantee that we will receive - * the one-shot timer interrupt. We adjust OSMR0 in preference - * to OSCR to guarantee that OSCR is monotonically incrementing. - */ - if (osmr[0] - oscr < MIN_OSCR_DELTA) - osmr[0] += MIN_OSCR_DELTA; - - OSMR0 = osmr[0]; - OSMR1 = osmr[1]; - OSMR2 = osmr[2]; - OSMR3 = osmr[3]; - OIER = oier; - OSCR = oscr; -} -#else -#define pxa_timer_suspend NULL -#define pxa_timer_resume NULL -#endif - -struct sys_timer pxa_timer = { - .init = pxa_timer_init, - .suspend = pxa_timer_suspend, - .resume = pxa_timer_resume, -}; diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/tosa-bt.c b/ANDROID_3.4.5/arch/arm/mach-pxa/tosa-bt.c deleted file mode 100644 index b9b1e5c2..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/tosa-bt.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Bluetooth built-in chip control - * - * Copyright (c) 2008 Dmitry Baryshkov - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> -#include <linux/delay.h> -#include <linux/rfkill.h> - -#include <mach/tosa_bt.h> - -static void tosa_bt_on(struct tosa_bt_data *data) -{ - gpio_set_value(data->gpio_reset, 0); - gpio_set_value(data->gpio_pwr, 1); - gpio_set_value(data->gpio_reset, 1); - mdelay(20); - gpio_set_value(data->gpio_reset, 0); -} - -static void tosa_bt_off(struct tosa_bt_data *data) -{ - gpio_set_value(data->gpio_reset, 1); - mdelay(10); - gpio_set_value(data->gpio_pwr, 0); - gpio_set_value(data->gpio_reset, 0); -} - -static int tosa_bt_set_block(void *data, bool blocked) -{ - pr_info("BT_RADIO going: %s\n", blocked ? "off" : "on"); - - if (!blocked) { - pr_info("TOSA_BT: going ON\n"); - tosa_bt_on(data); - } else { - pr_info("TOSA_BT: going OFF\n"); - tosa_bt_off(data); - } - - return 0; -} - -static const struct rfkill_ops tosa_bt_rfkill_ops = { - .set_block = tosa_bt_set_block, -}; - -static int tosa_bt_probe(struct platform_device *dev) -{ - int rc; - struct rfkill *rfk; - - struct tosa_bt_data *data = dev->dev.platform_data; - - rc = gpio_request(data->gpio_reset, "Bluetooth reset"); - if (rc) - goto err_reset; - rc = gpio_direction_output(data->gpio_reset, 0); - if (rc) - goto err_reset_dir; - rc = gpio_request(data->gpio_pwr, "Bluetooth power"); - if (rc) - goto err_pwr; - rc = gpio_direction_output(data->gpio_pwr, 0); - if (rc) - goto err_pwr_dir; - - rfk = rfkill_alloc("tosa-bt", &dev->dev, RFKILL_TYPE_BLUETOOTH, - &tosa_bt_rfkill_ops, data); - if (!rfk) { - rc = -ENOMEM; - goto err_rfk_alloc; - } - - rc = rfkill_register(rfk); - if (rc) - goto err_rfkill; - - platform_set_drvdata(dev, rfk); - - return 0; - -err_rfkill: - rfkill_destroy(rfk); -err_rfk_alloc: - tosa_bt_off(data); -err_pwr_dir: - gpio_free(data->gpio_pwr); -err_pwr: -err_reset_dir: - gpio_free(data->gpio_reset); -err_reset: - return rc; -} - -static int __devexit tosa_bt_remove(struct platform_device *dev) -{ - struct tosa_bt_data *data = dev->dev.platform_data; - struct rfkill *rfk = platform_get_drvdata(dev); - - platform_set_drvdata(dev, NULL); - - if (rfk) { - rfkill_unregister(rfk); - rfkill_destroy(rfk); - } - rfk = NULL; - - tosa_bt_off(data); - - gpio_free(data->gpio_pwr); - gpio_free(data->gpio_reset); - - return 0; -} - -static struct platform_driver tosa_bt_driver = { - .probe = tosa_bt_probe, - .remove = __devexit_p(tosa_bt_remove), - - .driver = { - .name = "tosa-bt", - .owner = THIS_MODULE, - }, -}; - - -static int __init tosa_bt_init(void) -{ - return platform_driver_register(&tosa_bt_driver); -} - -static void __exit tosa_bt_exit(void) -{ - platform_driver_unregister(&tosa_bt_driver); -} - -module_init(tosa_bt_init); -module_exit(tosa_bt_exit); diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/tosa.c b/ANDROID_3.4.5/arch/arm/mach-pxa/tosa.c deleted file mode 100644 index 4d4eb60b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/tosa.c +++ /dev/null @@ -1,987 +0,0 @@ -/* - * Support for Sharp SL-C6000x PDAs - * Model: (Tosa) - * - * Copyright (c) 2005 Dirk Opfer - * - * Based on code written by Sharp/Lineo for 2.4 kernels - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/major.h> -#include <linux/fs.h> -#include <linux/interrupt.h> -#include <linux/delay.h> -#include <linux/fb.h> -#include <linux/mmc/host.h> -#include <linux/mfd/tc6393xb.h> -#include <linux/mfd/tmio.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/pm.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/gpio.h> -#include <linux/pda_power.h> -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/input/matrix_keypad.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/usb/gpio_vbus.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> - -#include <mach/pxa25x.h> -#include <mach/reset.h> -#include <mach/irda.h> -#include <mach/mmc.h> -#include <mach/udc.h> -#include <mach/tosa_bt.h> -#include <mach/audio.h> -#include <mach/smemc.h> - -#include <asm/mach/arch.h> -#include <mach/tosa.h> - -#include <asm/hardware/scoop.h> -#include <asm/mach/sharpsl_param.h> - -#include "generic.h" -#include "clock.h" -#include "devices.h" - -static unsigned long tosa_pin_config[] = { - GPIO78_nCS_2, /* Scoop */ - GPIO80_nCS_4, /* tg6393xb */ - GPIO33_nCS_5, /* Scoop */ - - // GPIO76 CARD_VCC_ON1 - - GPIO19_GPIO, /* Reset out */ - GPIO1_RST | WAKEUP_ON_EDGE_FALL, - - GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* WAKE_UP */ - GPIO2_GPIO | WAKEUP_ON_EDGE_BOTH, /* AC_IN */ - GPIO3_GPIO | WAKEUP_ON_EDGE_FALL, /* RECORD */ - GPIO4_GPIO | WAKEUP_ON_EDGE_FALL, /* SYNC */ - GPIO20_GPIO, /* EAR_IN */ - GPIO22_GPIO, /* On */ - - GPIO5_GPIO, /* USB_IN */ - GPIO32_GPIO, /* Pen IRQ */ - - GPIO7_GPIO, /* Jacket Detect */ - GPIO14_GPIO, /* BAT0_CRG */ - GPIO12_GPIO, /* BAT1_CRG */ - GPIO17_GPIO, /* BAT0_LOW */ - GPIO84_GPIO, /* BAT1_LOW */ - GPIO38_GPIO, /* BAT_LOCK */ - - GPIO11_3_6MHz, - GPIO15_GPIO, /* TC6393XB IRQ */ - GPIO18_RDY, - GPIO27_GPIO, /* LCD Sync */ - - /* MMC */ - GPIO6_MMC_CLK, - GPIO8_MMC_CS0, - GPIO9_GPIO, /* Detect */ - GPIO10_GPIO, /* nSD_INT */ - - /* CF */ - GPIO13_GPIO, /* CD_IRQ */ - GPIO21_GPIO, /* Main Slot IRQ */ - GPIO36_GPIO, /* Jacket Slot IRQ */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - - /* AC97 */ - GPIO31_AC97_SYNC, - GPIO30_AC97_SDATA_OUT, - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - // GPIO79 nAUD_IRQ - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO35_FFUART_CTS, - GPIO37_FFUART_DSR, - GPIO39_FFUART_TXD, - GPIO40_FFUART_DTR, - GPIO41_FFUART_RTS, - - /* BTUART */ - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, - - /* Keybd */ - GPIO58_GPIO | MFP_LPM_DRIVE_LOW, /* Column 0 */ - GPIO59_GPIO | MFP_LPM_DRIVE_LOW, /* Column 1 */ - GPIO60_GPIO | MFP_LPM_DRIVE_LOW, /* Column 2 */ - GPIO61_GPIO | MFP_LPM_DRIVE_LOW, /* Column 3 */ - GPIO62_GPIO | MFP_LPM_DRIVE_LOW, /* Column 4 */ - GPIO63_GPIO | MFP_LPM_DRIVE_LOW, /* Column 5 */ - GPIO64_GPIO | MFP_LPM_DRIVE_LOW, /* Column 6 */ - GPIO65_GPIO | MFP_LPM_DRIVE_LOW, /* Column 7 */ - GPIO66_GPIO | MFP_LPM_DRIVE_LOW, /* Column 8 */ - GPIO67_GPIO | MFP_LPM_DRIVE_LOW, /* Column 9 */ - GPIO68_GPIO | MFP_LPM_DRIVE_LOW, /* Column 10 */ - GPIO69_GPIO | MFP_LPM_DRIVE_LOW, /* Row 0 */ - GPIO70_GPIO | MFP_LPM_DRIVE_LOW, /* Row 1 */ - GPIO71_GPIO | MFP_LPM_DRIVE_LOW, /* Row 2 */ - GPIO72_GPIO | MFP_LPM_DRIVE_LOW, /* Row 3 */ - GPIO73_GPIO | MFP_LPM_DRIVE_LOW, /* Row 4 */ - GPIO74_GPIO | MFP_LPM_DRIVE_LOW, /* Row 5 */ - GPIO75_GPIO | MFP_LPM_DRIVE_LOW, /* Row 6 */ - - /* SPI */ - GPIO81_SSP2_CLK_OUT, - GPIO82_SSP2_FRM_OUT, - GPIO83_SSP2_TXD, - - /* IrDA is managed in other way */ - GPIO46_GPIO, - GPIO47_GPIO, -}; - -/* - * SCOOP Device - */ -static struct resource tosa_scoop_resources[] = { - [0] = { - .start = TOSA_CF_PHYS, - .end = TOSA_CF_PHYS + 0xfff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config tosa_scoop_setup = { - .io_dir = TOSA_SCOOP_IO_DIR, - .gpio_base = TOSA_SCOOP_GPIO_BASE, -}; - -static struct platform_device tosascoop_device = { - .name = "sharp-scoop", - .id = 0, - .dev = { - .platform_data = &tosa_scoop_setup, - }, - .num_resources = ARRAY_SIZE(tosa_scoop_resources), - .resource = tosa_scoop_resources, -}; - - -/* - * SCOOP Device Jacket - */ -static struct resource tosa_scoop_jc_resources[] = { - [0] = { - .start = TOSA_SCOOP_PHYS + 0x40, - .end = TOSA_SCOOP_PHYS + 0xfff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct scoop_config tosa_scoop_jc_setup = { - .io_dir = TOSA_SCOOP_JC_IO_DIR, - .gpio_base = TOSA_SCOOP_JC_GPIO_BASE, -}; - -static struct platform_device tosascoop_jc_device = { - .name = "sharp-scoop", - .id = 1, - .dev = { - .platform_data = &tosa_scoop_jc_setup, - .parent = &tosascoop_device.dev, - }, - .num_resources = ARRAY_SIZE(tosa_scoop_jc_resources), - .resource = tosa_scoop_jc_resources, -}; - -/* - * PCMCIA - */ -static struct scoop_pcmcia_dev tosa_pcmcia_scoop[] = { -{ - .dev = &tosascoop_device.dev, - .irq = TOSA_IRQ_GPIO_CF_IRQ, - .cd_irq = TOSA_IRQ_GPIO_CF_CD, - .cd_irq_str = "PCMCIA0 CD", -},{ - .dev = &tosascoop_jc_device.dev, - .irq = TOSA_IRQ_GPIO_JC_CF_IRQ, - .cd_irq = -1, -}, -}; - -static struct scoop_pcmcia_config tosa_pcmcia_config = { - .devs = &tosa_pcmcia_scoop[0], - .num_devs = 2, -}; - -/* - * USB Device Controller - */ -static struct gpio_vbus_mach_info tosa_udc_info = { - .gpio_pullup = TOSA_GPIO_USB_PULLUP, - .gpio_vbus = TOSA_GPIO_USB_IN, - .gpio_vbus_inverted = 1, -}; - -static struct platform_device tosa_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &tosa_udc_info, - }, -}; - -/* - * MMC/SD Device - */ -static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void *data) -{ - int err; - - err = gpio_request(TOSA_GPIO_nSD_INT, "SD Int"); - if (err) { - printk(KERN_ERR "tosa_mci_init: can't request SD_PWR gpio\n"); - goto err_gpio_int; - } - err = gpio_direction_input(TOSA_GPIO_nSD_INT); - if (err) - goto err_gpio_int_dir; - - return 0; - -err_gpio_int_dir: - gpio_free(TOSA_GPIO_nSD_INT); -err_gpio_int: - return err; -} - -static void tosa_mci_exit(struct device *dev, void *data) -{ - gpio_free(TOSA_GPIO_nSD_INT); -} - -static struct pxamci_platform_data tosa_mci_platform_data = { - .detect_delay_ms = 250, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .init = tosa_mci_init, - .exit = tosa_mci_exit, - .gpio_card_detect = TOSA_GPIO_nSD_DETECT, - .gpio_card_ro = TOSA_GPIO_SD_WP, - .gpio_power = TOSA_GPIO_PWR_ON, -}; - -/* - * Irda - */ -static void tosa_irda_transceiver_mode(struct device *dev, int mode) -{ - if (mode & IR_OFF) { - gpio_set_value(TOSA_GPIO_IR_POWERDWN, 0); - pxa2xx_transceiver_mode(dev, mode); - gpio_direction_output(TOSA_GPIO_IRDA_TX, 0); - } else { - pxa2xx_transceiver_mode(dev, mode); - gpio_set_value(TOSA_GPIO_IR_POWERDWN, 1); - } -} - -static int tosa_irda_startup(struct device *dev) -{ - int ret; - - ret = gpio_request(TOSA_GPIO_IRDA_TX, "IrDA TX"); - if (ret) - goto err_tx; - ret = gpio_direction_output(TOSA_GPIO_IRDA_TX, 0); - if (ret) - goto err_tx_dir; - - ret = gpio_request(TOSA_GPIO_IR_POWERDWN, "IrDA powerdown"); - if (ret) - goto err_pwr; - - ret = gpio_direction_output(TOSA_GPIO_IR_POWERDWN, 0); - if (ret) - goto err_pwr_dir; - - tosa_irda_transceiver_mode(dev, IR_SIRMODE | IR_OFF); - - return 0; - -err_pwr_dir: - gpio_free(TOSA_GPIO_IR_POWERDWN); -err_pwr: -err_tx_dir: - gpio_free(TOSA_GPIO_IRDA_TX); -err_tx: - return ret; -} - -static void tosa_irda_shutdown(struct device *dev) -{ - tosa_irda_transceiver_mode(dev, IR_SIRMODE | IR_OFF); - gpio_free(TOSA_GPIO_IR_POWERDWN); - gpio_free(TOSA_GPIO_IRDA_TX); -} - -static struct pxaficp_platform_data tosa_ficp_platform_data = { - .gpio_pwdown = -1, - .transceiver_cap = IR_SIRMODE | IR_OFF, - .transceiver_mode = tosa_irda_transceiver_mode, - .startup = tosa_irda_startup, - .shutdown = tosa_irda_shutdown, -}; - -/* - * Tosa AC IN - */ -static int tosa_power_init(struct device *dev) -{ - int ret = gpio_request(TOSA_GPIO_AC_IN, "ac in"); - if (ret) - goto err_gpio_req; - - ret = gpio_direction_input(TOSA_GPIO_AC_IN); - if (ret) - goto err_gpio_in; - - return 0; - -err_gpio_in: - gpio_free(TOSA_GPIO_AC_IN); -err_gpio_req: - return ret; -} - -static void tosa_power_exit(struct device *dev) -{ - gpio_free(TOSA_GPIO_AC_IN); -} - -static int tosa_power_ac_online(void) -{ - return gpio_get_value(TOSA_GPIO_AC_IN) == 0; -} - -static char *tosa_ac_supplied_to[] = { - "main-battery", - "backup-battery", - "jacket-battery", -}; - -static struct pda_power_pdata tosa_power_data = { - .init = tosa_power_init, - .is_ac_online = tosa_power_ac_online, - .exit = tosa_power_exit, - .supplied_to = tosa_ac_supplied_to, - .num_supplicants = ARRAY_SIZE(tosa_ac_supplied_to), -}; - -static struct resource tosa_power_resource[] = { - { - .name = "ac", - .start = PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN), - .end = PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN), - .flags = IORESOURCE_IRQ | - IORESOURCE_IRQ_HIGHEDGE | - IORESOURCE_IRQ_LOWEDGE, - }, -}; - -static struct platform_device tosa_power_device = { - .name = "pda-power", - .id = -1, - .dev.platform_data = &tosa_power_data, - .resource = tosa_power_resource, - .num_resources = ARRAY_SIZE(tosa_power_resource), -}; - -/* - * Tosa Keyboard - */ -static const uint32_t tosakbd_keymap[] = { - KEY(0, 2, KEY_W), - KEY(0, 6, KEY_K), - KEY(0, 7, KEY_BACKSPACE), - KEY(0, 8, KEY_P), - KEY(1, 1, KEY_Q), - KEY(1, 2, KEY_E), - KEY(1, 3, KEY_T), - KEY(1, 4, KEY_Y), - KEY(1, 6, KEY_O), - KEY(1, 7, KEY_I), - KEY(1, 8, KEY_COMMA), - KEY(2, 1, KEY_A), - KEY(2, 2, KEY_D), - KEY(2, 3, KEY_G), - KEY(2, 4, KEY_U), - KEY(2, 6, KEY_L), - KEY(2, 7, KEY_ENTER), - KEY(2, 8, KEY_DOT), - KEY(3, 1, KEY_Z), - KEY(3, 2, KEY_C), - KEY(3, 3, KEY_V), - KEY(3, 4, KEY_J), - KEY(3, 5, TOSA_KEY_ADDRESSBOOK), - KEY(3, 6, TOSA_KEY_CANCEL), - KEY(3, 7, TOSA_KEY_CENTER), - KEY(3, 8, TOSA_KEY_OK), - KEY(3, 9, KEY_LEFTSHIFT), - KEY(4, 1, KEY_S), - KEY(4, 2, KEY_R), - KEY(4, 3, KEY_B), - KEY(4, 4, KEY_N), - KEY(4, 5, TOSA_KEY_CALENDAR), - KEY(4, 6, TOSA_KEY_HOMEPAGE), - KEY(4, 7, KEY_LEFTCTRL), - KEY(4, 8, TOSA_KEY_LIGHT), - KEY(4, 10, KEY_RIGHTSHIFT), - KEY(5, 1, KEY_TAB), - KEY(5, 2, KEY_SLASH), - KEY(5, 3, KEY_H), - KEY(5, 4, KEY_M), - KEY(5, 5, TOSA_KEY_MENU), - KEY(5, 7, KEY_UP), - KEY(5, 11, TOSA_KEY_FN), - KEY(6, 1, KEY_X), - KEY(6, 2, KEY_F), - KEY(6, 3, KEY_SPACE), - KEY(6, 4, KEY_APOSTROPHE), - KEY(6, 5, TOSA_KEY_MAIL), - KEY(6, 6, KEY_LEFT), - KEY(6, 7, KEY_DOWN), - KEY(6, 8, KEY_RIGHT), -}; - -static struct matrix_keymap_data tosakbd_keymap_data = { - .keymap = tosakbd_keymap, - .keymap_size = ARRAY_SIZE(tosakbd_keymap), -}; - -static const int tosakbd_col_gpios[] = - { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 }; -static const int tosakbd_row_gpios[] = - { 69, 70, 71, 72, 73, 74, 75 }; - -static struct matrix_keypad_platform_data tosakbd_pdata = { - .keymap_data = &tosakbd_keymap_data, - .row_gpios = tosakbd_row_gpios, - .col_gpios = tosakbd_col_gpios, - .num_row_gpios = ARRAY_SIZE(tosakbd_row_gpios), - .num_col_gpios = ARRAY_SIZE(tosakbd_col_gpios), - .col_scan_delay_us = 10, - .debounce_ms = 10, - .wakeup = 1, -}; - -static struct platform_device tosakbd_device = { - .name = "matrix-keypad", - .id = -1, - .dev = { - .platform_data = &tosakbd_pdata, - }, -}; - -static struct gpio_keys_button tosa_gpio_keys[] = { - /* - * Two following keys are directly tied to "ON" button of tosa. Why? - * The first one can be used as a wakeup source, the second can't; - * also the first one is OR of ac_powered and on_button. - */ - { - .type = EV_PWR, - .code = KEY_RESERVED, - .gpio = TOSA_GPIO_POWERON, - .desc = "Poweron", - .wakeup = 1, - .active_low = 1, - }, - { - .type = EV_PWR, - .code = KEY_SUSPEND, - .gpio = TOSA_GPIO_ON_KEY, - .desc = "On key", - /* - * can't be used as wakeup - * .wakeup = 1, - */ - .active_low = 1, - }, - { - .type = EV_KEY, - .code = TOSA_KEY_RECORD, - .gpio = TOSA_GPIO_RECORD_BTN, - .desc = "Record Button", - .wakeup = 1, - .active_low = 1, - }, - { - .type = EV_KEY, - .code = TOSA_KEY_SYNC, - .gpio = TOSA_GPIO_SYNC, - .desc = "Sync Button", - .wakeup = 1, - .active_low = 1, - }, - { - .type = EV_SW, - .code = SW_HEADPHONE_INSERT, - .gpio = TOSA_GPIO_EAR_IN, - .desc = "HeadPhone insert", - .active_low = 1, - .debounce_interval = 300, - }, -}; - -static struct gpio_keys_platform_data tosa_gpio_keys_platform_data = { - .buttons = tosa_gpio_keys, - .nbuttons = ARRAY_SIZE(tosa_gpio_keys), -}; - -static struct platform_device tosa_gpio_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &tosa_gpio_keys_platform_data, - }, -}; - -/* - * Tosa LEDs - */ -static struct gpio_led tosa_gpio_leds[] = { - { - .name = "tosa:amber:charge", - .default_trigger = "main-battery-charging", - .gpio = TOSA_GPIO_CHRG_ERR_LED, - }, - { - .name = "tosa:green:mail", - .default_trigger = "nand-disk", - .gpio = TOSA_GPIO_NOTE_LED, - }, - { - .name = "tosa:dual:wlan", - .default_trigger = "none", - .gpio = TOSA_GPIO_WLAN_LED, - }, - { - .name = "tosa:blue:bluetooth", - .default_trigger = "tosa-bt", - .gpio = TOSA_GPIO_BT_LED, - }, -}; - -static struct gpio_led_platform_data tosa_gpio_leds_platform_data = { - .leds = tosa_gpio_leds, - .num_leds = ARRAY_SIZE(tosa_gpio_leds), -}; - -static struct platform_device tosaled_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &tosa_gpio_leds_platform_data, - }, -}; - -/* - * Toshiba Mobile IO Controller - */ -static struct resource tc6393xb_resources[] = { - [0] = { - .start = TOSA_LCDC_PHYS, - .end = TOSA_LCDC_PHYS + 0x3ffffff, - .flags = IORESOURCE_MEM, - }, - - [1] = { - .start = TOSA_IRQ_GPIO_TC6393XB_INT, - .end = TOSA_IRQ_GPIO_TC6393XB_INT, - .flags = IORESOURCE_IRQ, - }, -}; - - -static int tosa_tc6393xb_enable(struct platform_device *dev) -{ - int rc; - - rc = gpio_request(TOSA_GPIO_TC6393XB_REST_IN, "tc6393xb #pclr"); - if (rc) - goto err_req_pclr; - rc = gpio_request(TOSA_GPIO_TC6393XB_SUSPEND, "tc6393xb #suspend"); - if (rc) - goto err_req_suspend; - rc = gpio_request(TOSA_GPIO_TC6393XB_L3V_ON, "tc6393xb l3v"); - if (rc) - goto err_req_l3v; - rc = gpio_direction_output(TOSA_GPIO_TC6393XB_L3V_ON, 0); - if (rc) - goto err_dir_l3v; - rc = gpio_direction_output(TOSA_GPIO_TC6393XB_SUSPEND, 0); - if (rc) - goto err_dir_suspend; - rc = gpio_direction_output(TOSA_GPIO_TC6393XB_REST_IN, 0); - if (rc) - goto err_dir_pclr; - - mdelay(1); - - gpio_set_value(TOSA_GPIO_TC6393XB_SUSPEND, 1); - - mdelay(10); - - gpio_set_value(TOSA_GPIO_TC6393XB_REST_IN, 1); - gpio_set_value(TOSA_GPIO_TC6393XB_L3V_ON, 1); - - return 0; -err_dir_pclr: -err_dir_suspend: -err_dir_l3v: - gpio_free(TOSA_GPIO_TC6393XB_L3V_ON); -err_req_l3v: - gpio_free(TOSA_GPIO_TC6393XB_SUSPEND); -err_req_suspend: - gpio_free(TOSA_GPIO_TC6393XB_REST_IN); -err_req_pclr: - return rc; -} - -static int tosa_tc6393xb_disable(struct platform_device *dev) -{ - gpio_free(TOSA_GPIO_TC6393XB_L3V_ON); - gpio_free(TOSA_GPIO_TC6393XB_SUSPEND); - gpio_free(TOSA_GPIO_TC6393XB_REST_IN); - - return 0; -} - -static int tosa_tc6393xb_resume(struct platform_device *dev) -{ - gpio_set_value(TOSA_GPIO_TC6393XB_SUSPEND, 1); - mdelay(10); - gpio_set_value(TOSA_GPIO_TC6393XB_L3V_ON, 1); - mdelay(10); - - return 0; -} - -static int tosa_tc6393xb_suspend(struct platform_device *dev) -{ - gpio_set_value(TOSA_GPIO_TC6393XB_L3V_ON, 0); - gpio_set_value(TOSA_GPIO_TC6393XB_SUSPEND, 0); - return 0; -} - -static struct mtd_partition tosa_nand_partition[] = { - { - .name = "smf", - .offset = 0, - .size = 7 * 1024 * 1024, - }, - { - .name = "root", - .offset = MTDPART_OFS_APPEND, - .size = 28 * 1024 * 1024, - }, - { - .name = "home", - .offset = MTDPART_OFS_APPEND, - .size = MTDPART_SIZ_FULL, - }, -}; - -static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; - -static struct nand_bbt_descr tosa_tc6393xb_nand_bbt = { - .options = 0, - .offs = 4, - .len = 2, - .pattern = scan_ff_pattern -}; - -static struct tmio_nand_data tosa_tc6393xb_nand_config = { - .num_partitions = ARRAY_SIZE(tosa_nand_partition), - .partition = tosa_nand_partition, - .badblock_pattern = &tosa_tc6393xb_nand_bbt, -}; - -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[] = { - { - .xres = 480, - .yres = 640, - .pixclock = 0x002cdf00,/* PLL divisor */ - .left_margin = 0x004c, - .right_margin = 0x005b, - .upper_margin = 0x0001, - .lower_margin = 0x000d, - .hsync_len = 0x0002, - .vsync_len = 0x0001, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED, - },{ - .xres = 240, - .yres = 320, - .pixclock = 0x00e7f203,/* PLL divisor */ - .left_margin = 0x0024, - .right_margin = 0x002f, - .upper_margin = 0x0001, - .lower_margin = 0x000d, - .hsync_len = 0x0002, - .vsync_len = 0x0001, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED, - } -}; - -static struct tmio_fb_data tosa_tc6393xb_fb_config = { - .lcd_set_power = tc6393xb_lcd_set_power, - .lcd_mode = tc6393xb_lcd_mode, - .num_modes = ARRAY_SIZE(tosa_tc6393xb_lcd_mode), - .modes = &tosa_tc6393xb_lcd_mode[0], - .height = 82, - .width = 60, -}; -#endif - -static struct tc6393xb_platform_data tosa_tc6393xb_data = { - .scr_pll2cr = 0x0cc1, - .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, - .suspend = tosa_tc6393xb_suspend, - .resume = tosa_tc6393xb_resume, - - .nand_data = &tosa_tc6393xb_nand_config, -#ifdef CONFIG_MFD_TC6393XB - .fb_data = &tosa_tc6393xb_fb_config, -#endif - - .resume_restore = 1, -}; - - -static struct platform_device tc6393xb_device = { - .name = "tc6393xb", - .id = -1, - .dev = { - .platform_data = &tosa_tc6393xb_data, - }, - .num_resources = ARRAY_SIZE(tc6393xb_resources), - .resource = tc6393xb_resources, -}; - -static struct tosa_bt_data tosa_bt_data = { - .gpio_pwr = TOSA_GPIO_BT_PWR_EN, - .gpio_reset = TOSA_GPIO_BT_RESET, -}; - -static struct platform_device tosa_bt_device = { - .name = "tosa-bt", - .id = -1, - .dev.platform_data = &tosa_bt_data, -}; - -static struct pxa2xx_spi_master pxa_ssp_master_info = { - .num_chipselect = 1, -}; - -static struct spi_board_info spi_board_info[] __initdata = { - { - .modalias = "tosa-lcd", - // .platform_data - .max_speed_hz = 28750, - .bus_num = 2, - .chip_select = 0, - .mode = SPI_MODE_0, - }, -}; - -static struct mtd_partition sharpsl_rom_parts[] = { - { - .name ="Boot PROM Filesystem", - .offset = 0x00160000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data sharpsl_rom_data = { - .width = 2, - .nr_parts = ARRAY_SIZE(sharpsl_rom_parts), - .parts = sharpsl_rom_parts, -}; - -static struct resource sharpsl_rom_resources[] = { - { - .start = 0x00000000, - .end = 0x007fffff, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device sharpsl_rom_device = { - .name = "physmap-flash", - .id = -1, - .resource = sharpsl_rom_resources, - .num_resources = ARRAY_SIZE(sharpsl_rom_resources), - .dev.platform_data = &sharpsl_rom_data, -}; - -static struct platform_device wm9712_device = { - .name = "wm9712-codec", - .id = -1, -}; - -static struct platform_device tosa_audio_device = { - .name = "tosa-audio", - .id = -1, -}; - -static struct platform_device *devices[] __initdata = { - &tosascoop_device, - &tosascoop_jc_device, - &tc6393xb_device, - &tosa_power_device, - &tosakbd_device, - &tosa_gpio_keys_device, - &tosaled_device, - &tosa_bt_device, - &sharpsl_rom_device, - &wm9712_device, - &tosa_gpio_vbus, - &tosa_audio_device, -}; - -static void tosa_poweroff(void) -{ - pxa_restart('g', NULL); -} - -static void tosa_restart(char mode, const char *cmd) -{ - uint32_t msc0 = __raw_readl(MSC0); - - /* Bootloader magic for a reboot */ - if((msc0 & 0xffff0000) == 0x7ff00000) - __raw_writel((msc0 & 0xffff) | 0x7ee00000, MSC0); - - tosa_poweroff(); -} - -static void __init tosa_init(void) -{ - int dummy; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(tosa_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - gpio_set_wake(MFP_PIN_GPIO1, 1); - /* We can't pass to gpio-keys since it will drop the Reset altfunc */ - - init_gpio_reset(TOSA_GPIO_ON_RESET, 0, 0); - - pm_power_off = tosa_poweroff; - - PCFR |= PCFR_OPDE; - - /* enable batt_fault */ - PMCR = 0x01; - - dummy = gpiochip_reserve(TOSA_SCOOP_GPIO_BASE, 12); - dummy = gpiochip_reserve(TOSA_SCOOP_JC_GPIO_BASE, 12); - dummy = gpiochip_reserve(TOSA_TC6393XB_GPIO_BASE, 16); - - pxa_set_mci_info(&tosa_mci_platform_data); - pxa_set_ficp_info(&tosa_ficp_platform_data); - pxa_set_i2c_info(NULL); - pxa_set_ac97_info(NULL); - platform_scoop_config = &tosa_pcmcia_config; - - pxa2xx_set_spi_info(2, &pxa_ssp_master_info); - spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); - - clk_add_alias("CLK_CK3P6MI", tc6393xb_device.name, "GPIO11_CLK", NULL); - - platform_add_devices(devices, ARRAY_SIZE(devices)); -} - -static void __init fixup_tosa(struct tag *tags, char **cmdline, - struct meminfo *mi) -{ - sharpsl_save_param(); - mi->nr_banks=1; - mi->bank[0].start = 0xa0000000; - mi->bank[0].size = (64*1024*1024); -} - -MACHINE_START(TOSA, "SHARP Tosa") - .restart_mode = 'g', - .fixup = fixup_tosa, - .map_io = pxa25x_map_io, - .nr_irqs = TOSA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .init_machine = tosa_init, - .timer = &pxa_timer, - .restart = tosa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/trizeps4.c b/ANDROID_3.4.5/arch/arm/mach-pxa/trizeps4.c deleted file mode 100644 index 2b6ac00b..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/trizeps4.c +++ /dev/null @@ -1,578 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/trizeps4.c - * - * Support for the Keith und Koep Trizeps4 Module Platform. - * - * Author: Jürgen Schindele - * Created: 20 02, 2006 - * Copyright: Jürgen Schindele - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/interrupt.h> -#include <linux/export.h> -#include <linux/sched.h> -#include <linux/bitops.h> -#include <linux/fb.h> -#include <linux/ioport.h> -#include <linux/delay.h> -#include <linux/gpio.h> -#include <linux/dm9000.h> -#include <linux/mtd/physmap.h> -#include <linux/mtd/partitions.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/types.h> -#include <asm/setup.h> -#include <asm/memory.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/sizes.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> -#include <asm/mach/flash.h> - -#include <mach/pxa27x.h> -#include <mach/trizeps4.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <mach/irda.h> -#include <mach/ohci.h> -#include <mach/smemc.h> - -#include "generic.h" -#include "devices.h" - -/* comment out the following line if you want to use the - * Standard UART from PXA for serial / irda transmission - * and acivate it if you have status leds connected */ -#define STATUS_LEDS_ON_STUART_PINS 1 - -/***************************************************************************** - * MultiFunctionPins of CPU - *****************************************************************************/ -static unsigned long trizeps4_pin_config[] __initdata = { - /* Chip Selects */ - GPIO15_nCS_1, /* DiskOnChip CS */ - GPIO93_GPIO, /* TRIZEPS4_DOC_IRQ */ - GPIO94_GPIO, /* DOC lock */ - - GPIO78_nCS_2, /* DM9000 CS */ - GPIO101_GPIO, /* TRIZEPS4_ETH_IRQ */ - - GPIO79_nCS_3, /* Logic CS */ - GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, /* Logic irq */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* LCD - 16bpp Active TFT */ - GPIOxx_LCD_TFT_16BPP, - - /* UART */ - GPIO9_FFUART_CTS, - GPIO10_FFUART_DCD, - GPIO16_FFUART_TXD, - GPIO33_FFUART_DSR, - GPIO38_FFUART_RI, - GPIO82_FFUART_DTR, - GPIO83_FFUART_RTS, - GPIO96_FFUART_RXD, - - GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, - GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, -#ifdef STATUS_LEDS_ON_STUART_PINS - GPIO46_GPIO, - GPIO47_GPIO, -#else - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, -#endif - /* PCMCIA */ - GPIO11_GPIO, /* TRIZEPS4_CD_IRQ */ - GPIO13_GPIO, /* TRIZEPS4_READY_NINT */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO102_nPCE_1, - GPIO104_PSKTSEL, - - /* MultiMediaCard */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO12_GPIO, /* TRIZEPS4_MMC_IRQ */ - - /* USB OHCI */ - GPIO88_USBH1_PWR, /* USBHPWR1 */ - GPIO89_USBH1_PEN, /* USBHPEN1 */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, -}; - -static unsigned long trizeps4wl_pin_config[] __initdata = { - /* SSP 2 */ - GPIO14_SSP2_SFRM, - GPIO19_SSP2_SCLK, - GPIO53_GPIO, /* TRIZEPS4_SPI_IRQ */ - GPIO86_SSP2_RXD, - GPIO87_SSP2_TXD, -}; - -/**************************************************************************** - * ONBOARD FLASH - ****************************************************************************/ -static struct mtd_partition trizeps4_partitions[] = { - { - .name = "Bootloader", - .offset = 0x00000000, - .size = 0x00040000, - .mask_flags = MTD_WRITEABLE /* force read-only */ - }, { - .name = "Backup", - .offset = 0x00040000, - .size = 0x00040000, - }, { - .name = "Image", - .offset = 0x00080000, - .size = 0x01080000, - }, { - .name = "IPSM", - .offset = 0x01100000, - .size = 0x00e00000, - }, { - .name = "Registry", - .offset = 0x01f00000, - .size = MTDPART_SIZ_FULL, - } -}; - -static struct physmap_flash_data trizeps4_flash_data[] = { - { - .width = 4, /* bankwidth in bytes */ - .parts = trizeps4_partitions, - .nr_parts = ARRAY_SIZE(trizeps4_partitions) - } -}; - -static struct resource flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device flash_device = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = trizeps4_flash_data, - }, - .resource = &flash_resource, - .num_resources = 1, -}; - -/**************************************************************************** - * DAVICOM DM9000 Ethernet - ****************************************************************************/ -static struct resource dm9000_resources[] = { - [0] = { - .start = TRIZEPS4_ETH_PHYS+0x300, - .end = TRIZEPS4_ETH_PHYS+0x400-1, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = TRIZEPS4_ETH_PHYS+0x8300, - .end = TRIZEPS4_ETH_PHYS+0x8400-1, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = TRIZEPS4_ETH_IRQ, - .end = TRIZEPS4_ETH_IRQ, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - }, -}; - -static struct dm9000_plat_data tri_dm9000_platdata = { - .flags = DM9000_PLATF_32BITONLY, -}; - -static struct platform_device dm9000_device = { - .name = "dm9000", - .id = -1, - .num_resources = ARRAY_SIZE(dm9000_resources), - .resource = dm9000_resources, - .dev = { - .platform_data = &tri_dm9000_platdata, - } -}; - -/**************************************************************************** - * LED's on GPIO pins of PXA - ****************************************************************************/ -static struct gpio_led trizeps4_led[] = { -#ifdef STATUS_LEDS_ON_STUART_PINS - { - .name = "led0:orange:heartbeat", /* */ - .default_trigger = "heartbeat", - .gpio = GPIO_HEARTBEAT_LED, - .active_low = 1, - }, - { - .name = "led1:yellow:cpubusy", /* */ - .default_trigger = "cpu-busy", - .gpio = GPIO_SYS_BUSY_LED, - .active_low = 1, - }, -#endif -}; - -static struct gpio_led_platform_data trizeps4_led_data = { - .leds = trizeps4_led, - .num_leds = ARRAY_SIZE(trizeps4_led), -}; - -static struct platform_device leds_devices = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &trizeps4_led_data, - }, -}; - -static struct platform_device *trizeps4_devices[] __initdata = { - &flash_device, - &dm9000_device, - &leds_devices, -}; - -static struct platform_device *trizeps4wl_devices[] __initdata = { - &flash_device, - &leds_devices, -}; - -static short trizeps_conxs_bcr; - -/* PCCARD power switching supports only 3,3V */ -void board_pcmcia_power(int power) -{ - if (power) { - /* switch power on, put in reset and enable buffers */ - trizeps_conxs_bcr |= power; - trizeps_conxs_bcr |= ConXS_BCR_CF_RESET; - trizeps_conxs_bcr &= ~ConXS_BCR_CF_BUF_EN; - BCR_writew(trizeps_conxs_bcr); - /* wait a little */ - udelay(2000); - /* take reset away */ - trizeps_conxs_bcr &= ~ConXS_BCR_CF_RESET; - BCR_writew(trizeps_conxs_bcr); - udelay(2000); - } else { - /* put in reset */ - trizeps_conxs_bcr |= ConXS_BCR_CF_RESET; - BCR_writew(trizeps_conxs_bcr); - udelay(1000); - /* switch power off */ - trizeps_conxs_bcr &= ~0xf; - BCR_writew(trizeps_conxs_bcr); - } - pr_debug("%s: o%s 0x%x\n", __func__, power ? "n" : "ff", - trizeps_conxs_bcr); -} -EXPORT_SYMBOL(board_pcmcia_power); - -/* backlight power switching for LCD panel */ -static void board_backlight_power(int on) -{ - if (on) - trizeps_conxs_bcr |= ConXS_BCR_L_DISP; - else - trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP; - - pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", - trizeps_conxs_bcr); - BCR_writew(trizeps_conxs_bcr); -} - -/* a I2C based RTC is known on CONXS board */ -static struct i2c_board_info trizeps4_i2c_devices[] __initdata = { - { I2C_BOARD_INFO("rtc-pcf8593", 0x51) } -}; - -/**************************************************************************** - * MMC card slot external to module - ****************************************************************************/ -static int trizeps4_mci_init(struct device *dev, irq_handler_t mci_detect_int, - void *data) -{ - int err; - - err = request_irq(TRIZEPS4_MMC_IRQ, mci_detect_int, - IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SAMPLE_RANDOM, - "MMC card detect", data); - if (err) { - printk(KERN_ERR "trizeps4_mci_init: MMC/SD: can't request" - "MMC card detect IRQ\n"); - return -1; - } - return 0; -} - -static void trizeps4_mci_exit(struct device *dev, void *data) -{ - free_irq(TRIZEPS4_MMC_IRQ, data); -} - -static struct pxamci_platform_data trizeps4_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .detect_delay_ms= 10, - .init = trizeps4_mci_init, - .exit = trizeps4_mci_exit, - .get_ro = NULL, /* write-protection not supported */ - .setpower = NULL, /* power-switching not supported */ - .gpio_card_detect = -1, - .gpio_card_ro = -1, - .gpio_power = -1, -}; - -/**************************************************************************** - * IRDA mode switching on stuart - ****************************************************************************/ -#ifndef STATUS_LEDS_ON_STUART_PINS -static short trizeps_conxs_ircr; - -static int trizeps4_irda_startup(struct device *dev) -{ - trizeps_conxs_ircr &= ~ConXS_IRCR_SD; - IRCR_writew(trizeps_conxs_ircr); - return 0; -} - -static void trizeps4_irda_shutdown(struct device *dev) -{ - trizeps_conxs_ircr |= ConXS_IRCR_SD; - IRCR_writew(trizeps_conxs_ircr); -} - -static void trizeps4_irda_transceiver_mode(struct device *dev, int mode) -{ - unsigned long flags; - - local_irq_save(flags); - /* Switch mode */ - if (mode & IR_SIRMODE) - trizeps_conxs_ircr &= ~ConXS_IRCR_MODE; /* Slow mode */ - else if (mode & IR_FIRMODE) - trizeps_conxs_ircr |= ConXS_IRCR_MODE; /* Fast mode */ - - /* Switch power */ - if (mode & IR_OFF) - trizeps_conxs_ircr |= ConXS_IRCR_SD; - else - trizeps_conxs_ircr &= ~ConXS_IRCR_SD; - - IRCR_writew(trizeps_conxs_ircr); - local_irq_restore(flags); - - pxa2xx_transceiver_mode(dev, mode); -} - -static struct pxaficp_platform_data trizeps4_ficp_platform_data = { - .gpio_pwdown = -1, - .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF, - .transceiver_mode = trizeps4_irda_transceiver_mode, - .startup = trizeps4_irda_startup, - .shutdown = trizeps4_irda_shutdown, -}; -#endif - -/**************************************************************************** - * OHCI USB port - ****************************************************************************/ -static struct pxaohci_platform_data trizeps4_ohci_platform_data = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -static struct map_desc trizeps4_io_desc[] __initdata = { - { /* ConXS CFSR */ - .virtual = TRIZEPS4_CFSR_VIRT, - .pfn = __phys_to_pfn(TRIZEPS4_CFSR_PHYS), - .length = 0x00001000, - .type = MT_DEVICE - }, - { /* ConXS BCR */ - .virtual = TRIZEPS4_BOCR_VIRT, - .pfn = __phys_to_pfn(TRIZEPS4_BOCR_PHYS), - .length = 0x00001000, - .type = MT_DEVICE - }, - { /* ConXS IRCR */ - .virtual = TRIZEPS4_IRCR_VIRT, - .pfn = __phys_to_pfn(TRIZEPS4_IRCR_PHYS), - .length = 0x00001000, - .type = MT_DEVICE - }, - { /* ConXS DCR */ - .virtual = TRIZEPS4_DICR_VIRT, - .pfn = __phys_to_pfn(TRIZEPS4_DICR_PHYS), - .length = 0x00001000, - .type = MT_DEVICE - }, - { /* ConXS UPSR */ - .virtual = TRIZEPS4_UPSR_VIRT, - .pfn = __phys_to_pfn(TRIZEPS4_UPSR_PHYS), - .length = 0x00001000, - .type = MT_DEVICE - } -}; - -static struct pxafb_mode_info sharp_lcd_mode = { - .pixclock = 78000, - .xres = 640, - .yres = 480, - .bpp = 8, - .hsync_len = 4, - .left_margin = 4, - .right_margin = 4, - .vsync_len = 2, - .upper_margin = 0, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info sharp_lcd = { - .modes = &sharp_lcd_mode, - .num_modes = 1, - .lcd_conn = LCD_COLOR_DSTN_16BPP | LCD_PCLK_EDGE_FALL, - .cmap_inverse = 0, - .cmap_static = 0, - .pxafb_backlight_power = board_backlight_power, -}; - -static struct pxafb_mode_info toshiba_lcd_mode = { - .pixclock = 39720, - .xres = 640, - .yres = 480, - .bpp = 8, - .hsync_len = 63, - .left_margin = 12, - .right_margin = 12, - .vsync_len = 4, - .upper_margin = 32, - .lower_margin = 10, - .sync = 0, - .cmap_greyscale = 0, -}; - -static struct pxafb_mach_info toshiba_lcd = { - .modes = &toshiba_lcd_mode, - .num_modes = 1, - .lcd_conn = (LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL), - .cmap_inverse = 0, - .cmap_static = 0, - .pxafb_backlight_power = board_backlight_power, -}; - -static void __init trizeps4_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(trizeps4_pin_config)); - if (machine_is_trizeps4wl()) { - pxa2xx_mfp_config(ARRAY_AND_SIZE(trizeps4wl_pin_config)); - platform_add_devices(trizeps4wl_devices, - ARRAY_SIZE(trizeps4wl_devices)); - } else { - platform_add_devices(trizeps4_devices, - ARRAY_SIZE(trizeps4_devices)); - } - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - if (0) /* dont know how to determine LCD */ - pxa_set_fb_info(NULL, &sharp_lcd); - else - pxa_set_fb_info(NULL, &toshiba_lcd); - - pxa_set_mci_info(&trizeps4_mci_platform_data); -#ifndef STATUS_LEDS_ON_STUART_PINS - pxa_set_ficp_info(&trizeps4_ficp_platform_data); -#endif - pxa_set_ohci_info(&trizeps4_ohci_platform_data); - pxa_set_ac97_info(NULL); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, trizeps4_i2c_devices, - ARRAY_SIZE(trizeps4_i2c_devices)); - - /* this is the reset value */ - trizeps_conxs_bcr = 0x00A0; - - BCR_writew(trizeps_conxs_bcr); - board_backlight_power(1); -} - -static void __init trizeps4_map_io(void) -{ - pxa27x_map_io(); - iotable_init(trizeps4_io_desc, ARRAY_SIZE(trizeps4_io_desc)); - - if ((__raw_readl(MSC0) & 0x8) && (__raw_readl(BOOT_DEF) & 0x1)) { - /* if flash is 16 bit wide its a Trizeps4 WL */ - __machine_arch_type = MACH_TYPE_TRIZEPS4WL; - trizeps4_flash_data[0].width = 2; - } else { - /* if flash is 32 bit wide its a Trizeps4 */ - __machine_arch_type = MACH_TYPE_TRIZEPS4; - trizeps4_flash_data[0].width = 4; - } -} - -MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module") - /* MAINTAINER("Jürgen Schindele") */ - .atag_offset = 0x100, - .init_machine = trizeps4_init, - .map_io = trizeps4_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - -MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module") - /* MAINTAINER("Jürgen Schindele") */ - .atag_offset = 0x100, - .init_machine = trizeps4_init, - .map_io = trizeps4_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/viper.c b/ANDROID_3.4.5/arch/arm/mach-pxa/viper.c deleted file mode 100644 index 130379fb..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/viper.c +++ /dev/null @@ -1,1004 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/viper.c - * - * Support for the Arcom VIPER SBC. - * - * Author: Ian Campbell - * Created: Feb 03, 2003 - * Copyright: Arcom Control Systems - * - * Maintained by Marc Zyngier <maz@misterjones.org> - * <marc.zyngier@altran.com> - * - * Based on lubbock.c: - * Author: Nicolas Pitre - * Created: Jun 15, 2001 - * Copyright: MontaVista Software Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/types.h> -#include <linux/memory.h> -#include <linux/cpu.h> -#include <linux/cpufreq.h> -#include <linux/delay.h> -#include <linux/fs.h> -#include <linux/init.h> -#include <linux/slab.h> -#include <linux/interrupt.h> -#include <linux/major.h> -#include <linux/module.h> -#include <linux/pm.h> -#include <linux/sched.h> -#include <linux/gpio.h> -#include <linux/jiffies.h> -#include <linux/i2c-gpio.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/serial_8250.h> -#include <linux/smc91x.h> -#include <linux/pwm_backlight.h> -#include <linux/usb/isp116x.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/syscore_ops.h> - -#include <mach/pxa25x.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/regs-uart.h> -#include <mach/arcom-pcmcia.h> -#include <mach/viper.h> - -#include <asm/setup.h> -#include <asm/mach-types.h> -#include <asm/irq.h> -#include <asm/sizes.h> -#include <asm/system_info.h> - -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach/irq.h> - -#include "generic.h" -#include "devices.h" - -static unsigned int icr; - -static void viper_icr_set_bit(unsigned int bit) -{ - icr |= bit; - VIPER_ICR = icr; -} - -static void viper_icr_clear_bit(unsigned int bit) -{ - icr &= ~bit; - VIPER_ICR = icr; -} - -/* This function is used from the pcmcia module to reset the CF */ -static void viper_cf_reset(int state) -{ - if (state) - viper_icr_set_bit(VIPER_ICR_CF_RST); - else - viper_icr_clear_bit(VIPER_ICR_CF_RST); -} - -static struct arcom_pcmcia_pdata viper_pcmcia_info = { - .cd_gpio = VIPER_CF_CD_GPIO, - .rdy_gpio = VIPER_CF_RDY_GPIO, - .pwr_gpio = VIPER_CF_POWER_GPIO, - .reset = viper_cf_reset, -}; - -static struct platform_device viper_pcmcia_device = { - .name = "viper-pcmcia", - .id = -1, - .dev = { - .platform_data = &viper_pcmcia_info, - }, -}; - -/* - * The CPLD version register was not present on VIPER boards prior to - * v2i1. On v1 boards where the version register is not present we - * will just read back the previous value from the databus. - * - * Therefore we do two reads. The first time we write 0 to the - * (read-only) register before reading and the second time we write - * 0xff first. If the two reads do not match or they read back as 0xff - * or 0x00 then we have version 1 hardware. - */ -static u8 viper_hw_version(void) -{ - u8 v1, v2; - unsigned long flags; - - local_irq_save(flags); - - VIPER_VERSION = 0; - v1 = VIPER_VERSION; - VIPER_VERSION = 0xff; - v2 = VIPER_VERSION; - - v1 = (v1 != v2 || v1 == 0xff) ? 0 : v1; - - local_irq_restore(flags); - return v1; -} - -/* CPU system core operations. */ -static int viper_cpu_suspend(void) -{ - viper_icr_set_bit(VIPER_ICR_R_DIS); - return 0; -} - -static void viper_cpu_resume(void) -{ - viper_icr_clear_bit(VIPER_ICR_R_DIS); -} - -static struct syscore_ops viper_cpu_syscore_ops = { - .suspend = viper_cpu_suspend, - .resume = viper_cpu_resume, -}; - -static unsigned int current_voltage_divisor; - -/* - * If force is not true then step from existing to new divisor. If - * force is true then jump straight to the new divisor. Stepping is - * used because if the jump in voltage is too large, the VCC can dip - * too low and the regulator cuts out. - * - * force can be used to initialize the divisor to a know state by - * setting the value for the current clock speed, since we are already - * running at that speed we know the voltage should be pretty close so - * the jump won't be too large - */ -static void viper_set_core_cpu_voltage(unsigned long khz, int force) -{ - int i = 0; - unsigned int divisor = 0; - const char *v; - - if (khz < 200000) { - v = "1.0"; divisor = 0xfff; - } else if (khz < 300000) { - v = "1.1"; divisor = 0xde5; - } else { - v = "1.3"; divisor = 0x325; - } - - pr_debug("viper: setting CPU core voltage to %sV at %d.%03dMHz\n", - v, (int)khz / 1000, (int)khz % 1000); - -#define STEP 0x100 - do { - int step; - - if (force) - step = divisor; - else if (current_voltage_divisor < divisor - STEP) - step = current_voltage_divisor + STEP; - else if (current_voltage_divisor > divisor + STEP) - step = current_voltage_divisor - STEP; - else - step = divisor; - force = 0; - - gpio_set_value(VIPER_PSU_CLK_GPIO, 0); - gpio_set_value(VIPER_PSU_nCS_LD_GPIO, 0); - - for (i = 1 << 11 ; i > 0 ; i >>= 1) { - udelay(1); - - gpio_set_value(VIPER_PSU_DATA_GPIO, step & i); - udelay(1); - - gpio_set_value(VIPER_PSU_CLK_GPIO, 1); - udelay(1); - - gpio_set_value(VIPER_PSU_CLK_GPIO, 0); - } - udelay(1); - - gpio_set_value(VIPER_PSU_nCS_LD_GPIO, 1); - udelay(1); - - gpio_set_value(VIPER_PSU_nCS_LD_GPIO, 0); - - current_voltage_divisor = step; - } while (current_voltage_divisor != divisor); -} - -/* Interrupt handling */ -static unsigned long viper_irq_enabled_mask; -static const int viper_isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, 9, 14, 15 }; -static const int viper_isa_irq_map[] = { - 0, /* ISA irq #0, invalid */ - 0, /* ISA irq #1, invalid */ - 0, /* ISA irq #2, invalid */ - 1 << 0, /* ISA irq #3 */ - 1 << 1, /* ISA irq #4 */ - 1 << 2, /* ISA irq #5 */ - 1 << 3, /* ISA irq #6 */ - 1 << 4, /* ISA irq #7 */ - 0, /* ISA irq #8, invalid */ - 1 << 8, /* ISA irq #9 */ - 1 << 5, /* ISA irq #10 */ - 1 << 6, /* ISA irq #11 */ - 1 << 7, /* ISA irq #12 */ - 0, /* ISA irq #13, invalid */ - 1 << 9, /* ISA irq #14 */ - 1 << 10, /* ISA irq #15 */ -}; - -static inline int viper_irq_to_bitmask(unsigned int irq) -{ - return viper_isa_irq_map[irq - PXA_ISA_IRQ(0)]; -} - -static inline int viper_bit_to_irq(int bit) -{ - return viper_isa_irqs[bit] + PXA_ISA_IRQ(0); -} - -static void viper_ack_irq(struct irq_data *d) -{ - int viper_irq = viper_irq_to_bitmask(d->irq); - - if (viper_irq & 0xff) - VIPER_LO_IRQ_STATUS = viper_irq; - else - VIPER_HI_IRQ_STATUS = (viper_irq >> 8); -} - -static void viper_mask_irq(struct irq_data *d) -{ - viper_irq_enabled_mask &= ~(viper_irq_to_bitmask(d->irq)); -} - -static void viper_unmask_irq(struct irq_data *d) -{ - viper_irq_enabled_mask |= viper_irq_to_bitmask(d->irq); -} - -static inline unsigned long viper_irq_pending(void) -{ - return (VIPER_HI_IRQ_STATUS << 8 | VIPER_LO_IRQ_STATUS) & - viper_irq_enabled_mask; -} - -static void viper_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending; - - pending = viper_irq_pending(); - do { - /* we're in a chained irq handler, - * so ack the interrupt by hand */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - - if (likely(pending)) { - irq = viper_bit_to_irq(__ffs(pending)); - generic_handle_irq(irq); - } - pending = viper_irq_pending(); - } while (pending); -} - -static struct irq_chip viper_irq_chip = { - .name = "ISA", - .irq_ack = viper_ack_irq, - .irq_mask = viper_mask_irq, - .irq_unmask = viper_unmask_irq -}; - -static void __init viper_init_irq(void) -{ - int level; - int isa_irq; - - pxa25x_init_irq(); - - /* setup ISA IRQs */ - for (level = 0; level < ARRAY_SIZE(viper_isa_irqs); level++) { - isa_irq = viper_bit_to_irq(level); - irq_set_chip_and_handler(isa_irq, &viper_irq_chip, - handle_edge_irq); - set_irq_flags(isa_irq, IRQF_VALID | IRQF_PROBE); - } - - irq_set_chained_handler(gpio_to_irq(VIPER_CPLD_GPIO), - viper_irq_handler); - irq_set_irq_type(gpio_to_irq(VIPER_CPLD_GPIO), IRQ_TYPE_EDGE_BOTH); -} - -/* Flat Panel */ -static struct pxafb_mode_info fb_mode_info[] = { - { - .pixclock = 157500, - - .xres = 320, - .yres = 240, - - .bpp = 16, - - .hsync_len = 63, - .left_margin = 7, - .right_margin = 13, - - .vsync_len = 20, - .upper_margin = 0, - .lower_margin = 0, - - .sync = 0, - }, -}; - -static struct pxafb_mach_info fb_info = { - .modes = fb_mode_info, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static int viper_backlight_init(struct device *dev) -{ - int ret; - - /* GPIO9 and 10 control FB backlight. Initialise to off */ - ret = gpio_request(VIPER_BCKLIGHT_EN_GPIO, "Backlight"); - if (ret) - goto err_request_bckl; - - ret = gpio_request(VIPER_LCD_EN_GPIO, "LCD"); - if (ret) - goto err_request_lcd; - - ret = gpio_direction_output(VIPER_BCKLIGHT_EN_GPIO, 0); - if (ret) - goto err_dir; - - ret = gpio_direction_output(VIPER_LCD_EN_GPIO, 0); - if (ret) - goto err_dir; - - return 0; - -err_dir: - gpio_free(VIPER_LCD_EN_GPIO); -err_request_lcd: - gpio_free(VIPER_BCKLIGHT_EN_GPIO); -err_request_bckl: - dev_err(dev, "Failed to setup LCD GPIOs\n"); - - return ret; -} - -static int viper_backlight_notify(struct device *dev, int brightness) -{ - gpio_set_value(VIPER_LCD_EN_GPIO, !!brightness); - gpio_set_value(VIPER_BCKLIGHT_EN_GPIO, !!brightness); - - return brightness; -} - -static void viper_backlight_exit(struct device *dev) -{ - gpio_free(VIPER_LCD_EN_GPIO); - gpio_free(VIPER_BCKLIGHT_EN_GPIO); -} - -static struct platform_pwm_backlight_data viper_backlight_data = { - .pwm_id = 0, - .max_brightness = 100, - .dft_brightness = 100, - .pwm_period_ns = 1000000, - .init = viper_backlight_init, - .notify = viper_backlight_notify, - .exit = viper_backlight_exit, -}; - -static struct platform_device viper_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa25x_device_pwm0.dev, - .platform_data = &viper_backlight_data, - }, -}; - -/* Ethernet */ -static struct resource smc91x_resources[] = { - [0] = { - .name = "smc91x-regs", - .start = VIPER_ETH_PHYS + 0x300, - .end = VIPER_ETH_PHYS + 0x30f, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_GPIO_TO_IRQ(VIPER_ETH_GPIO), - .end = PXA_GPIO_TO_IRQ(VIPER_ETH_GPIO), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - }, - [2] = { - .name = "smc91x-data32", - .start = VIPER_ETH_DATA_PHYS, - .end = VIPER_ETH_DATA_PHYS + 3, - .flags = IORESOURCE_MEM, - }, -}; - -static struct smc91x_platdata viper_smc91x_info = { - .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, - .leda = RPC_LED_100_10, - .ledb = RPC_LED_TX_RX, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = -1, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &viper_smc91x_info, - }, -}; - -/* i2c */ -static struct i2c_gpio_platform_data i2c_bus_data = { - .sda_pin = VIPER_RTC_I2C_SDA_GPIO, - .scl_pin = VIPER_RTC_I2C_SCL_GPIO, - .udelay = 10, - .timeout = HZ, -}; - -static struct platform_device i2c_bus_device = { - .name = "i2c-gpio", - .id = 1, /* pxa2xx-i2c is bus 0, so start at 1 */ - .dev = { - .platform_data = &i2c_bus_data, - } -}; - -static struct i2c_board_info __initdata viper_i2c_devices[] = { - { - I2C_BOARD_INFO("ds1338", 0x68), - }, -}; - -/* - * Serial configuration: - * You can either have the standard PXA ports driven by the PXA driver, - * or all the ports (PXA + 16850) driven by the 8250 driver. - * Choose your poison. - */ - -static struct resource viper_serial_resources[] = { -#ifndef CONFIG_SERIAL_PXA - { - .start = 0x40100000, - .end = 0x4010001f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x40200000, - .end = 0x4020001f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x40700000, - .end = 0x4070001f, - .flags = IORESOURCE_MEM, - }, - { - .start = VIPER_UARTA_PHYS, - .end = VIPER_UARTA_PHYS + 0xf, - .flags = IORESOURCE_MEM, - }, - { - .start = VIPER_UARTB_PHYS, - .end = VIPER_UARTB_PHYS + 0xf, - .flags = IORESOURCE_MEM, - }, -#else - { - 0, - }, -#endif -}; - -static struct plat_serial8250_port serial_platform_data[] = { -#ifndef CONFIG_SERIAL_PXA - /* Internal UARTs */ - { - .membase = (void *)&FFUART, - .mapbase = __PREG(FFUART), - .irq = IRQ_FFUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { - .membase = (void *)&BTUART, - .mapbase = __PREG(BTUART), - .irq = IRQ_BTUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { - .membase = (void *)&STUART, - .mapbase = __PREG(STUART), - .irq = IRQ_STUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - /* External UARTs */ - { - .mapbase = VIPER_UARTA_PHYS, - .irq = PXA_GPIO_TO_IRQ(VIPER_UARTA_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 1843200, - .regshift = 1, - .iotype = UPIO_MEM, - .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP | - UPF_SKIP_TEST, - }, - { - .mapbase = VIPER_UARTB_PHYS, - .irq = PXA_GPIO_TO_IRQ(VIPER_UARTB_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 1843200, - .regshift = 1, - .iotype = UPIO_MEM, - .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP | - UPF_SKIP_TEST, - }, -#endif - { }, -}; - -static struct platform_device serial_device = { - .name = "serial8250", - .id = 0, - .dev = { - .platform_data = serial_platform_data, - }, - .num_resources = ARRAY_SIZE(viper_serial_resources), - .resource = viper_serial_resources, -}; - -/* USB */ -static void isp116x_delay(struct device *dev, int delay) -{ - ndelay(delay); -} - -static struct resource isp116x_resources[] = { - [0] = { /* DATA */ - .start = VIPER_USB_PHYS + 0, - .end = VIPER_USB_PHYS + 1, - .flags = IORESOURCE_MEM, - }, - [1] = { /* ADDR */ - .start = VIPER_USB_PHYS + 2, - .end = VIPER_USB_PHYS + 3, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(VIPER_USB_GPIO), - .end = PXA_GPIO_TO_IRQ(VIPER_USB_GPIO), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - }, -}; - -/* (DataBusWidth16|AnalogOCEnable|DREQOutputPolarity|DownstreamPort15KRSel ) */ -static struct isp116x_platform_data isp116x_platform_data = { - /* Enable internal resistors on downstream ports */ - .sel15Kres = 1, - /* On-chip overcurrent protection */ - .oc_enable = 1, - /* INT output polarity */ - .int_act_high = 1, - /* INT edge or level triggered */ - .int_edge_triggered = 0, - - /* WAKEUP pin connected - NOT SUPPORTED */ - /* .remote_wakeup_connected = 0, */ - /* Wakeup by devices on usb bus enabled */ - .remote_wakeup_enable = 0, - .delay = isp116x_delay, -}; - -static struct platform_device isp116x_device = { - .name = "isp116x-hcd", - .id = -1, - .num_resources = ARRAY_SIZE(isp116x_resources), - .resource = isp116x_resources, - .dev = { - .platform_data = &isp116x_platform_data, - }, - -}; - -/* MTD */ -static struct resource mtd_resources[] = { - [0] = { /* RedBoot config + filesystem flash */ - .start = VIPER_FLASH_PHYS, - .end = VIPER_FLASH_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { /* Boot flash */ - .start = VIPER_BOOT_PHYS, - .end = VIPER_BOOT_PHYS + SZ_1M - 1, - .flags = IORESOURCE_MEM, - }, - [2] = { /* - * SRAM size is actually 256KB, 8bits, with a sparse mapping - * (each byte is on a 16bit boundary). - */ - .start = _VIPER_SRAM_BASE, - .end = _VIPER_SRAM_BASE + SZ_512K - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct mtd_partition viper_boot_flash_partition = { - .name = "RedBoot", - .size = SZ_1M, - .offset = 0, - .mask_flags = MTD_WRITEABLE, /* force R/O */ -}; - -static struct physmap_flash_data viper_flash_data[] = { - [0] = { - .width = 2, - .parts = NULL, - .nr_parts = 0, - }, - [1] = { - .width = 2, - .parts = &viper_boot_flash_partition, - .nr_parts = 1, - }, -}; - -static struct platform_device viper_mtd_devices[] = { - [0] = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = &viper_flash_data[0], - }, - .resource = &mtd_resources[0], - .num_resources = 1, - }, - [1] = { - .name = "physmap-flash", - .id = 1, - .dev = { - .platform_data = &viper_flash_data[1], - }, - .resource = &mtd_resources[1], - .num_resources = 1, - }, -}; - -static struct platform_device *viper_devs[] __initdata = { - &smc91x_device, - &i2c_bus_device, - &serial_device, - &isp116x_device, - &viper_mtd_devices[0], - &viper_mtd_devices[1], - &viper_backlight_device, - &viper_pcmcia_device, -}; - -static mfp_cfg_t viper_pin_config[] __initdata = { - /* Chip selects */ - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO79_nCS_3, - GPIO80_nCS_4, - GPIO33_nCS_5, - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - /* FP Backlight */ - GPIO9_GPIO, /* VIPER_BCKLIGHT_EN_GPIO */ - GPIO10_GPIO, /* VIPER_LCD_EN_GPIO */ - GPIO16_PWM0_OUT, - - /* Ethernet PHY Ready */ - GPIO18_RDY, - - /* Serial shutdown */ - GPIO12_GPIO | MFP_LPM_DRIVE_HIGH, /* VIPER_UART_SHDN_GPIO */ - - /* Compact-Flash / PC104 */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO52_nPCE_1, - GPIO53_nPCE_2, - GPIO54_nPSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO8_GPIO, /* VIPER_CF_RDY_GPIO */ - GPIO32_GPIO, /* VIPER_CF_CD_GPIO */ - GPIO82_GPIO, /* VIPER_CF_POWER_GPIO */ - - /* Integrated UPS control */ - GPIO20_GPIO, /* VIPER_UPS_GPIO */ - - /* Vcc regulator control */ - GPIO6_GPIO, /* VIPER_PSU_DATA_GPIO */ - GPIO11_GPIO, /* VIPER_PSU_CLK_GPIO */ - GPIO19_GPIO, /* VIPER_PSU_nCS_LD_GPIO */ - - /* i2c busses */ - GPIO26_GPIO, /* VIPER_TPM_I2C_SDA_GPIO */ - GPIO27_GPIO, /* VIPER_TPM_I2C_SCL_GPIO */ - GPIO83_GPIO, /* VIPER_RTC_I2C_SDA_GPIO */ - GPIO84_GPIO, /* VIPER_RTC_I2C_SCL_GPIO */ - - /* PC/104 Interrupt */ - GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, /* VIPER_CPLD_GPIO */ -}; - -static unsigned long viper_tpm; - -static int __init viper_tpm_setup(char *str) -{ - strict_strtoul(str, 10, &viper_tpm); - return 1; -} - -__setup("tpm=", viper_tpm_setup); - -static void __init viper_tpm_init(void) -{ - struct platform_device *tpm_device; - struct i2c_gpio_platform_data i2c_tpm_data = { - .sda_pin = VIPER_TPM_I2C_SDA_GPIO, - .scl_pin = VIPER_TPM_I2C_SCL_GPIO, - .udelay = 10, - .timeout = HZ, - }; - char *errstr; - - /* Allocate TPM i2c bus if requested */ - if (!viper_tpm) - return; - - tpm_device = platform_device_alloc("i2c-gpio", 2); - if (tpm_device) { - if (!platform_device_add_data(tpm_device, - &i2c_tpm_data, - sizeof(i2c_tpm_data))) { - if (platform_device_add(tpm_device)) { - errstr = "register TPM i2c bus"; - goto error_free_tpm; - } - } else { - errstr = "allocate TPM i2c bus data"; - goto error_free_tpm; - } - } else { - errstr = "allocate TPM i2c device"; - goto error_tpm; - } - - return; - -error_free_tpm: - kfree(tpm_device); -error_tpm: - pr_err("viper: Couldn't %s, giving up\n", errstr); -} - -static void __init viper_init_vcore_gpios(void) -{ - if (gpio_request(VIPER_PSU_DATA_GPIO, "PSU data")) - goto err_request_data; - - if (gpio_request(VIPER_PSU_CLK_GPIO, "PSU clock")) - goto err_request_clk; - - if (gpio_request(VIPER_PSU_nCS_LD_GPIO, "PSU cs")) - goto err_request_cs; - - if (gpio_direction_output(VIPER_PSU_DATA_GPIO, 0) || - gpio_direction_output(VIPER_PSU_CLK_GPIO, 0) || - gpio_direction_output(VIPER_PSU_nCS_LD_GPIO, 0)) - goto err_dir; - - /* c/should assume redboot set the correct level ??? */ - viper_set_core_cpu_voltage(get_clk_frequency_khz(0), 1); - - return; - -err_dir: - gpio_free(VIPER_PSU_nCS_LD_GPIO); -err_request_cs: - gpio_free(VIPER_PSU_CLK_GPIO); -err_request_clk: - gpio_free(VIPER_PSU_DATA_GPIO); -err_request_data: - pr_err("viper: Failed to setup vcore control GPIOs\n"); -} - -static void __init viper_init_serial_gpio(void) -{ - if (gpio_request(VIPER_UART_SHDN_GPIO, "UARTs shutdown")) - goto err_request; - - if (gpio_direction_output(VIPER_UART_SHDN_GPIO, 0)) - goto err_dir; - - return; - -err_dir: - gpio_free(VIPER_UART_SHDN_GPIO); -err_request: - pr_err("viper: Failed to setup UART shutdown GPIO\n"); -} - -#ifdef CONFIG_CPU_FREQ -static int viper_cpufreq_notifier(struct notifier_block *nb, - unsigned long val, void *data) -{ - struct cpufreq_freqs *freq = data; - - /* TODO: Adjust timings??? */ - - switch (val) { - case CPUFREQ_PRECHANGE: - if (freq->old < freq->new) { - /* we are getting faster so raise the voltage - * before we change freq */ - viper_set_core_cpu_voltage(freq->new, 0); - } - break; - case CPUFREQ_POSTCHANGE: - if (freq->old > freq->new) { - /* we are slowing down so drop the power - * after we change freq */ - viper_set_core_cpu_voltage(freq->new, 0); - } - break; - case CPUFREQ_RESUMECHANGE: - viper_set_core_cpu_voltage(freq->new, 0); - break; - default: - /* ignore */ - break; - } - - return 0; -} - -static struct notifier_block viper_cpufreq_notifier_block = { - .notifier_call = viper_cpufreq_notifier -}; - -static void __init viper_init_cpufreq(void) -{ - if (cpufreq_register_notifier(&viper_cpufreq_notifier_block, - CPUFREQ_TRANSITION_NOTIFIER)) - pr_err("viper: Failed to setup cpufreq notifier\n"); -} -#else -static inline void viper_init_cpufreq(void) {} -#endif - -static void viper_power_off(void) -{ - pr_notice("Shutting off UPS\n"); - gpio_set_value(VIPER_UPS_GPIO, 1); - /* Spin to death... */ - while (1); -} - -static void __init viper_init(void) -{ - u8 version; - - pm_power_off = viper_power_off; - - pxa2xx_mfp_config(ARRAY_AND_SIZE(viper_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - /* Wake-up serial console */ - viper_init_serial_gpio(); - - pxa_set_fb_info(NULL, &fb_info); - - /* v1 hardware cannot use the datacs line */ - version = viper_hw_version(); - if (version == 0) - smc91x_device.num_resources--; - - pxa_set_i2c_info(NULL); - platform_add_devices(viper_devs, ARRAY_SIZE(viper_devs)); - - viper_init_vcore_gpios(); - viper_init_cpufreq(); - - register_syscore_ops(&viper_cpu_syscore_ops); - - if (version) { - pr_info("viper: hardware v%di%d detected. " - "CPLD revision %d.\n", - VIPER_BOARD_VERSION(version), - VIPER_BOARD_ISSUE(version), - VIPER_CPLD_REVISION(version)); - system_rev = (VIPER_BOARD_VERSION(version) << 8) | - (VIPER_BOARD_ISSUE(version) << 4) | - VIPER_CPLD_REVISION(version); - } else { - pr_info("viper: No version register.\n"); - } - - i2c_register_board_info(1, ARRAY_AND_SIZE(viper_i2c_devices)); - - viper_tpm_init(); - pxa_set_ac97_info(NULL); -} - -static struct map_desc viper_io_desc[] __initdata = { - { - .virtual = VIPER_CPLD_BASE, - .pfn = __phys_to_pfn(VIPER_CPLD_PHYS), - .length = 0x00300000, - .type = MT_DEVICE, - }, - { - .virtual = VIPER_PC104IO_BASE, - .pfn = __phys_to_pfn(0x30000000), - .length = 0x00800000, - .type = MT_DEVICE, - }, -}; - -static void __init viper_map_io(void) -{ - pxa25x_map_io(); - - iotable_init(viper_io_desc, ARRAY_SIZE(viper_io_desc)); - - PCFR |= PCFR_OPDE; -} - -MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC") - /* Maintainer: Marc Zyngier <maz@misterjones.org> */ - .atag_offset = 0x100, - .map_io = viper_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = viper_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .init_machine = viper_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/vpac270.c b/ANDROID_3.4.5/arch/arm/mach-pxa/vpac270.c deleted file mode 100644 index c57ab636..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/vpac270.c +++ /dev/null @@ -1,727 +0,0 @@ -/* - * Hardware definitions for Voipac PXA270 - * - * Copyright (C) 2010 - * Marek Vasut <marek.vasut@gmail.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - */ - -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/gpio.h> -#include <linux/usb/gpio_vbus.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/mtd/onenand.h> -#include <linux/dm9000.h> -#include <linux/ucb1400.h> -#include <linux/ata_platform.h> -#include <linux/regulator/max1586.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/audio.h> -#include <mach/vpac270.h> -#include <mach/mmc.h> -#include <mach/pxafb.h> -#include <mach/ohci.h> -#include <mach/pxa27x-udc.h> -#include <mach/udc.h> -#include <mach/pata_pxa.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long vpac270_pin_config[] __initdata = { - /* MMC */ - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - GPIO53_GPIO, /* SD detect */ - GPIO52_GPIO, /* SD r/o switch */ - - /* GPIO KEYS */ - GPIO1_GPIO, /* USER BTN */ - - /* LEDs */ - GPIO15_GPIO, /* orange led */ - - /* FFUART */ - GPIO34_FFUART_RXD, - GPIO39_FFUART_TXD, - GPIO27_FFUART_RTS, - GPIO100_FFUART_CTS, - GPIO33_FFUART_DSR, - GPIO40_FFUART_DTR, - GPIO10_FFUART_DCD, - GPIO38_FFUART_RI, - - /* LCD */ - GPIO58_LCD_LDD_0, - GPIO59_LCD_LDD_1, - GPIO60_LCD_LDD_2, - GPIO61_LCD_LDD_3, - GPIO62_LCD_LDD_4, - GPIO63_LCD_LDD_5, - GPIO64_LCD_LDD_6, - GPIO65_LCD_LDD_7, - GPIO66_LCD_LDD_8, - GPIO67_LCD_LDD_9, - GPIO68_LCD_LDD_10, - GPIO69_LCD_LDD_11, - GPIO70_LCD_LDD_12, - GPIO71_LCD_LDD_13, - GPIO72_LCD_LDD_14, - GPIO73_LCD_LDD_15, - GPIO86_LCD_LDD_16, - GPIO87_LCD_LDD_17, - GPIO74_LCD_FCLK, - GPIO75_LCD_LCLK, - GPIO76_LCD_PCLK, - GPIO77_LCD_BIAS, - - /* PCMCIA */ - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO55_nPREG, - GPIO57_nIOIS16, - GPIO56_nPWAIT, - GPIO104_PSKTSEL, - GPIO84_GPIO, /* PCMCIA CD */ - GPIO35_GPIO, /* PCMCIA RDY */ - GPIO107_GPIO, /* PCMCIA PPEN */ - GPIO11_GPIO, /* PCMCIA RESET */ - GPIO17_GPIO, /* CF CD */ - GPIO12_GPIO, /* CF RDY */ - GPIO16_GPIO, /* CF RESET */ - - /* UHC */ - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - GPIO119_USBH2_PWR, - GPIO120_USBH2_PEN, - - /* UDC */ - GPIO41_GPIO, - - /* Ethernet */ - GPIO114_GPIO, /* IRQ */ - - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - GPIO95_AC97_nRESET, - GPIO98_AC97_SYSCLK, - GPIO113_GPIO, /* TS IRQ */ - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* IDE */ - GPIO36_GPIO, /* IDE IRQ */ - GPIO80_DREQ_1, -}; - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct mtd_partition vpac270_nor_partitions[] = { - { - .name = "Flash", - .offset = 0x00000000, - .size = MTDPART_SIZ_FULL, - } -}; - -static struct physmap_flash_data vpac270_flash_data[] = { - { - .width = 2, /* bankwidth in bytes */ - .parts = vpac270_nor_partitions, - .nr_parts = ARRAY_SIZE(vpac270_nor_partitions) - } -}; - -static struct resource vpac270_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device vpac270_flash = { - .name = "physmap-flash", - .id = 0, - .resource = &vpac270_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = vpac270_flash_data, - }, -}; -static void __init vpac270_nor_init(void) -{ - platform_device_register(&vpac270_flash); -} -#else -static inline void vpac270_nor_init(void) {} -#endif - -/****************************************************************************** - * OneNAND Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_ONENAND) || defined(CONFIG_MTD_ONENAND_MODULE) -static struct mtd_partition vpac270_onenand_partitions[] = { - { - .name = "Flash", - .offset = 0x00000000, - .size = MTDPART_SIZ_FULL, - } -}; - -static struct onenand_platform_data vpac270_onenand_info = { - .parts = vpac270_onenand_partitions, - .nr_parts = ARRAY_SIZE(vpac270_onenand_partitions), -}; - -static struct resource vpac270_onenand_resources[] = { - [0] = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_1M, - .flags = IORESOURCE_MEM, - }, -}; - -static struct platform_device vpac270_onenand = { - .name = "onenand-flash", - .id = -1, - .resource = vpac270_onenand_resources, - .num_resources = ARRAY_SIZE(vpac270_onenand_resources), - .dev = { - .platform_data = &vpac270_onenand_info, - }, -}; - -static void __init vpac270_onenand_init(void) -{ - platform_device_register(&vpac270_onenand); -} -#else -static void __init vpac270_onenand_init(void) {} -#endif - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data vpac270_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_power = -1, - .gpio_card_detect = GPIO53_VPAC270_SD_DETECT_N, - .gpio_card_ro = GPIO52_VPAC270_SD_READONLY, - .detect_delay_ms = 200, -}; - -static void __init vpac270_mmc_init(void) -{ - pxa_set_mci_info(&vpac270_mci_platform_data); -} -#else -static inline void vpac270_mmc_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button vpac270_pxa_buttons[] = { - {KEY_POWER, GPIO1_VPAC270_USER_BTN, 0, "USER BTN"}, -}; - -static struct gpio_keys_platform_data vpac270_pxa_keys_data = { - .buttons = vpac270_pxa_buttons, - .nbuttons = ARRAY_SIZE(vpac270_pxa_buttons), -}; - -static struct platform_device vpac270_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &vpac270_pxa_keys_data, - }, -}; - -static void __init vpac270_keys_init(void) -{ - platform_device_register(&vpac270_pxa_keys); -} -#else -static inline void vpac270_keys_init(void) {} -#endif - -/****************************************************************************** - * LED - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -struct gpio_led vpac270_gpio_leds[] = { -{ - .name = "vpac270:orange:user", - .default_trigger = "none", - .gpio = GPIO15_VPAC270_LED_ORANGE, - .active_low = 1, -} -}; - -static struct gpio_led_platform_data vpac270_gpio_led_info = { - .leds = vpac270_gpio_leds, - .num_leds = ARRAY_SIZE(vpac270_gpio_leds), -}; - -static struct platform_device vpac270_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &vpac270_gpio_led_info, - } -}; - -static void __init vpac270_leds_init(void) -{ - platform_device_register(&vpac270_leds); -} -#else -static inline void vpac270_leds_init(void) {} -#endif - -/****************************************************************************** - * USB Host - ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static int vpac270_ohci_init(struct device *dev) -{ - UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; - return 0; -} - -static struct pxaohci_platform_data vpac270_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT2 | - POWER_CONTROL_LOW | POWER_SENSE_LOW, - .init = vpac270_ohci_init, -}; - -static void __init vpac270_uhc_init(void) -{ - pxa_set_ohci_info(&vpac270_ohci_info); -} -#else -static inline void vpac270_uhc_init(void) {} -#endif - -/****************************************************************************** - * USB Gadget - ******************************************************************************/ -#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) -static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = { - .gpio_vbus = GPIO41_VPAC270_UDC_DETECT, - .gpio_pullup = -1, -}; - -static struct platform_device vpac270_gpio_vbus = { - .name = "gpio-vbus", - .id = -1, - .dev = { - .platform_data = &vpac270_gpio_vbus_info, - }, -}; - -static void vpac270_udc_command(int cmd) -{ - if (cmd == PXA2XX_UDC_CMD_CONNECT) - UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE; - else if (cmd == PXA2XX_UDC_CMD_DISCONNECT) - UP2OCR = UP2OCR_HXOE; -} - -static struct pxa2xx_udc_mach_info vpac270_udc_info __initdata = { - .udc_command = vpac270_udc_command, - .gpio_pullup = -1, -}; - -static void __init vpac270_udc_init(void) -{ - pxa_set_udc_info(&vpac270_udc_info); - platform_device_register(&vpac270_gpio_vbus); -} -#else -static inline void vpac270_udc_init(void) {} -#endif - -/****************************************************************************** - * Ethernet - ******************************************************************************/ -#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) -static struct resource vpac270_dm9000_resources[] = { - [0] = { - .start = PXA_CS2_PHYS + 0x300, - .end = PXA_CS2_PHYS + 0x303, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = PXA_CS2_PHYS + 0x304, - .end = PXA_CS2_PHYS + 0x343, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(GPIO114_VPAC270_ETH_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO114_VPAC270_ETH_IRQ), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - }, -}; - -static struct dm9000_plat_data vpac270_dm9000_platdata = { - .flags = DM9000_PLATF_32BITONLY, -}; - -static struct platform_device vpac270_dm9000_device = { - .name = "dm9000", - .id = -1, - .num_resources = ARRAY_SIZE(vpac270_dm9000_resources), - .resource = vpac270_dm9000_resources, - .dev = { - .platform_data = &vpac270_dm9000_platdata, - } -}; - -static void __init vpac270_eth_init(void) -{ - platform_device_register(&vpac270_dm9000_device); -} -#else -static inline void vpac270_eth_init(void) {} -#endif - -/****************************************************************************** - * Audio and Touchscreen - ******************************************************************************/ -#if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ - defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) -static pxa2xx_audio_ops_t vpac270_ac97_pdata = { - .reset_gpio = 95, -}; - -static struct ucb1400_pdata vpac270_ucb1400_pdata = { - .irq = PXA_GPIO_TO_IRQ(GPIO113_VPAC270_TS_IRQ), -}; - -static struct platform_device vpac270_ucb1400_device = { - .name = "ucb1400_core", - .id = -1, - .dev = { - .platform_data = &vpac270_ucb1400_pdata, - }, -}; - -static void __init vpac270_ts_init(void) -{ - pxa_set_ac97_info(&vpac270_ac97_pdata); - platform_device_register(&vpac270_ucb1400_device); -} -#else -static inline void vpac270_ts_init(void) {} -#endif - -/****************************************************************************** - * RTC - ******************************************************************************/ -#if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE) -static struct i2c_board_info __initdata vpac270_i2c_devs[] = { - { - I2C_BOARD_INFO("ds1339", 0x68), - }, -}; - -static void __init vpac270_rtc_init(void) -{ - i2c_register_board_info(0, ARRAY_AND_SIZE(vpac270_i2c_devs)); -} -#else -static inline void vpac270_rtc_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info vpac270_lcd_modes[] = { -{ - .pixclock = 57692, - .xres = 640, - .yres = 480, - .bpp = 32, - .depth = 18, - - .left_margin = 144, - .right_margin = 32, - .upper_margin = 13, - .lower_margin = 30, - - .hsync_len = 32, - .vsync_len = 2, - - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}, { /* CRT 640x480 */ - .pixclock = 35000, - .xres = 640, - .yres = 480, - .bpp = 16, - .depth = 16, - - .left_margin = 96, - .right_margin = 48, - .upper_margin = 33, - .lower_margin = 10, - - .hsync_len = 48, - .vsync_len = 1, - - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}, { /* CRT 800x600 H=30kHz V=48HZ */ - .pixclock = 25000, - .xres = 800, - .yres = 600, - .bpp = 16, - .depth = 16, - - .left_margin = 50, - .right_margin = 1, - .upper_margin = 21, - .lower_margin = 12, - - .hsync_len = 8, - .vsync_len = 1, - - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -}, { /* CRT 1024x768 H=40kHz V=50Hz */ - .pixclock = 15000, - .xres = 1024, - .yres = 768, - .bpp = 16, - .depth = 16, - - .left_margin = 220, - .right_margin = 8, - .upper_margin = 33, - .lower_margin = 2, - - .hsync_len = 48, - .vsync_len = 1, - - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -} -}; - -static struct pxafb_mach_info vpac270_lcd_screen = { - .modes = vpac270_lcd_modes, - .num_modes = ARRAY_SIZE(vpac270_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_18BPP, -}; - -static void vpac270_lcd_power(int on, struct fb_var_screeninfo *info) -{ - gpio_set_value(GPIO81_VPAC270_BKL_ON, on); -} - -static void __init vpac270_lcd_init(void) -{ - int ret; - - ret = gpio_request(GPIO81_VPAC270_BKL_ON, "BKL-ON"); - if (ret) { - pr_err("Requesting BKL-ON GPIO failed!\n"); - goto err; - } - - ret = gpio_direction_output(GPIO81_VPAC270_BKL_ON, 1); - if (ret) { - pr_err("Setting BKL-ON GPIO direction failed!\n"); - goto err2; - } - - vpac270_lcd_screen.pxafb_lcd_power = vpac270_lcd_power; - pxa_set_fb_info(NULL, &vpac270_lcd_screen); - return; - -err2: - gpio_free(GPIO81_VPAC270_BKL_ON); -err: - return; -} -#else -static inline void vpac270_lcd_init(void) {} -#endif - -/****************************************************************************** - * PATA IDE - ******************************************************************************/ -#if defined(CONFIG_PATA_PXA) || defined(CONFIG_PATA_PXA_MODULE) -static struct pata_pxa_pdata vpac270_pata_pdata = { - .reg_shift = 1, - .dma_dreq = 1, - .irq_flags = IRQF_TRIGGER_RISING, -}; - -static struct resource vpac270_ide_resources[] = { - [0] = { /* I/O Base address */ - .start = PXA_CS3_PHYS + 0x120, - .end = PXA_CS3_PHYS + 0x13f, - .flags = IORESOURCE_MEM - }, - [1] = { /* CTL Base address */ - .start = PXA_CS3_PHYS + 0x15c, - .end = PXA_CS3_PHYS + 0x15f, - .flags = IORESOURCE_MEM - }, - [2] = { /* DMA Base address */ - .start = PXA_CS3_PHYS + 0x20, - .end = PXA_CS3_PHYS + 0x2f, - .flags = IORESOURCE_DMA - }, - [3] = { /* IDE IRQ pin */ - .start = PXA_GPIO_TO_IRQ(GPIO36_VPAC270_IDE_IRQ), - .end = PXA_GPIO_TO_IRQ(GPIO36_VPAC270_IDE_IRQ), - .flags = IORESOURCE_IRQ - } -}; - -static struct platform_device vpac270_ide_device = { - .name = "pata_pxa", - .num_resources = ARRAY_SIZE(vpac270_ide_resources), - .resource = vpac270_ide_resources, - .dev = { - .platform_data = &vpac270_pata_pdata, - .coherent_dma_mask = 0xffffffff, - } -}; - -static void __init vpac270_ide_init(void) -{ - platform_device_register(&vpac270_ide_device); -} -#else -static inline void vpac270_ide_init(void) {} -#endif - -/****************************************************************************** - * Core power regulator - ******************************************************************************/ -#if defined(CONFIG_REGULATOR_MAX1586) || \ - defined(CONFIG_REGULATOR_MAX1586_MODULE) -static struct regulator_consumer_supply vpac270_max1587a_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data vpac270_max1587a_v3_info = { - .constraints = { - .name = "vcc_core range", - .min_uV = 900000, - .max_uV = 1705000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .consumer_supplies = vpac270_max1587a_consumers, - .num_consumer_supplies = ARRAY_SIZE(vpac270_max1587a_consumers), -}; - -static struct max1586_subdev_data vpac270_max1587a_subdevs[] = { - { - .name = "vcc_core", - .id = MAX1586_V3, - .platform_data = &vpac270_max1587a_v3_info, - } -}; - -static struct max1586_platform_data vpac270_max1587a_info = { - .subdevs = vpac270_max1587a_subdevs, - .num_subdevs = ARRAY_SIZE(vpac270_max1587a_subdevs), - .v3_gain = MAX1586_GAIN_R24_3k32, /* 730..1550 mV */ -}; - -static struct i2c_board_info __initdata vpac270_pi2c_board_info[] = { - { - I2C_BOARD_INFO("max1586", 0x14), - .platform_data = &vpac270_max1587a_info, - }, -}; - -static void __init vpac270_pmic_init(void) -{ - i2c_register_board_info(1, ARRAY_AND_SIZE(vpac270_pi2c_board_info)); -} -#else -static inline void vpac270_pmic_init(void) {} -#endif - - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init vpac270_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(vpac270_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_i2c_info(NULL); - pxa27x_set_i2c_power_info(NULL); - - vpac270_pmic_init(); - vpac270_lcd_init(); - vpac270_mmc_init(); - vpac270_nor_init(); - vpac270_onenand_init(); - vpac270_leds_init(); - vpac270_keys_init(); - vpac270_uhc_init(); - vpac270_udc_init(); - vpac270_eth_init(); - vpac270_ts_init(); - vpac270_rtc_init(); - vpac270_ide_init(); -} - -MACHINE_START(VPAC270, "Voipac PXA270") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = vpac270_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/xcep.c b/ANDROID_3.4.5/arch/arm/mach-pxa/xcep.c deleted file mode 100644 index 4275713c..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/xcep.c +++ /dev/null @@ -1,191 +0,0 @@ -/* linux/arch/arm/mach-pxa/xcep.c - * - * Support for the Iskratel Electronics XCEP platform as used in - * the Libera instruments from Instrumentation Technologies. - * - * Author: Ales Bardorfer <ales@i-tech.si> - * Contributions by: Abbott, MG (Michael) <michael.abbott@diamond.ac.uk> - * Contributions by: Matej Kenda <matej.kenda@i-tech.si> - * Created: June 2006 - * Copyright: (C) 2006-2009 Instrumentation Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/smc91x.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/irq.h> -#include <asm/mach/map.h> - -#include <mach/hardware.h> -#include <mach/pxa25x.h> -#include <mach/smemc.h> - -#include "generic.h" - -#define XCEP_ETH_PHYS (PXA_CS3_PHYS + 0x00000300) -#define XCEP_ETH_PHYS_END (PXA_CS3_PHYS + 0x000fffff) -#define XCEP_ETH_ATTR (PXA_CS3_PHYS + 0x02000000) -#define XCEP_ETH_ATTR_END (PXA_CS3_PHYS + 0x020fffff) -#define XCEP_ETH_IRQ IRQ_GPIO0 - -/* XCEP CPLD base */ -#define XCEP_CPLD_BASE 0xf0000000 - - -/* Flash partitions. */ - -static struct mtd_partition xcep_partitions[] = { - { - .name = "Bootloader", - .size = 0x00040000, - .offset = 0, - .mask_flags = MTD_WRITEABLE - }, { - .name = "Bootloader ENV", - .size = 0x00040000, - .offset = 0x00040000, - .mask_flags = MTD_WRITEABLE - }, { - .name = "Kernel", - .size = 0x00100000, - .offset = 0x00080000, - }, { - .name = "Rescue fs", - .size = 0x00280000, - .offset = 0x00180000, - }, { - .name = "Filesystem", - .size = MTDPART_SIZ_FULL, - .offset = 0x00400000 - } -}; - -static struct physmap_flash_data xcep_flash_data[] = { - { - .width = 4, /* bankwidth in bytes */ - .parts = xcep_partitions, - .nr_parts = ARRAY_SIZE(xcep_partitions) - } -}; - -static struct resource flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_32M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device flash_device = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = xcep_flash_data, - }, - .resource = &flash_resource, - .num_resources = 1, -}; - - - -/* SMC LAN91C111 network controller. */ - -static struct resource smc91x_resources[] = { - [0] = { - .name = "smc91x-regs", - .start = XCEP_ETH_PHYS, - .end = XCEP_ETH_PHYS_END, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = XCEP_ETH_IRQ, - .end = XCEP_ETH_IRQ, - .flags = IORESOURCE_IRQ, - }, - [2] = { - .name = "smc91x-attrib", - .start = XCEP_ETH_ATTR, - .end = XCEP_ETH_ATTR_END, - .flags = IORESOURCE_MEM, - }, -}; - -static struct smc91x_platdata xcep_smc91x_info = { - .flags = SMC91X_USE_32BIT | SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = -1, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &xcep_smc91x_info, - }, -}; - - -static struct platform_device *devices[] __initdata = { - &flash_device, - &smc91x_device, -}; - - -/* We have to state that there are HWMON devices on the I2C bus on XCEP. - * Drivers for HWMON verify capabilities of the adapter when loading and - * refuse to attach if the adapter doesn't support HWMON class of devices. */ -static struct i2c_pxa_platform_data xcep_i2c_platform_data = { - .class = I2C_CLASS_HWMON -}; - - -static mfp_cfg_t xcep_pin_config[] __initdata = { - GPIO79_nCS_3, /* SMC 91C111 chip select. */ - GPIO80_nCS_4, /* CPLD chip select. */ - /* SSP communication to MSP430 */ - GPIO23_SSP1_SCLK, - GPIO24_SSP1_SFRM, - GPIO25_SSP1_TXD, - GPIO26_SSP1_RXD, - GPIO27_SSP1_EXTCLK -}; - -static void __init xcep_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(xcep_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - pxa_set_hwuart_info(NULL); - - /* See Intel XScale Developer's Guide for details */ - /* Set RDF and RDN to appropriate values (chip select 3 (smc91x)) */ - __raw_writel((__raw_readl(MSC1) & 0xffff) | 0xD5540000, MSC1); - /* Set RDF and RDN to appropriate values (chip select 5 (fpga)) */ - __raw_writel((__raw_readl(MSC2) & 0xffff) | 0x72A00000, MSC2); - - platform_add_devices(ARRAY_AND_SIZE(devices)); - pxa_set_i2c_info(&xcep_i2c_platform_data); -} - -MACHINE_START(XCEP, "Iskratel XCEP") - .atag_offset = 0x100, - .init_machine = xcep_init, - .map_io = pxa25x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa25x_init_irq, - .handle_irq = pxa25x_handle_irq, - .timer = &pxa_timer, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/z2.c b/ANDROID_3.4.5/arch/arm/mach-pxa/z2.c deleted file mode 100644 index fa861997..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/z2.c +++ /dev/null @@ -1,730 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/z2.c - * - * Support for the Zipit Z2 Handheld device. - * - * Copyright (C) 2009-2010 Marek Vasut <marek.vasut@gmail.com> - * - * Based on research and code by: Ken McGuire - * Based on mainstone.c as modified for the Zipit Z2. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/platform_device.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/pwm_backlight.h> -#include <linux/z2_battery.h> -#include <linux/dma-mapping.h> -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/spi/libertas_spi.h> -#include <linux/spi/lms283gf05.h> -#include <linux/power_supply.h> -#include <linux/mtd/physmap.h> -#include <linux/gpio.h> -#include <linux/gpio_keys.h> -#include <linux/delay.h> -#include <linux/regulator/machine.h> -#include <linux/i2c/pxa-i2c.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> - -#include <mach/pxa27x.h> -#include <mach/mfp-pxa27x.h> -#include <mach/z2.h> -#include <mach/pxafb.h> -#include <mach/mmc.h> -#include <plat/pxa27x_keypad.h> -#include <mach/pm.h> - -#include "generic.h" -#include "devices.h" - -/****************************************************************************** - * Pin configuration - ******************************************************************************/ -static unsigned long z2_pin_config[] = { - - /* LCD - 16bpp Active TFT */ - GPIO58_LCD_LDD_0, - GPIO59_LCD_LDD_1, - GPIO60_LCD_LDD_2, - GPIO61_LCD_LDD_3, - GPIO62_LCD_LDD_4, - GPIO63_LCD_LDD_5, - GPIO64_LCD_LDD_6, - GPIO65_LCD_LDD_7, - GPIO66_LCD_LDD_8, - GPIO67_LCD_LDD_9, - GPIO68_LCD_LDD_10, - GPIO69_LCD_LDD_11, - GPIO70_LCD_LDD_12, - GPIO71_LCD_LDD_13, - GPIO72_LCD_LDD_14, - GPIO73_LCD_LDD_15, - GPIO74_LCD_FCLK, - GPIO75_LCD_LCLK, - GPIO76_LCD_PCLK, - GPIO77_LCD_BIAS, - GPIO19_GPIO, /* LCD reset */ - GPIO88_GPIO, /* LCD chipselect */ - - /* PWM */ - GPIO115_PWM1_OUT, /* Keypad Backlight */ - GPIO11_PWM2_OUT, /* LCD Backlight */ - - /* MMC */ - GPIO32_MMC_CLK, - GPIO112_MMC_CMD, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO96_GPIO, /* SD detect */ - - /* STUART */ - GPIO46_STUART_RXD, - GPIO47_STUART_TXD, - - /* Keypad */ - GPIO100_KP_MKIN_0, - GPIO101_KP_MKIN_1, - GPIO102_KP_MKIN_2, - GPIO34_KP_MKIN_3, - GPIO38_KP_MKIN_4, - GPIO16_KP_MKIN_5, - GPIO17_KP_MKIN_6, - GPIO103_KP_MKOUT_0, - GPIO104_KP_MKOUT_1, - GPIO105_KP_MKOUT_2, - GPIO106_KP_MKOUT_3, - GPIO107_KP_MKOUT_4, - GPIO108_KP_MKOUT_5, - GPIO35_KP_MKOUT_6, - GPIO41_KP_MKOUT_7, - - /* I2C */ - GPIO117_I2C_SCL, - GPIO118_I2C_SDA, - - /* SSP1 */ - GPIO23_SSP1_SCLK, /* SSP1_SCK */ - GPIO25_SSP1_TXD, /* SSP1_TXD */ - GPIO26_SSP1_RXD, /* SSP1_RXD */ - - /* SSP2 */ - GPIO22_SSP2_SCLK, /* SSP2_SCK */ - GPIO13_SSP2_TXD, /* SSP2_TXD */ - GPIO40_SSP2_RXD, /* SSP2_RXD */ - - /* LEDs */ - GPIO10_GPIO, /* WiFi LED */ - GPIO83_GPIO, /* Charging LED */ - GPIO85_GPIO, /* Charged LED */ - - /* I2S */ - GPIO28_I2S_BITCLK_OUT, - GPIO29_I2S_SDATA_IN, - GPIO30_I2S_SDATA_OUT, - GPIO31_I2S_SYNC, - GPIO113_I2S_SYSCLK, - - /* MISC */ - GPIO0_GPIO, /* AC power detect */ - GPIO1_GPIO, /* Power button */ - GPIO37_GPIO, /* Headphone detect */ - GPIO98_GPIO, /* Lid switch */ - GPIO14_GPIO, /* WiFi Power */ - GPIO24_GPIO, /* WiFi CS */ - GPIO36_GPIO, /* WiFi IRQ */ - GPIO88_GPIO, /* LCD CS */ -}; - -/****************************************************************************** - * NOR Flash - ******************************************************************************/ -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) -static struct resource z2_flash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_8M - 1, - .flags = IORESOURCE_MEM, -}; - -static struct mtd_partition z2_flash_parts[] = { - { - .name = "U-Boot Bootloader", - .offset = 0x0, - .size = 0x40000, - }, { - .name = "U-Boot Environment", - .offset = 0x40000, - .size = 0x20000, - }, { - .name = "Flash", - .offset = 0x60000, - .size = MTDPART_SIZ_FULL, - }, -}; - -static struct physmap_flash_data z2_flash_data = { - .width = 2, - .parts = z2_flash_parts, - .nr_parts = ARRAY_SIZE(z2_flash_parts), -}; - -static struct platform_device z2_flash = { - .name = "physmap-flash", - .id = -1, - .resource = &z2_flash_resource, - .num_resources = 1, - .dev = { - .platform_data = &z2_flash_data, - }, -}; - -static void __init z2_nor_init(void) -{ - platform_device_register(&z2_flash); -} -#else -static inline void z2_nor_init(void) {} -#endif - -/****************************************************************************** - * Backlight - ******************************************************************************/ -#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) -static struct platform_pwm_backlight_data z2_backlight_data[] = { - [0] = { - /* Keypad Backlight */ - .pwm_id = 1, - .max_brightness = 1023, - .dft_brightness = 0, - .pwm_period_ns = 1260320, - }, - [1] = { - /* LCD Backlight */ - .pwm_id = 2, - .max_brightness = 1023, - .dft_brightness = 512, - .pwm_period_ns = 1260320, - }, -}; - -static struct platform_device z2_backlight_devices[2] = { - { - .name = "pwm-backlight", - .id = 0, - .dev = { - .platform_data = &z2_backlight_data[1], - }, - }, - { - .name = "pwm-backlight", - .id = 1, - .dev = { - .platform_data = &z2_backlight_data[0], - }, - }, -}; -static void __init z2_pwm_init(void) -{ - platform_device_register(&z2_backlight_devices[0]); - platform_device_register(&z2_backlight_devices[1]); -} -#else -static inline void z2_pwm_init(void) {} -#endif - -/****************************************************************************** - * Framebuffer - ******************************************************************************/ -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct pxafb_mode_info z2_lcd_modes[] = { -{ - .pixclock = 192000, - .xres = 240, - .yres = 320, - .bpp = 16, - - .left_margin = 4, - .right_margin = 8, - .upper_margin = 4, - .lower_margin = 8, - - .hsync_len = 4, - .vsync_len = 4, -}, -}; - -static struct pxafb_mach_info z2_lcd_screen = { - .modes = z2_lcd_modes, - .num_modes = ARRAY_SIZE(z2_lcd_modes), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_BIAS_ACTIVE_LOW | - LCD_ALTERNATE_MAPPING, -}; - -static void __init z2_lcd_init(void) -{ - pxa_set_fb_info(NULL, &z2_lcd_screen); -} -#else -static inline void z2_lcd_init(void) {} -#endif - -/****************************************************************************** - * SD/MMC card controller - ******************************************************************************/ -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) -static struct pxamci_platform_data z2_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, - .gpio_card_detect = GPIO96_ZIPITZ2_SD_DETECT, - .gpio_power = -1, - .gpio_card_ro = -1, - .detect_delay_ms = 200, -}; - -static void __init z2_mmc_init(void) -{ - pxa_set_mci_info(&z2_mci_platform_data); -} -#else -static inline void z2_mmc_init(void) {} -#endif - -/****************************************************************************** - * LEDs - ******************************************************************************/ -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -struct gpio_led z2_gpio_leds[] = { -{ - .name = "z2:green:wifi", - .default_trigger = "none", - .gpio = GPIO10_ZIPITZ2_LED_WIFI, - .active_low = 1, -}, { - .name = "z2:green:charged", - .default_trigger = "mmc0", - .gpio = GPIO85_ZIPITZ2_LED_CHARGED, - .active_low = 1, -}, { - .name = "z2:amber:charging", - .default_trigger = "Z2-charging-or-full", - .gpio = GPIO83_ZIPITZ2_LED_CHARGING, - .active_low = 1, -}, -}; - -static struct gpio_led_platform_data z2_gpio_led_info = { - .leds = z2_gpio_leds, - .num_leds = ARRAY_SIZE(z2_gpio_leds), -}; - -static struct platform_device z2_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &z2_gpio_led_info, - } -}; - -static void __init z2_leds_init(void) -{ - platform_device_register(&z2_leds); -} -#else -static inline void z2_leds_init(void) {} -#endif - -/****************************************************************************** - * GPIO keyboard - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int z2_matrix_keys[] = { - KEY(0, 0, KEY_OPTION), - KEY(1, 0, KEY_UP), - KEY(2, 0, KEY_DOWN), - KEY(3, 0, KEY_LEFT), - KEY(4, 0, KEY_RIGHT), - KEY(5, 0, KEY_END), - KEY(6, 0, KEY_KPPLUS), - - KEY(0, 1, KEY_HOME), - KEY(1, 1, KEY_Q), - KEY(2, 1, KEY_I), - KEY(3, 1, KEY_G), - KEY(4, 1, KEY_X), - KEY(5, 1, KEY_ENTER), - KEY(6, 1, KEY_KPMINUS), - - KEY(0, 2, KEY_PAGEUP), - KEY(1, 2, KEY_W), - KEY(2, 2, KEY_O), - KEY(3, 2, KEY_H), - KEY(4, 2, KEY_C), - KEY(5, 2, KEY_LEFTALT), - - KEY(0, 3, KEY_PAGEDOWN), - KEY(1, 3, KEY_E), - KEY(2, 3, KEY_P), - KEY(3, 3, KEY_J), - KEY(4, 3, KEY_V), - KEY(5, 3, KEY_LEFTSHIFT), - - KEY(0, 4, KEY_ESC), - KEY(1, 4, KEY_R), - KEY(2, 4, KEY_A), - KEY(3, 4, KEY_K), - KEY(4, 4, KEY_B), - KEY(5, 4, KEY_LEFTCTRL), - - KEY(0, 5, KEY_TAB), - KEY(1, 5, KEY_T), - KEY(2, 5, KEY_S), - KEY(3, 5, KEY_L), - KEY(4, 5, KEY_N), - KEY(5, 5, KEY_SPACE), - - KEY(0, 6, KEY_STOPCD), - KEY(1, 6, KEY_Y), - KEY(2, 6, KEY_D), - KEY(3, 6, KEY_BACKSPACE), - KEY(4, 6, KEY_M), - KEY(5, 6, KEY_COMMA), - - KEY(0, 7, KEY_PLAYCD), - KEY(1, 7, KEY_U), - KEY(2, 7, KEY_F), - KEY(3, 7, KEY_Z), - KEY(4, 7, KEY_SEMICOLON), - KEY(5, 7, KEY_DOT), -}; - -static struct pxa27x_keypad_platform_data z2_keypad_platform_data = { - .matrix_key_rows = 7, - .matrix_key_cols = 8, - .matrix_key_map = z2_matrix_keys, - .matrix_key_map_size = ARRAY_SIZE(z2_matrix_keys), - - .debounce_interval = 30, -}; - -static void __init z2_mkp_init(void) -{ - pxa_set_keypad_info(&z2_keypad_platform_data); -} -#else -static inline void z2_mkp_init(void) {} -#endif - -/****************************************************************************** - * GPIO keys - ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) -static struct gpio_keys_button z2_pxa_buttons[] = { - { - .code = KEY_POWER, - .gpio = GPIO1_ZIPITZ2_POWER_BUTTON, - .active_low = 0, - .desc = "Power Button", - .wakeup = 1, - .type = EV_KEY, - }, - { - .code = SW_LID, - .gpio = GPIO98_ZIPITZ2_LID_BUTTON, - .active_low = 1, - .desc = "Lid Switch", - .wakeup = 0, - .type = EV_SW, - }, -}; - -static struct gpio_keys_platform_data z2_pxa_keys_data = { - .buttons = z2_pxa_buttons, - .nbuttons = ARRAY_SIZE(z2_pxa_buttons), -}; - -static struct platform_device z2_pxa_keys = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &z2_pxa_keys_data, - }, -}; - -static void __init z2_keys_init(void) -{ - platform_device_register(&z2_pxa_keys); -} -#else -static inline void z2_keys_init(void) {} -#endif - -/****************************************************************************** - * Battery - ******************************************************************************/ -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) -static struct z2_battery_info batt_chip_info = { - .batt_I2C_bus = 0, - .batt_I2C_addr = 0x55, - .batt_I2C_reg = 2, - .charge_gpio = GPIO0_ZIPITZ2_AC_DETECT, - .min_voltage = 3475000, - .max_voltage = 4190000, - .batt_div = 59, - .batt_mult = 1000000, - .batt_tech = POWER_SUPPLY_TECHNOLOGY_LION, - .batt_name = "Z2", -}; - -static struct i2c_board_info __initdata z2_i2c_board_info[] = { - { - I2C_BOARD_INFO("aer915", 0x55), - .platform_data = &batt_chip_info, - }, { - I2C_BOARD_INFO("wm8750", 0x1b), - }, - -}; - -static void __init z2_i2c_init(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(z2_i2c_board_info)); -} -#else -static inline void z2_i2c_init(void) {} -#endif - -/****************************************************************************** - * SSP Devices - WiFi and LCD control - ******************************************************************************/ -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) -/* WiFi */ -static int z2_lbs_spi_setup(struct spi_device *spi) -{ - int ret = 0; - - ret = gpio_request(GPIO14_ZIPITZ2_WIFI_POWER, "WiFi Power"); - if (ret) - goto err; - - ret = gpio_direction_output(GPIO14_ZIPITZ2_WIFI_POWER, 1); - if (ret) - goto err2; - - /* Wait until card is powered on */ - mdelay(180); - - spi->bits_per_word = 16; - spi->mode = SPI_MODE_2, - - spi_setup(spi); - - return 0; - -err2: - gpio_free(GPIO14_ZIPITZ2_WIFI_POWER); -err: - return ret; -}; - -static int z2_lbs_spi_teardown(struct spi_device *spi) -{ - gpio_set_value(GPIO14_ZIPITZ2_WIFI_POWER, 0); - gpio_free(GPIO14_ZIPITZ2_WIFI_POWER); - - return 0; -}; - -static struct pxa2xx_spi_chip z2_lbs_chip_info = { - .rx_threshold = 8, - .tx_threshold = 8, - .timeout = 1000, - .gpio_cs = GPIO24_ZIPITZ2_WIFI_CS, -}; - -static struct libertas_spi_platform_data z2_lbs_pdata = { - .use_dummy_writes = 1, - .setup = z2_lbs_spi_setup, - .teardown = z2_lbs_spi_teardown, -}; - -/* LCD */ -static struct pxa2xx_spi_chip lms283_chip_info = { - .rx_threshold = 1, - .tx_threshold = 1, - .timeout = 64, - .gpio_cs = GPIO88_ZIPITZ2_LCD_CS, -}; - -static const struct lms283gf05_pdata lms283_pdata = { - .reset_gpio = GPIO19_ZIPITZ2_LCD_RESET, -}; - -static struct spi_board_info spi_board_info[] __initdata = { -{ - .modalias = "libertas_spi", - .platform_data = &z2_lbs_pdata, - .controller_data = &z2_lbs_chip_info, - .irq = PXA_GPIO_TO_IRQ(GPIO36_ZIPITZ2_WIFI_IRQ), - .max_speed_hz = 13000000, - .bus_num = 1, - .chip_select = 0, -}, -{ - .modalias = "lms283gf05", - .controller_data = &lms283_chip_info, - .platform_data = &lms283_pdata, - .max_speed_hz = 400000, - .bus_num = 2, - .chip_select = 0, -}, -}; - -static struct pxa2xx_spi_master pxa_ssp1_master_info = { - .clock_enable = CKEN_SSP, - .num_chipselect = 1, - .enable_dma = 1, -}; - -static struct pxa2xx_spi_master pxa_ssp2_master_info = { - .clock_enable = CKEN_SSP2, - .num_chipselect = 1, -}; - -static void __init z2_spi_init(void) -{ - pxa2xx_set_spi_info(1, &pxa_ssp1_master_info); - pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); - spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); -} -#else -static inline void z2_spi_init(void) {} -#endif - -/****************************************************************************** - * Core power regulator - ******************************************************************************/ -#if defined(CONFIG_REGULATOR_TPS65023) || \ - defined(CONFIG_REGULATOR_TPS65023_MODULE) -static struct regulator_consumer_supply z2_tps65021_consumers[] = { - { - .supply = "vcc_core", - } -}; - -static struct regulator_init_data z2_tps65021_info[] = { - { - .constraints = { - .name = "vcc_core range", - .min_uV = 800000, - .max_uV = 1600000, - .always_on = 1, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - }, - .consumer_supplies = z2_tps65021_consumers, - .num_consumer_supplies = ARRAY_SIZE(z2_tps65021_consumers), - }, { - .constraints = { - .name = "DCDC2", - .min_uV = 3300000, - .max_uV = 3300000, - .always_on = 1, - }, - }, { - .constraints = { - .name = "DCDC3", - .min_uV = 1800000, - .max_uV = 1800000, - .always_on = 1, - }, - }, { - .constraints = { - .name = "LDO1", - .min_uV = 1000000, - .max_uV = 3150000, - .always_on = 1, - }, - }, { - .constraints = { - .name = "LDO2", - .min_uV = 1050000, - .max_uV = 3300000, - .always_on = 1, - }, - } -}; - -static struct i2c_board_info __initdata z2_pi2c_board_info[] = { - { - I2C_BOARD_INFO("tps65021", 0x48), - .platform_data = &z2_tps65021_info, - }, -}; - -static void __init z2_pmic_init(void) -{ - pxa27x_set_i2c_power_info(NULL); - i2c_register_board_info(1, ARRAY_AND_SIZE(z2_pi2c_board_info)); -} -#else -static inline void z2_pmic_init(void) {} -#endif - -#ifdef CONFIG_PM -static void z2_power_off(void) -{ - /* We're using deep sleep as poweroff, so clear PSPR to ensure that - * bootloader will jump to its entry point in resume handler - */ - PSPR = 0x0; - local_irq_disable(); - pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP); - pxa27x_cpu_pm_enter(PM_SUSPEND_MEM); -} -#else -#define z2_power_off NULL -#endif - -/****************************************************************************** - * Machine init - ******************************************************************************/ -static void __init z2_init(void) -{ - pxa2xx_mfp_config(ARRAY_AND_SIZE(z2_pin_config)); - - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - z2_lcd_init(); - z2_mmc_init(); - z2_mkp_init(); - z2_i2c_init(); - z2_spi_init(); - z2_nor_init(); - z2_pwm_init(); - z2_leds_init(); - z2_keys_init(); - z2_pmic_init(); - - pm_power_off = z2_power_off; -} - -MACHINE_START(ZIPIT2, "Zipit Z2") - .atag_offset = 0x100, - .map_io = pxa27x_map_io, - .nr_irqs = PXA_NR_IRQS, - .init_irq = pxa27x_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = z2_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/zeus.c b/ANDROID_3.4.5/arch/arm/mach-pxa/zeus.c deleted file mode 100644 index af3d4f76..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/zeus.c +++ /dev/null @@ -1,917 +0,0 @@ -/* - * Support for the Arcom ZEUS. - * - * Copyright (C) 2006 Arcom Control Systems Ltd. - * - * Loosely based on Arcom's 2.6.16.28. - * Maintained by Marc Zyngier <maz@misterjones.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/cpufreq.h> -#include <linux/interrupt.h> -#include <linux/irq.h> -#include <linux/pm.h> -#include <linux/gpio.h> -#include <linux/serial_8250.h> -#include <linux/dm9000.h> -#include <linux/mmc/host.h> -#include <linux/spi/spi.h> -#include <linux/spi/pxa2xx_spi.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/i2c/pca953x.h> -#include <linux/apm-emulation.h> -#include <linux/can/platform/mcp251x.h> - -#include <asm/mach-types.h> -#include <asm/suspend.h> -#include <asm/system_info.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> - -#include <mach/pxa27x.h> -#include <mach/regs-uart.h> -#include <mach/ohci.h> -#include <mach/mmc.h> -#include <mach/pxa27x-udc.h> -#include <mach/udc.h> -#include <mach/pxafb.h> -#include <mach/pm.h> -#include <mach/audio.h> -#include <mach/arcom-pcmcia.h> -#include <mach/zeus.h> -#include <mach/smemc.h> - -#include "generic.h" - -/* - * Interrupt handling - */ - -static unsigned long zeus_irq_enabled_mask; -static const int zeus_isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, }; -static const int zeus_isa_irq_map[] = { - 0, /* ISA irq #0, invalid */ - 0, /* ISA irq #1, invalid */ - 0, /* ISA irq #2, invalid */ - 1 << 0, /* ISA irq #3 */ - 1 << 1, /* ISA irq #4 */ - 1 << 2, /* ISA irq #5 */ - 1 << 3, /* ISA irq #6 */ - 1 << 4, /* ISA irq #7 */ - 0, /* ISA irq #8, invalid */ - 0, /* ISA irq #9, invalid */ - 1 << 5, /* ISA irq #10 */ - 1 << 6, /* ISA irq #11 */ - 1 << 7, /* ISA irq #12 */ -}; - -static inline int zeus_irq_to_bitmask(unsigned int irq) -{ - return zeus_isa_irq_map[irq - PXA_ISA_IRQ(0)]; -} - -static inline int zeus_bit_to_irq(int bit) -{ - return zeus_isa_irqs[bit] + PXA_ISA_IRQ(0); -} - -static void zeus_ack_irq(struct irq_data *d) -{ - __raw_writew(zeus_irq_to_bitmask(d->irq), ZEUS_CPLD_ISA_IRQ); -} - -static void zeus_mask_irq(struct irq_data *d) -{ - zeus_irq_enabled_mask &= ~(zeus_irq_to_bitmask(d->irq)); -} - -static void zeus_unmask_irq(struct irq_data *d) -{ - zeus_irq_enabled_mask |= zeus_irq_to_bitmask(d->irq); -} - -static inline unsigned long zeus_irq_pending(void) -{ - return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask; -} - -static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc) -{ - unsigned long pending; - - pending = zeus_irq_pending(); - do { - /* we're in a chained irq handler, - * so ack the interrupt by hand */ - desc->irq_data.chip->irq_ack(&desc->irq_data); - - if (likely(pending)) { - irq = zeus_bit_to_irq(__ffs(pending)); - generic_handle_irq(irq); - } - pending = zeus_irq_pending(); - } while (pending); -} - -static struct irq_chip zeus_irq_chip = { - .name = "ISA", - .irq_ack = zeus_ack_irq, - .irq_mask = zeus_mask_irq, - .irq_unmask = zeus_unmask_irq, -}; - -static void __init zeus_init_irq(void) -{ - int level; - int isa_irq; - - pxa27x_init_irq(); - - /* Peripheral IRQs. It would be nice to move those inside driver - configuration, but it is not supported at the moment. */ - irq_set_irq_type(gpio_to_irq(ZEUS_AC97_GPIO), IRQ_TYPE_EDGE_RISING); - irq_set_irq_type(gpio_to_irq(ZEUS_WAKEUP_GPIO), IRQ_TYPE_EDGE_RISING); - irq_set_irq_type(gpio_to_irq(ZEUS_PTT_GPIO), IRQ_TYPE_EDGE_RISING); - irq_set_irq_type(gpio_to_irq(ZEUS_EXTGPIO_GPIO), - IRQ_TYPE_EDGE_FALLING); - irq_set_irq_type(gpio_to_irq(ZEUS_CAN_GPIO), IRQ_TYPE_EDGE_FALLING); - - /* Setup ISA IRQs */ - for (level = 0; level < ARRAY_SIZE(zeus_isa_irqs); level++) { - isa_irq = zeus_bit_to_irq(level); - irq_set_chip_and_handler(isa_irq, &zeus_irq_chip, - handle_edge_irq); - set_irq_flags(isa_irq, IRQF_VALID | IRQF_PROBE); - } - - irq_set_irq_type(gpio_to_irq(ZEUS_ISA_GPIO), IRQ_TYPE_EDGE_RISING); - irq_set_chained_handler(gpio_to_irq(ZEUS_ISA_GPIO), zeus_irq_handler); -} - - -/* - * Platform devices - */ - -/* Flash */ -static struct resource zeus_mtd_resources[] = { - [0] = { /* NOR Flash (up to 64MB) */ - .start = ZEUS_FLASH_PHYS, - .end = ZEUS_FLASH_PHYS + SZ_64M - 1, - .flags = IORESOURCE_MEM, - }, - [1] = { /* SRAM */ - .start = ZEUS_SRAM_PHYS, - .end = ZEUS_SRAM_PHYS + SZ_512K - 1, - .flags = IORESOURCE_MEM, - }, -}; - -static struct physmap_flash_data zeus_flash_data[] = { - [0] = { - .width = 2, - .parts = NULL, - .nr_parts = 0, - }, -}; - -static struct platform_device zeus_mtd_devices[] = { - [0] = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = &zeus_flash_data[0], - }, - .resource = &zeus_mtd_resources[0], - .num_resources = 1, - }, -}; - -/* Serial */ -static struct resource zeus_serial_resources[] = { - { - .start = 0x10000000, - .end = 0x1000000f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x10800000, - .end = 0x1080000f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x11000000, - .end = 0x1100000f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x40100000, - .end = 0x4010001f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x40200000, - .end = 0x4020001f, - .flags = IORESOURCE_MEM, - }, - { - .start = 0x40700000, - .end = 0x4070001f, - .flags = IORESOURCE_MEM, - }, -}; - -static struct plat_serial8250_port serial_platform_data[] = { - /* External UARTs */ - /* FIXME: Shared IRQs on COM1-COM4 will not work properly on v1i1 hardware. */ - { /* COM1 */ - .mapbase = 0x10000000, - .irq = PXA_GPIO_TO_IRQ(ZEUS_UARTA_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 14745600, - .regshift = 1, - .flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { /* COM2 */ - .mapbase = 0x10800000, - .irq = PXA_GPIO_TO_IRQ(ZEUS_UARTB_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 14745600, - .regshift = 1, - .flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { /* COM3 */ - .mapbase = 0x11000000, - .irq = PXA_GPIO_TO_IRQ(ZEUS_UARTC_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 14745600, - .regshift = 1, - .flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { /* COM4 */ - .mapbase = 0x11800000, - .irq = PXA_GPIO_TO_IRQ(ZEUS_UARTD_GPIO), - .irqflags = IRQF_TRIGGER_RISING, - .uartclk = 14745600, - .regshift = 1, - .flags = UPF_IOREMAP | UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - /* Internal UARTs */ - { /* FFUART */ - .membase = (void *)&FFUART, - .mapbase = __PREG(FFUART), - .irq = IRQ_FFUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { /* BTUART */ - .membase = (void *)&BTUART, - .mapbase = __PREG(BTUART), - .irq = IRQ_BTUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { /* STUART */ - .membase = (void *)&STUART, - .mapbase = __PREG(STUART), - .irq = IRQ_STUART, - .uartclk = 921600 * 16, - .regshift = 2, - .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, - .iotype = UPIO_MEM, - }, - { }, -}; - -static struct platform_device zeus_serial_device = { - .name = "serial8250", - .id = PLAT8250_DEV_PLATFORM, - .dev = { - .platform_data = serial_platform_data, - }, - .num_resources = ARRAY_SIZE(zeus_serial_resources), - .resource = zeus_serial_resources, -}; - -/* Ethernet */ -static struct resource zeus_dm9k0_resource[] = { - [0] = { - .start = ZEUS_ETH0_PHYS, - .end = ZEUS_ETH0_PHYS + 1, - .flags = IORESOURCE_MEM - }, - [1] = { - .start = ZEUS_ETH0_PHYS + 2, - .end = ZEUS_ETH0_PHYS + 3, - .flags = IORESOURCE_MEM - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(ZEUS_ETH0_GPIO), - .end = PXA_GPIO_TO_IRQ(ZEUS_ETH0_GPIO), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, - }, -}; - -static struct resource zeus_dm9k1_resource[] = { - [0] = { - .start = ZEUS_ETH1_PHYS, - .end = ZEUS_ETH1_PHYS + 1, - .flags = IORESOURCE_MEM - }, - [1] = { - .start = ZEUS_ETH1_PHYS + 2, - .end = ZEUS_ETH1_PHYS + 3, - .flags = IORESOURCE_MEM, - }, - [2] = { - .start = PXA_GPIO_TO_IRQ(ZEUS_ETH1_GPIO), - .end = PXA_GPIO_TO_IRQ(ZEUS_ETH1_GPIO), - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, - }, -}; - -static struct dm9000_plat_data zeus_dm9k_platdata = { - .flags = DM9000_PLATF_16BITONLY, -}; - -static struct platform_device zeus_dm9k0_device = { - .name = "dm9000", - .id = 0, - .num_resources = ARRAY_SIZE(zeus_dm9k0_resource), - .resource = zeus_dm9k0_resource, - .dev = { - .platform_data = &zeus_dm9k_platdata, - } -}; - -static struct platform_device zeus_dm9k1_device = { - .name = "dm9000", - .id = 1, - .num_resources = ARRAY_SIZE(zeus_dm9k1_resource), - .resource = zeus_dm9k1_resource, - .dev = { - .platform_data = &zeus_dm9k_platdata, - } -}; - -/* External SRAM */ -static struct resource zeus_sram_resource = { - .start = ZEUS_SRAM_PHYS, - .end = ZEUS_SRAM_PHYS + ZEUS_SRAM_SIZE * 2 - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device zeus_sram_device = { - .name = "pxa2xx-8bit-sram", - .id = 0, - .num_resources = 1, - .resource = &zeus_sram_resource, -}; - -/* SPI interface on SSP3 */ -static struct pxa2xx_spi_master pxa2xx_spi_ssp3_master_info = { - .num_chipselect = 1, - .enable_dma = 1, -}; - -/* CAN bus on SPI */ -static int zeus_mcp2515_setup(struct spi_device *sdev) -{ - int err; - - err = gpio_request(ZEUS_CAN_SHDN_GPIO, "CAN shutdown"); - if (err) - return err; - - err = gpio_direction_output(ZEUS_CAN_SHDN_GPIO, 1); - if (err) { - gpio_free(ZEUS_CAN_SHDN_GPIO); - return err; - } - - return 0; -} - -static int zeus_mcp2515_transceiver_enable(int enable) -{ - gpio_set_value(ZEUS_CAN_SHDN_GPIO, !enable); - return 0; -} - -static struct mcp251x_platform_data zeus_mcp2515_pdata = { - .oscillator_frequency = 16*1000*1000, - .board_specific_setup = zeus_mcp2515_setup, - .power_enable = zeus_mcp2515_transceiver_enable, -}; - -static struct spi_board_info zeus_spi_board_info[] = { - [0] = { - .modalias = "mcp2515", - .platform_data = &zeus_mcp2515_pdata, - .irq = PXA_GPIO_TO_IRQ(ZEUS_CAN_GPIO), - .max_speed_hz = 1*1000*1000, - .bus_num = 3, - .mode = SPI_MODE_0, - .chip_select = 0, - }, -}; - -/* Leds */ -static struct gpio_led zeus_leds[] = { - [0] = { - .name = "zeus:yellow:1", - .default_trigger = "heartbeat", - .gpio = ZEUS_EXT0_GPIO(3), - .active_low = 1, - }, - [1] = { - .name = "zeus:yellow:2", - .default_trigger = "default-on", - .gpio = ZEUS_EXT0_GPIO(4), - .active_low = 1, - }, - [2] = { - .name = "zeus:yellow:3", - .default_trigger = "default-on", - .gpio = ZEUS_EXT0_GPIO(5), - .active_low = 1, - }, -}; - -static struct gpio_led_platform_data zeus_leds_info = { - .leds = zeus_leds, - .num_leds = ARRAY_SIZE(zeus_leds), -}; - -static struct platform_device zeus_leds_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &zeus_leds_info, - }, -}; - -static void zeus_cf_reset(int state) -{ - u16 cpld_state = __raw_readw(ZEUS_CPLD_CONTROL); - - if (state) - cpld_state |= ZEUS_CPLD_CONTROL_CF_RST; - else - cpld_state &= ~ZEUS_CPLD_CONTROL_CF_RST; - - __raw_writew(cpld_state, ZEUS_CPLD_CONTROL); -} - -static struct arcom_pcmcia_pdata zeus_pcmcia_info = { - .cd_gpio = ZEUS_CF_CD_GPIO, - .rdy_gpio = ZEUS_CF_RDY_GPIO, - .pwr_gpio = ZEUS_CF_PWEN_GPIO, - .reset = zeus_cf_reset, -}; - -static struct platform_device zeus_pcmcia_device = { - .name = "zeus-pcmcia", - .id = -1, - .dev = { - .platform_data = &zeus_pcmcia_info, - }, -}; - -static struct resource zeus_max6369_resource = { - .start = ZEUS_CPLD_EXTWDOG_PHYS, - .end = ZEUS_CPLD_EXTWDOG_PHYS, - .flags = IORESOURCE_MEM, -}; - -struct platform_device zeus_max6369_device = { - .name = "max6369_wdt", - .id = -1, - .resource = &zeus_max6369_resource, - .num_resources = 1, -}; - -static struct platform_device *zeus_devices[] __initdata = { - &zeus_serial_device, - &zeus_mtd_devices[0], - &zeus_dm9k0_device, - &zeus_dm9k1_device, - &zeus_sram_device, - &zeus_leds_device, - &zeus_pcmcia_device, - &zeus_max6369_device, -}; - -/* AC'97 */ -static pxa2xx_audio_ops_t zeus_ac97_info = { - .reset_gpio = 95, -}; - - -/* - * USB host - */ - -static int zeus_ohci_init(struct device *dev) -{ - int err; - - /* Switch on port 2. */ - if ((err = gpio_request(ZEUS_USB2_PWREN_GPIO, "USB2_PWREN"))) { - dev_err(dev, "Can't request USB2_PWREN\n"); - return err; - } - - if ((err = gpio_direction_output(ZEUS_USB2_PWREN_GPIO, 1))) { - gpio_free(ZEUS_USB2_PWREN_GPIO); - dev_err(dev, "Can't enable USB2_PWREN\n"); - return err; - } - - /* Port 2 is shared between host and client interface. */ - UP2OCR = UP2OCR_HXOE | UP2OCR_HXS | UP2OCR_DMPDE | UP2OCR_DPPDE; - - return 0; -} - -static void zeus_ohci_exit(struct device *dev) -{ - /* Power-off port 2 */ - gpio_direction_output(ZEUS_USB2_PWREN_GPIO, 0); - gpio_free(ZEUS_USB2_PWREN_GPIO); -} - -static struct pxaohci_platform_data zeus_ohci_platform_data = { - .port_mode = PMM_NPS_MODE, - /* Clear Power Control Polarity Low and set Power Sense - * Polarity Low. Supply power to USB ports. */ - .flags = ENABLE_PORT_ALL | POWER_SENSE_LOW, - .init = zeus_ohci_init, - .exit = zeus_ohci_exit, -}; - -/* - * Flat Panel - */ - -static void zeus_lcd_power(int on, struct fb_var_screeninfo *si) -{ - gpio_set_value(ZEUS_LCD_EN_GPIO, on); -} - -static void zeus_backlight_power(int on) -{ - gpio_set_value(ZEUS_BKLEN_GPIO, on); -} - -static int zeus_setup_fb_gpios(void) -{ - int err; - - if ((err = gpio_request(ZEUS_LCD_EN_GPIO, "LCD_EN"))) - goto out_err; - - if ((err = gpio_direction_output(ZEUS_LCD_EN_GPIO, 0))) - goto out_err_lcd; - - if ((err = gpio_request(ZEUS_BKLEN_GPIO, "BKLEN"))) - goto out_err_lcd; - - if ((err = gpio_direction_output(ZEUS_BKLEN_GPIO, 0))) - goto out_err_bkl; - - return 0; - -out_err_bkl: - gpio_free(ZEUS_BKLEN_GPIO); -out_err_lcd: - gpio_free(ZEUS_LCD_EN_GPIO); -out_err: - return err; -} - -static struct pxafb_mode_info zeus_fb_mode_info[] = { - { - .pixclock = 39722, - - .xres = 640, - .yres = 480, - - .bpp = 16, - - .hsync_len = 63, - .left_margin = 16, - .right_margin = 81, - - .vsync_len = 2, - .upper_margin = 12, - .lower_margin = 31, - - .sync = 0, - }, -}; - -static struct pxafb_mach_info zeus_fb_info = { - .modes = zeus_fb_mode_info, - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, - .pxafb_lcd_power = zeus_lcd_power, - .pxafb_backlight_power = zeus_backlight_power, -}; - -/* - * MMC/SD Device - * - * The card detect interrupt isn't debounced so we delay it by 250ms - * to give the card a chance to fully insert/eject. - */ - -static struct pxamci_platform_data zeus_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .detect_delay_ms = 250, - .gpio_card_detect = ZEUS_MMC_CD_GPIO, - .gpio_card_ro = ZEUS_MMC_WP_GPIO, - .gpio_card_ro_invert = 1, - .gpio_power = -1 -}; - -/* - * USB Device Controller - */ -static void zeus_udc_command(int cmd) -{ - switch (cmd) { - case PXA2XX_UDC_CMD_DISCONNECT: - pr_info("zeus: disconnecting USB client\n"); - UP2OCR = UP2OCR_HXOE | UP2OCR_HXS | UP2OCR_DMPDE | UP2OCR_DPPDE; - break; - - case PXA2XX_UDC_CMD_CONNECT: - pr_info("zeus: connecting USB client\n"); - UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE; - break; - } -} - -static struct pxa2xx_udc_mach_info zeus_udc_info = { - .udc_command = zeus_udc_command, -}; - -#ifdef CONFIG_PM -static void zeus_power_off(void) -{ - local_irq_disable(); - cpu_suspend(PWRMODE_DEEPSLEEP, pxa27x_finish_suspend); -} -#else -#define zeus_power_off NULL -#endif - -#ifdef CONFIG_APM_EMULATION -static void zeus_get_power_status(struct apm_power_info *info) -{ - /* Power supply is always present */ - info->ac_line_status = APM_AC_ONLINE; - info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT; - info->battery_flag = APM_BATTERY_FLAG_NOT_PRESENT; -} - -static inline void zeus_setup_apm(void) -{ - apm_get_power_status = zeus_get_power_status; -} -#else -static inline void zeus_setup_apm(void) -{ -} -#endif - -static int zeus_get_pcb_info(struct i2c_client *client, unsigned gpio, - unsigned ngpio, void *context) -{ - int i; - u8 pcb_info = 0; - - for (i = 0; i < 8; i++) { - int pcb_bit = gpio + i + 8; - - if (gpio_request(pcb_bit, "pcb info")) { - dev_err(&client->dev, "Can't request pcb info %d\n", i); - continue; - } - - if (gpio_direction_input(pcb_bit)) { - dev_err(&client->dev, "Can't read pcb info %d\n", i); - gpio_free(pcb_bit); - continue; - } - - pcb_info |= !!gpio_get_value(pcb_bit) << i; - - gpio_free(pcb_bit); - } - - dev_info(&client->dev, "Zeus PCB version %d issue %d\n", - pcb_info >> 4, pcb_info & 0xf); - - return 0; -} - -static struct pca953x_platform_data zeus_pca953x_pdata[] = { - [0] = { .gpio_base = ZEUS_EXT0_GPIO_BASE, }, - [1] = { - .gpio_base = ZEUS_EXT1_GPIO_BASE, - .setup = zeus_get_pcb_info, - }, - [2] = { .gpio_base = ZEUS_USER_GPIO_BASE, }, -}; - -static struct i2c_board_info __initdata zeus_i2c_devices[] = { - { - I2C_BOARD_INFO("pca9535", 0x21), - .platform_data = &zeus_pca953x_pdata[0], - }, - { - I2C_BOARD_INFO("pca9535", 0x22), - .platform_data = &zeus_pca953x_pdata[1], - }, - { - I2C_BOARD_INFO("pca9535", 0x20), - .platform_data = &zeus_pca953x_pdata[2], - .irq = PXA_GPIO_TO_IRQ(ZEUS_EXTGPIO_GPIO), - }, - { I2C_BOARD_INFO("lm75a", 0x48) }, - { I2C_BOARD_INFO("24c01", 0x50) }, - { I2C_BOARD_INFO("isl1208", 0x6f) }, -}; - -static mfp_cfg_t zeus_pin_config[] __initdata = { - /* AC97 */ - GPIO28_AC97_BITCLK, - GPIO29_AC97_SDATA_IN_0, - GPIO30_AC97_SDATA_OUT, - GPIO31_AC97_SYNC, - - GPIO15_nCS_1, - GPIO78_nCS_2, - GPIO80_nCS_4, - GPIO33_nCS_5, - - GPIO22_GPIO, - GPIO32_MMC_CLK, - GPIO92_MMC_DAT_0, - GPIO109_MMC_DAT_1, - GPIO110_MMC_DAT_2, - GPIO111_MMC_DAT_3, - GPIO112_MMC_CMD, - - GPIO88_USBH1_PWR, - GPIO89_USBH1_PEN, - GPIO119_USBH2_PWR, - GPIO120_USBH2_PEN, - - GPIO86_LCD_LDD_16, - GPIO87_LCD_LDD_17, - - GPIO102_GPIO, - GPIO104_CIF_DD_2, - GPIO105_CIF_DD_1, - - GPIO81_SSP3_TXD, - GPIO82_SSP3_RXD, - GPIO83_SSP3_SFRM, - GPIO84_SSP3_SCLK, - - GPIO48_nPOE, - GPIO49_nPWE, - GPIO50_nPIOR, - GPIO51_nPIOW, - GPIO85_nPCE_1, - GPIO54_nPCE_2, - GPIO79_PSKTSEL, - GPIO55_nPREG, - GPIO56_nPWAIT, - GPIO57_nIOIS16, - GPIO36_GPIO, /* CF CD */ - GPIO97_GPIO, /* CF PWREN */ - GPIO99_GPIO, /* CF RDY */ -}; - -/* - * DM9k MSCx settings: SRAM, 16 bits - * 17 cycles delay first access - * 5 cycles delay next access - * 13 cycles recovery time - * faster device - */ -#define DM9K_MSC_VALUE 0xe4c9 - -static void __init zeus_init(void) -{ - u16 dm9000_msc = DM9K_MSC_VALUE; - u32 msc0, msc1; - - system_rev = __raw_readw(ZEUS_CPLD_VERSION); - pr_info("Zeus CPLD V%dI%d\n", (system_rev & 0xf0) >> 4, (system_rev & 0x0f)); - - /* Fix timings for dm9000s (CS1/CS2)*/ - msc0 = (__raw_readl(MSC0) & 0x0000ffff) | (dm9000_msc << 16); - msc1 = (__raw_readl(MSC1) & 0xffff0000) | dm9000_msc; - __raw_writel(msc0, MSC0); - __raw_writel(msc1, MSC1); - - pm_power_off = zeus_power_off; - zeus_setup_apm(); - - pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config)); - - platform_add_devices(zeus_devices, ARRAY_SIZE(zeus_devices)); - - pxa_set_ohci_info(&zeus_ohci_platform_data); - - if (zeus_setup_fb_gpios()) - pr_err("Failed to setup fb gpios\n"); - else - pxa_set_fb_info(NULL, &zeus_fb_info); - - pxa_set_mci_info(&zeus_mci_platform_data); - pxa_set_udc_info(&zeus_udc_info); - pxa_set_ac97_info(&zeus_ac97_info); - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(zeus_i2c_devices)); - pxa2xx_set_spi_info(3, &pxa2xx_spi_ssp3_master_info); - spi_register_board_info(zeus_spi_board_info, ARRAY_SIZE(zeus_spi_board_info)); -} - -static struct map_desc zeus_io_desc[] __initdata = { - { - .virtual = (unsigned long)ZEUS_CPLD_VERSION, - .pfn = __phys_to_pfn(ZEUS_CPLD_VERSION_PHYS), - .length = 0x1000, - .type = MT_DEVICE, - }, - { - .virtual = (unsigned long)ZEUS_CPLD_ISA_IRQ, - .pfn = __phys_to_pfn(ZEUS_CPLD_ISA_IRQ_PHYS), - .length = 0x1000, - .type = MT_DEVICE, - }, - { - .virtual = (unsigned long)ZEUS_CPLD_CONTROL, - .pfn = __phys_to_pfn(ZEUS_CPLD_CONTROL_PHYS), - .length = 0x1000, - .type = MT_DEVICE, - }, - { - .virtual = (unsigned long)ZEUS_PC104IO, - .pfn = __phys_to_pfn(ZEUS_PC104IO_PHYS), - .length = 0x00800000, - .type = MT_DEVICE, - }, -}; - -static void __init zeus_map_io(void) -{ - pxa27x_map_io(); - - iotable_init(zeus_io_desc, ARRAY_SIZE(zeus_io_desc)); - - /* Clear PSPR to ensure a full restart on wake-up. */ - PMCR = PSPR = 0; - - /* enable internal 32.768Khz oscillator (ignore OSCC_OOK) */ - OSCC |= OSCC_OON; - - /* Some clock cycles later (from OSCC_ON), programme PCFR (OPDE...). - * float chip selects and PCMCIA */ - PCFR = PCFR_OPDE | PCFR_DC_EN | PCFR_FS | PCFR_FP; -} - -MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS") - /* Maintainer: Marc Zyngier <maz@misterjones.org> */ - .atag_offset = 0x100, - .map_io = zeus_map_io, - .nr_irqs = ZEUS_NR_IRQS, - .init_irq = zeus_init_irq, - .handle_irq = pxa27x_handle_irq, - .timer = &pxa_timer, - .init_machine = zeus_init, - .restart = pxa_restart, -MACHINE_END - diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite.c b/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite.c deleted file mode 100644 index 98eec806..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite.c +++ /dev/null @@ -1,434 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/zylonite.c - * - * Support for the PXA3xx Development Platform (aka Zylonite) - * - * Copyright (C) 2006 Marvell International Ltd. - * - * 2007-09-04: eric miao <eric.miao@marvell.com> - * rewrite to align with latest kernel - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/interrupt.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/gpio.h> -#include <linux/pwm_backlight.h> -#include <linux/smc91x.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <mach/pxa3xx.h> -#include <mach/audio.h> -#include <mach/pxafb.h> -#include <mach/zylonite.h> -#include <mach/mmc.h> -#include <mach/ohci.h> -#include <plat/pxa27x_keypad.h> -#include <plat/pxa3xx_nand.h> - -#include "devices.h" -#include "generic.h" - -int gpio_eth_irq; -int gpio_debug_led1; -int gpio_debug_led2; - -int wm9713_irq; - -int lcd_id; -int lcd_orientation; - -struct platform_device pxa_device_wm9713_audio = { - .name = "wm9713-codec", - .id = -1, -}; - -static void __init zylonite_init_wm9713_audio(void) -{ - platform_device_register(&pxa_device_wm9713_audio); -} - -static struct resource smc91x_resources[] = { - [0] = { - .start = ZYLONITE_ETH_PHYS + 0x300, - .end = ZYLONITE_ETH_PHYS + 0xfffff, - .flags = IORESOURCE_MEM, - }, - [1] = { - .start = -1, /* for run-time assignment */ - .end = -1, - .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, - } -}; - -static struct smc91x_platdata zylonite_smc91x_info = { - .flags = SMC91X_USE_8BIT | SMC91X_USE_16BIT | - SMC91X_NOWAIT | SMC91X_USE_DMA, -}; - -static struct platform_device smc91x_device = { - .name = "smc91x", - .id = 0, - .num_resources = ARRAY_SIZE(smc91x_resources), - .resource = smc91x_resources, - .dev = { - .platform_data = &zylonite_smc91x_info, - }, -}; - -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) -static struct gpio_led zylonite_debug_leds[] = { - [0] = { - .name = "zylonite:yellow:1", - .default_trigger = "heartbeat", - }, - [1] = { - .name = "zylonite:yellow:2", - .default_trigger = "default-on", - }, -}; - -static struct gpio_led_platform_data zylonite_debug_leds_info = { - .leds = zylonite_debug_leds, - .num_leds = ARRAY_SIZE(zylonite_debug_leds), -}; - -static struct platform_device zylonite_device_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &zylonite_debug_leds_info, - } -}; - -static void __init zylonite_init_leds(void) -{ - zylonite_debug_leds[0].gpio = gpio_debug_led1; - zylonite_debug_leds[1].gpio = gpio_debug_led2; - - platform_device_register(&zylonite_device_leds); -} -#else -static inline void zylonite_init_leds(void) {} -#endif - -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) -static struct platform_pwm_backlight_data zylonite_backlight_data = { - .pwm_id = 3, - .max_brightness = 100, - .dft_brightness = 100, - .pwm_period_ns = 10000, -}; - -static struct platform_device zylonite_backlight_device = { - .name = "pwm-backlight", - .dev = { - .parent = &pxa27x_device_pwm1.dev, - .platform_data = &zylonite_backlight_data, - }, -}; - -static struct pxafb_mode_info toshiba_ltm035a776c_mode = { - .pixclock = 110000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 4, - .left_margin = 6, - .right_margin = 4, - .vsync_len = 2, - .upper_margin = 2, - .lower_margin = 3, - .sync = FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mode_info toshiba_ltm04c380k_mode = { - .pixclock = 50000, - .xres = 640, - .yres = 480, - .bpp = 16, - .hsync_len = 1, - .left_margin = 0x9f, - .right_margin = 1, - .vsync_len = 44, - .upper_margin = 0, - .lower_margin = 0, - .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, -}; - -static struct pxafb_mach_info zylonite_toshiba_lcd_info = { - .num_modes = 1, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static struct pxafb_mode_info sharp_ls037_modes[] = { - [0] = { - .pixclock = 158000, - .xres = 240, - .yres = 320, - .bpp = 16, - .hsync_len = 4, - .left_margin = 39, - .right_margin = 39, - .vsync_len = 1, - .upper_margin = 2, - .lower_margin = 3, - .sync = 0, - }, - [1] = { - .pixclock = 39700, - .xres = 480, - .yres = 640, - .bpp = 16, - .hsync_len = 8, - .left_margin = 81, - .right_margin = 81, - .vsync_len = 1, - .upper_margin = 2, - .lower_margin = 7, - .sync = 0, - }, -}; - -static struct pxafb_mach_info zylonite_sharp_lcd_info = { - .modes = sharp_ls037_modes, - .num_modes = 2, - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, -}; - -static void __init zylonite_init_lcd(void) -{ - platform_device_register(&zylonite_backlight_device); - - if (lcd_id & 0x20) { - pxa_set_fb_info(NULL, &zylonite_sharp_lcd_info); - return; - } - - /* legacy LCD panels, it would be handy here if LCD panel type can - * be decided at run-time - */ - if (1) - zylonite_toshiba_lcd_info.modes = &toshiba_ltm035a776c_mode; - else - zylonite_toshiba_lcd_info.modes = &toshiba_ltm04c380k_mode; - - pxa_set_fb_info(NULL, &zylonite_toshiba_lcd_info); -} -#else -static inline void zylonite_init_lcd(void) {} -#endif - -#if defined(CONFIG_MMC) -static struct pxamci_platform_data zylonite_mci_platform_data = { - .detect_delay_ms= 200, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = EXT_GPIO(0), - .gpio_card_ro = EXT_GPIO(2), - .gpio_power = -1, -}; - -static struct pxamci_platform_data zylonite_mci2_platform_data = { - .detect_delay_ms= 200, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = EXT_GPIO(1), - .gpio_card_ro = EXT_GPIO(3), - .gpio_power = -1, -}; - -static struct pxamci_platform_data zylonite_mci3_platform_data = { - .detect_delay_ms= 200, - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, - .gpio_card_detect = EXT_GPIO(30), - .gpio_card_ro = EXT_GPIO(31), - .gpio_power = -1, -}; - -static void __init zylonite_init_mmc(void) -{ - pxa_set_mci_info(&zylonite_mci_platform_data); - pxa3xx_set_mci2_info(&zylonite_mci2_platform_data); - if (cpu_is_pxa310()) - pxa3xx_set_mci3_info(&zylonite_mci3_platform_data); -} -#else -static inline void zylonite_init_mmc(void) {} -#endif - -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) -static unsigned int zylonite_matrix_key_map[] = { - /* KEY(row, col, key_code) */ - KEY(0, 0, KEY_A), KEY(0, 1, KEY_B), KEY(0, 2, KEY_C), KEY(0, 5, KEY_D), - KEY(1, 0, KEY_E), KEY(1, 1, KEY_F), KEY(1, 2, KEY_G), KEY(1, 5, KEY_H), - KEY(2, 0, KEY_I), KEY(2, 1, KEY_J), KEY(2, 2, KEY_K), KEY(2, 5, KEY_L), - KEY(3, 0, KEY_M), KEY(3, 1, KEY_N), KEY(3, 2, KEY_O), KEY(3, 5, KEY_P), - KEY(5, 0, KEY_Q), KEY(5, 1, KEY_R), KEY(5, 2, KEY_S), KEY(5, 5, KEY_T), - KEY(6, 0, KEY_U), KEY(6, 1, KEY_V), KEY(6, 2, KEY_W), KEY(6, 5, KEY_X), - KEY(7, 1, KEY_Y), KEY(7, 2, KEY_Z), - - KEY(4, 4, KEY_0), KEY(1, 3, KEY_1), KEY(4, 1, KEY_2), KEY(1, 4, KEY_3), - KEY(2, 3, KEY_4), KEY(4, 2, KEY_5), KEY(2, 4, KEY_6), KEY(3, 3, KEY_7), - KEY(4, 3, KEY_8), KEY(3, 4, KEY_9), - - KEY(4, 5, KEY_SPACE), - KEY(5, 3, KEY_KPASTERISK), /* * */ - KEY(5, 4, KEY_KPDOT), /* #" */ - - KEY(0, 7, KEY_UP), - KEY(1, 7, KEY_DOWN), - KEY(2, 7, KEY_LEFT), - KEY(3, 7, KEY_RIGHT), - KEY(2, 6, KEY_HOME), - KEY(3, 6, KEY_END), - KEY(6, 4, KEY_DELETE), - KEY(6, 6, KEY_BACK), - KEY(6, 3, KEY_CAPSLOCK), /* KEY_LEFTSHIFT), */ - - KEY(4, 6, KEY_ENTER), /* scroll push */ - KEY(5, 7, KEY_ENTER), /* keypad action */ - - KEY(0, 4, KEY_EMAIL), - KEY(5, 6, KEY_SEND), - KEY(4, 0, KEY_CALENDAR), - KEY(7, 6, KEY_RECORD), - KEY(6, 7, KEY_VOLUMEUP), - KEY(7, 7, KEY_VOLUMEDOWN), - - KEY(0, 6, KEY_F22), /* soft1 */ - KEY(1, 6, KEY_F23), /* soft2 */ - KEY(0, 3, KEY_AUX), /* contact */ -}; - -static struct pxa27x_keypad_platform_data zylonite_keypad_info = { - .matrix_key_rows = 8, - .matrix_key_cols = 8, - .matrix_key_map = zylonite_matrix_key_map, - .matrix_key_map_size = ARRAY_SIZE(zylonite_matrix_key_map), - - .enable_rotary0 = 1, - .rotary0_up_key = KEY_UP, - .rotary0_down_key = KEY_DOWN, - - .debounce_interval = 30, -}; - -static void __init zylonite_init_keypad(void) -{ - pxa_set_keypad_info(&zylonite_keypad_info); -} -#else -static inline void zylonite_init_keypad(void) {} -#endif - -#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE) -static struct mtd_partition zylonite_nand_partitions[] = { - [0] = { - .name = "Bootloader", - .offset = 0, - .size = 0x060000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [1] = { - .name = "Kernel", - .offset = 0x060000, - .size = 0x200000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - [2] = { - .name = "Filesystem", - .offset = 0x0260000, - .size = 0x3000000, /* 48M - rootfs */ - }, - [3] = { - .name = "MassStorage", - .offset = 0x3260000, - .size = 0x3d40000, - }, - [4] = { - .name = "BBT", - .offset = 0x6FA0000, - .size = 0x80000, - .mask_flags = MTD_WRITEABLE, /* force read-only */ - }, - /* NOTE: we reserve some blocks at the end of the NAND flash for - * bad block management, and the max number of relocation blocks - * differs on different platforms. Please take care with it when - * defining the partition table. - */ -}; - -static struct pxa3xx_nand_platform_data zylonite_nand_info = { - .enable_arbiter = 1, - .num_cs = 1, - .parts[0] = zylonite_nand_partitions, - .nr_parts[0] = ARRAY_SIZE(zylonite_nand_partitions), -}; - -static void __init zylonite_init_nand(void) -{ - pxa3xx_set_nand_info(&zylonite_nand_info); -} -#else -static inline void zylonite_init_nand(void) {} -#endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */ - -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) -static struct pxaohci_platform_data zylonite_ohci_info = { - .port_mode = PMM_PERPORT_MODE, - .flags = ENABLE_PORT1 | ENABLE_PORT2 | - POWER_CONTROL_LOW | POWER_SENSE_LOW, -}; - -static void __init zylonite_init_ohci(void) -{ - pxa_set_ohci_info(&zylonite_ohci_info); -} -#else -static inline void zylonite_init_ohci(void) {} -#endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */ - -static void __init zylonite_init(void) -{ - pxa_set_ffuart_info(NULL); - pxa_set_btuart_info(NULL); - pxa_set_stuart_info(NULL); - - /* board-processor specific initialization */ - zylonite_pxa300_init(); - zylonite_pxa320_init(); - - /* - * Note: We depend that the bootloader set - * the correct value to MSC register for SMC91x. - */ - smc91x_resources[1].start = PXA_GPIO_TO_IRQ(gpio_eth_irq); - smc91x_resources[1].end = PXA_GPIO_TO_IRQ(gpio_eth_irq); - platform_device_register(&smc91x_device); - - pxa_set_ac97_info(NULL); - zylonite_init_lcd(); - zylonite_init_mmc(); - zylonite_init_keypad(); - zylonite_init_nand(); - zylonite_init_leds(); - zylonite_init_ohci(); - zylonite_init_wm9713_audio(); -} - -MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") - .atag_offset = 0x100, - .map_io = pxa3xx_map_io, - .nr_irqs = ZYLONITE_NR_IRQS, - .init_irq = pxa3xx_init_irq, - .handle_irq = pxa3xx_handle_irq, - .timer = &pxa_timer, - .init_machine = zylonite_init, - .restart = pxa_restart, -MACHINE_END diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa300.c b/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa300.c deleted file mode 100644 index 86e59c04..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa300.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/zylonite_pxa300.c - * - * PXA300/PXA310 specific support code for the - * PXA3xx Development Platform (aka Zylonite) - * - * Copyright (C) 2007 Marvell Internation Ltd. - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/i2c.h> -#include <linux/i2c/pxa-i2c.h> -#include <linux/i2c/pca953x.h> -#include <linux/gpio.h> - -#include <mach/pxa300.h> -#include <mach/zylonite.h> - -#include "generic.h" - -/* PXA300/PXA310 common configurations */ -static mfp_cfg_t common_mfp_cfg[] __initdata = { - /* LCD */ - GPIO54_LCD_LDD_0, - GPIO55_LCD_LDD_1, - GPIO56_LCD_LDD_2, - GPIO57_LCD_LDD_3, - GPIO58_LCD_LDD_4, - GPIO59_LCD_LDD_5, - GPIO60_LCD_LDD_6, - GPIO61_LCD_LDD_7, - GPIO62_LCD_LDD_8, - GPIO63_LCD_LDD_9, - GPIO64_LCD_LDD_10, - GPIO65_LCD_LDD_11, - GPIO66_LCD_LDD_12, - GPIO67_LCD_LDD_13, - GPIO68_LCD_LDD_14, - GPIO69_LCD_LDD_15, - GPIO70_LCD_LDD_16, - GPIO71_LCD_LDD_17, - GPIO72_LCD_FCLK, - GPIO73_LCD_LCLK, - GPIO74_LCD_PCLK, - GPIO75_LCD_BIAS, - GPIO76_LCD_VSYNC, - GPIO127_LCD_CS_N, - GPIO20_PWM3_OUT, /* backlight */ - - /* BTUART */ - GPIO111_UART2_RTS, - GPIO112_UART2_RXD | MFP_LPM_EDGE_FALL, - GPIO113_UART2_TXD, - GPIO114_UART2_CTS | MFP_LPM_EDGE_BOTH, - - /* STUART */ - GPIO109_UART3_TXD, - GPIO110_UART3_RXD | MFP_LPM_EDGE_FALL, - - /* AC97 */ - GPIO23_AC97_nACRESET, - GPIO24_AC97_SYSCLK, - GPIO29_AC97_BITCLK, - GPIO25_AC97_SDATA_IN_0, - GPIO27_AC97_SDATA_OUT, - GPIO28_AC97_SYNC, - GPIO17_GPIO, /* SDATA_IN_1 but unused - configure to GPIO */ - - /* SSP3 */ - GPIO91_SSP3_SCLK, - GPIO92_SSP3_FRM, - GPIO93_SSP3_TXD, - GPIO94_SSP3_RXD, - - /* WM9713 IRQ */ - GPIO26_GPIO, - - /* Keypad */ - GPIO107_KP_DKIN_0 | MFP_LPM_EDGE_BOTH, - GPIO108_KP_DKIN_1 | MFP_LPM_EDGE_BOTH, - GPIO115_KP_MKIN_0 | MFP_LPM_EDGE_BOTH, - GPIO116_KP_MKIN_1 | MFP_LPM_EDGE_BOTH, - GPIO117_KP_MKIN_2 | MFP_LPM_EDGE_BOTH, - GPIO118_KP_MKIN_3 | MFP_LPM_EDGE_BOTH, - GPIO119_KP_MKIN_4 | MFP_LPM_EDGE_BOTH, - GPIO120_KP_MKIN_5 | MFP_LPM_EDGE_BOTH, - GPIO2_2_KP_MKIN_6 | MFP_LPM_EDGE_BOTH, - GPIO3_2_KP_MKIN_7 | MFP_LPM_EDGE_BOTH, - GPIO121_KP_MKOUT_0, - GPIO122_KP_MKOUT_1, - GPIO123_KP_MKOUT_2, - GPIO124_KP_MKOUT_3, - GPIO125_KP_MKOUT_4, - GPIO4_2_KP_MKOUT_5, - GPIO5_2_KP_MKOUT_6, - GPIO6_2_KP_MKOUT_7, - - /* MMC1 */ - GPIO3_MMC1_DAT0, - GPIO4_MMC1_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO5_MMC1_DAT2, - GPIO6_MMC1_DAT3, - GPIO7_MMC1_CLK, - GPIO8_MMC1_CMD, /* CMD0 for slot 0 */ - GPIO15_GPIO, /* CMD1 default as GPIO for slot 0 */ - - /* MMC2 */ - GPIO9_MMC2_DAT0, - GPIO10_MMC2_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO11_MMC2_DAT2, - GPIO12_MMC2_DAT3, - GPIO13_MMC2_CLK, - GPIO14_MMC2_CMD, - - /* USB Host */ - GPIO0_2_USBH_PEN, - GPIO1_2_USBH_PWR, - - /* Standard I2C */ - GPIO21_I2C_SCL, - GPIO22_I2C_SDA, - - /* GPIO */ - GPIO18_GPIO | MFP_PULL_HIGH, /* GPIO Expander #0 INT_N */ - GPIO19_GPIO | MFP_PULL_HIGH, /* GPIO Expander #1 INT_N */ -}; - -static mfp_cfg_t pxa300_mfp_cfg[] __initdata = { - /* FFUART */ - GPIO30_UART1_RXD | MFP_LPM_EDGE_FALL, - GPIO31_UART1_TXD, - GPIO32_UART1_CTS, - GPIO37_UART1_RTS, - GPIO33_UART1_DCD, - GPIO34_UART1_DSR | MFP_LPM_EDGE_FALL, - GPIO35_UART1_RI, - GPIO36_UART1_DTR, - - /* Ethernet */ - GPIO2_nCS3, - GPIO99_GPIO, -}; - -static mfp_cfg_t pxa310_mfp_cfg[] __initdata = { - /* FFUART */ - GPIO99_UART1_RXD | MFP_LPM_EDGE_FALL, - GPIO100_UART1_TXD, - GPIO101_UART1_CTS, - GPIO106_UART1_RTS, - - /* Ethernet */ - GPIO2_nCS3, - GPIO102_GPIO, - - /* MMC3 */ - GPIO7_2_MMC3_DAT0, - GPIO8_2_MMC3_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO9_2_MMC3_DAT2, - GPIO10_2_MMC3_DAT3, - GPIO103_MMC3_CLK, - GPIO105_MMC3_CMD, -}; - -#define NUM_LCD_DETECT_PINS 7 - -static int lcd_detect_pins[] __initdata = { - MFP_PIN_GPIO71, /* LCD_LDD_17 - ORIENT */ - MFP_PIN_GPIO70, /* LCD_LDD_16 - LCDID[5] */ - MFP_PIN_GPIO75, /* LCD_BIAS - LCDID[4] */ - MFP_PIN_GPIO73, /* LCD_LCLK - LCDID[3] */ - MFP_PIN_GPIO72, /* LCD_FCLK - LCDID[2] */ - MFP_PIN_GPIO127,/* LCD_CS_N - LCDID[1] */ - MFP_PIN_GPIO76, /* LCD_VSYNC - LCDID[0] */ -}; - -static void __init zylonite_detect_lcd_panel(void) -{ - unsigned long mfpr_save[NUM_LCD_DETECT_PINS]; - int i, gpio, id = 0; - - /* save the original MFP settings of these pins and configure - * them as GPIO Input, DS01X, Pull Neither, Edge Clear - */ - for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { - mfpr_save[i] = pxa3xx_mfp_read(lcd_detect_pins[i]); - pxa3xx_mfp_write(lcd_detect_pins[i], 0x8440); - } - - for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { - id = id << 1; - gpio = mfp_to_gpio(lcd_detect_pins[i]); - gpio_request(gpio, "LCD_ID_PINS"); - gpio_direction_input(gpio); - - if (gpio_get_value(gpio)) - id = id | 0x1; - gpio_free(gpio); - } - - /* lcd id, flush out bit 1 */ - lcd_id = id & 0x3d; - - /* lcd orientation, portrait or landscape */ - lcd_orientation = (id >> 6) & 0x1; - - /* restore the original MFP settings */ - for (i = 0; i < NUM_LCD_DETECT_PINS; i++) - pxa3xx_mfp_write(lcd_detect_pins[i], mfpr_save[i]); -} - -#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) -static struct pca953x_platform_data gpio_exp[] = { - [0] = { - .gpio_base = 128, - }, - [1] = { - .gpio_base = 144, - }, -}; - -static struct i2c_board_info zylonite_i2c_board_info[] = { - { - .type = "pca9539", - .addr = 0x74, - .platform_data = &gpio_exp[0], - .irq = PXA_GPIO_TO_IRQ(18), - }, { - .type = "pca9539", - .addr = 0x75, - .platform_data = &gpio_exp[1], - .irq = PXA_GPIO_TO_IRQ(19), - }, -}; - -static void __init zylonite_init_i2c(void) -{ - pxa_set_i2c_info(NULL); - i2c_register_board_info(0, ARRAY_AND_SIZE(zylonite_i2c_board_info)); -} -#else -static inline void zylonite_init_i2c(void) {} -#endif - -void __init zylonite_pxa300_init(void) -{ - if (cpu_is_pxa300() || cpu_is_pxa310()) { - /* initialize MFP */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(common_mfp_cfg)); - - /* detect LCD panel */ - zylonite_detect_lcd_panel(); - - /* WM9713 IRQ */ - wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO26); - - zylonite_init_i2c(); - } - - if (cpu_is_pxa300()) { - pxa3xx_mfp_config(ARRAY_AND_SIZE(pxa300_mfp_cfg)); - gpio_eth_irq = mfp_to_gpio(MFP_PIN_GPIO99); - } - - if (cpu_is_pxa310()) { - pxa3xx_mfp_config(ARRAY_AND_SIZE(pxa310_mfp_cfg)); - gpio_eth_irq = mfp_to_gpio(MFP_PIN_GPIO102); - } - - /* GPIOs for Debug LEDs */ - gpio_debug_led1 = EXT_GPIO(25); - gpio_debug_led2 = EXT_GPIO(26); -} diff --git a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa320.c b/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa320.c deleted file mode 100644 index 9942bac4..00000000 --- a/ANDROID_3.4.5/arch/arm/mach-pxa/zylonite_pxa320.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * linux/arch/arm/mach-pxa/zylonite_pxa320.c - * - * PXA320 specific support code for the - * PXA3xx Development Platform (aka Zylonite) - * - * Copyright (C) 2007 Marvell Internation Ltd. - * 2007-08-21: eric miao <eric.miao@marvell.com> - * initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/gpio.h> - -#include <mach/pxa320.h> -#include <mach/zylonite.h> - -#include "generic.h" - -static mfp_cfg_t mfp_cfg[] __initdata = { - /* LCD */ - GPIO6_2_LCD_LDD_0, - GPIO7_2_LCD_LDD_1, - GPIO8_2_LCD_LDD_2, - GPIO9_2_LCD_LDD_3, - GPIO10_2_LCD_LDD_4, - GPIO11_2_LCD_LDD_5, - GPIO12_2_LCD_LDD_6, - GPIO13_2_LCD_LDD_7, - GPIO63_LCD_LDD_8, - GPIO64_LCD_LDD_9, - GPIO65_LCD_LDD_10, - GPIO66_LCD_LDD_11, - GPIO67_LCD_LDD_12, - GPIO68_LCD_LDD_13, - GPIO69_LCD_LDD_14, - GPIO70_LCD_LDD_15, - GPIO71_LCD_LDD_16, - GPIO72_LCD_LDD_17, - GPIO73_LCD_CS_N, - GPIO74_LCD_VSYNC, - GPIO14_2_LCD_FCLK, - GPIO15_2_LCD_LCLK, - GPIO16_2_LCD_PCLK, - GPIO17_2_LCD_BIAS, - GPIO14_PWM3_OUT, /* backlight */ - - /* FFUART */ - GPIO41_UART1_RXD | MFP_LPM_EDGE_FALL, - GPIO42_UART1_TXD, - GPIO43_UART1_CTS, - GPIO44_UART1_DCD, - GPIO45_UART1_DSR | MFP_LPM_EDGE_FALL, - GPIO46_UART1_RI, - GPIO47_UART1_DTR, - GPIO48_UART1_RTS, - - /* AC97 */ - GPIO34_AC97_SYSCLK, - GPIO35_AC97_SDATA_IN_0, - GPIO37_AC97_SDATA_OUT, - GPIO38_AC97_SYNC, - GPIO39_AC97_BITCLK, - GPIO40_AC97_nACRESET, - GPIO36_GPIO, /* SDATA_IN_1 but unused - configure to GPIO */ - - /* SSP3 */ - GPIO89_SSP3_SCLK, - GPIO90_SSP3_FRM, - GPIO91_SSP3_TXD, - GPIO92_SSP3_RXD, - - /* WM9713 IRQ */ - GPIO15_GPIO, - - /* I2C */ - GPIO32_I2C_SCL, - GPIO33_I2C_SDA, - - /* Keypad */ - GPIO105_KP_DKIN_0 | MFP_LPM_EDGE_BOTH, - GPIO106_KP_DKIN_1 | MFP_LPM_EDGE_BOTH, - GPIO113_KP_MKIN_0 | MFP_LPM_EDGE_BOTH, - GPIO114_KP_MKIN_1 | MFP_LPM_EDGE_BOTH, - GPIO115_KP_MKIN_2 | MFP_LPM_EDGE_BOTH, - GPIO116_KP_MKIN_3 | MFP_LPM_EDGE_BOTH, - GPIO117_KP_MKIN_4 | MFP_LPM_EDGE_BOTH, - GPIO118_KP_MKIN_5 | MFP_LPM_EDGE_BOTH, - GPIO119_KP_MKIN_6 | MFP_LPM_EDGE_BOTH, - GPIO120_KP_MKIN_7 | MFP_LPM_EDGE_BOTH, - GPIO121_KP_MKOUT_0, - GPIO122_KP_MKOUT_1, - GPIO123_KP_MKOUT_2, - GPIO124_KP_MKOUT_3, - GPIO125_KP_MKOUT_4, - GPIO126_KP_MKOUT_5, - GPIO127_KP_MKOUT_6, - GPIO5_2_KP_MKOUT_7, - - /* Ethernet */ - GPIO4_nCS3, - GPIO90_GPIO, - - /* MMC1 */ - GPIO18_MMC1_DAT0, - GPIO19_MMC1_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO20_MMC1_DAT2, - GPIO21_MMC1_DAT3, - GPIO22_MMC1_CLK, - GPIO23_MMC1_CMD,/* CMD0 for slot 0 */ - GPIO31_GPIO, /* CMD1 default as GPIO for slot 0 */ - - /* MMC2 */ - GPIO24_MMC2_DAT0, - GPIO25_MMC2_DAT1 | MFP_LPM_EDGE_BOTH, - GPIO26_MMC2_DAT2, - GPIO27_MMC2_DAT3, - GPIO28_MMC2_CLK, - GPIO29_MMC2_CMD, - - /* USB Host */ - GPIO2_2_USBH_PEN, - GPIO3_2_USBH_PWR, - - /* Debug LEDs */ - GPIO1_2_GPIO | MFP_LPM_DRIVE_HIGH, - GPIO4_2_GPIO | MFP_LPM_DRIVE_HIGH, -}; - -#define NUM_LCD_DETECT_PINS 7 - -static int lcd_detect_pins[] __initdata = { - MFP_PIN_GPIO72, /* LCD_LDD_17 - ORIENT */ - MFP_PIN_GPIO71, /* LCD_LDD_16 - LCDID[5] */ - MFP_PIN_GPIO17_2, /* LCD_BIAS - LCDID[4] */ - MFP_PIN_GPIO15_2, /* LCD_LCLK - LCDID[3] */ - MFP_PIN_GPIO14_2, /* LCD_FCLK - LCDID[2] */ - MFP_PIN_GPIO73, /* LCD_CS_N - LCDID[1] */ - MFP_PIN_GPIO74, /* LCD_VSYNC - LCDID[0] */ - /* - * set the MFP_PIN_GPIO 14/15/17 to alternate function other than - * GPIO to avoid input level confliction with 14_2, 15_2, 17_2 - */ - MFP_PIN_GPIO14, - MFP_PIN_GPIO15, - MFP_PIN_GPIO17, -}; - -static int lcd_detect_mfpr[] __initdata = { - /* AF0, DS 1X, Pull Neither, Edge Clear */ - 0x8440, 0x8440, 0x8440, 0x8440, 0x8440, 0x8440, 0x8440, - 0xc442, /* Backlight, Pull-Up, AF2 */ - 0x8445, /* AF5 */ - 0x8445, /* AF5 */ -}; - -static void __init zylonite_detect_lcd_panel(void) -{ - unsigned long mfpr_save[ARRAY_SIZE(lcd_detect_pins)]; - int i, gpio, id = 0; - - /* save the original MFP settings of these pins and configure them - * as GPIO Input, DS01X, Pull Neither, Edge Clear - */ - for (i = 0; i < ARRAY_SIZE(lcd_detect_pins); i++) { - mfpr_save[i] = pxa3xx_mfp_read(lcd_detect_pins[i]); - pxa3xx_mfp_write(lcd_detect_pins[i], lcd_detect_mfpr[i]); - } - - for (i = 0; i < NUM_LCD_DETECT_PINS; i++) { - id = id << 1; - gpio = mfp_to_gpio(lcd_detect_pins[i]); - gpio_request(gpio, "LCD_ID_PINS"); - gpio_direction_input(gpio); - - if (gpio_get_value(gpio)) - id = id | 0x1; - gpio_free(gpio); - } - - /* lcd id, flush out bit 1 */ - lcd_id = id & 0x3d; - - /* lcd orientation, portrait or landscape */ - lcd_orientation = (id >> 6) & 0x1; - - /* restore the original MFP settings */ - for (i = 0; i < ARRAY_SIZE(lcd_detect_pins); i++) - pxa3xx_mfp_write(lcd_detect_pins[i], mfpr_save[i]); -} - -void __init zylonite_pxa320_init(void) -{ - if (cpu_is_pxa320()) { - /* initialize MFP */ - pxa3xx_mfp_config(ARRAY_AND_SIZE(mfp_cfg)); - - /* detect LCD panel */ - zylonite_detect_lcd_panel(); - - /* GPIO pin assignment */ - gpio_eth_irq = mfp_to_gpio(MFP_PIN_GPIO9); - gpio_debug_led1 = mfp_to_gpio(MFP_PIN_GPIO1_2); - gpio_debug_led2 = mfp_to_gpio(MFP_PIN_GPIO4_2); - - /* WM9713 IRQ */ - wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO15); - } -} |