diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-05-13 04:56:24 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-05-13 04:56:24 -0400 |
commit | 74b8721099992b76d3faff78cb8a5d13c65c3529 (patch) | |
tree | 2c9971160051cae98237715f791ce2b93a0720b5 /arch/arm | |
parent | 4bddaf66093ce0e0c1fce505f091f4cd52e73e2e (diff) | |
parent | baffe1699c68da5040de6b274054adc995795782 (diff) |
Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable
Diffstat (limited to 'arch/arm')
73 files changed, 2431 insertions, 2023 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 6ab6b337a913..c5191b1532e8 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -685,8 +685,8 @@ proc_types: | |||
685 | W(b) __armv4_mmu_cache_off | 685 | W(b) __armv4_mmu_cache_off |
686 | W(b) __armv4_mmu_cache_flush | 686 | W(b) __armv4_mmu_cache_flush |
687 | 687 | ||
688 | .word 0x56056930 | 688 | .word 0x56056900 |
689 | .word 0xff0ffff0 @ PXA935 | 689 | .word 0xffffff00 @ PXA9xx |
690 | W(b) __armv4_mmu_cache_on | 690 | W(b) __armv4_mmu_cache_on |
691 | W(b) __armv4_mmu_cache_off | 691 | W(b) __armv4_mmu_cache_off |
692 | W(b) __armv4_mmu_cache_flush | 692 | W(b) __armv4_mmu_cache_flush |
@@ -697,12 +697,6 @@ proc_types: | |||
697 | W(b) __armv4_mmu_cache_off | 697 | W(b) __armv4_mmu_cache_off |
698 | W(b) __armv5tej_mmu_cache_flush | 698 | W(b) __armv5tej_mmu_cache_flush |
699 | 699 | ||
700 | .word 0x56056930 | ||
701 | .word 0xff0ffff0 @ PXA935 | ||
702 | W(b) __armv4_mmu_cache_on | ||
703 | W(b) __armv4_mmu_cache_off | ||
704 | W(b) __armv4_mmu_cache_flush | ||
705 | |||
706 | .word 0x56050000 @ Feroceon | 700 | .word 0x56050000 @ Feroceon |
707 | .word 0xff0f0000 | 701 | .word 0xff0f0000 |
708 | W(b) __armv4_mmu_cache_on | 702 | W(b) __armv4_mmu_cache_on |
diff --git a/arch/arm/configs/imote2_defconfig b/arch/arm/configs/imote2_defconfig index 95d2becfc664..21f2bff8a363 100644 --- a/arch/arm/configs/imote2_defconfig +++ b/arch/arm/configs/imote2_defconfig | |||
@@ -1,13 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.33-rc8 | 3 | # Linux kernel version: 2.6.34-rc2 |
4 | # Sat Feb 13 21:48:53 2010 | 4 | # Thu Apr 8 14:49:08 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | 9 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_GENERIC_CLOCKEVENTS=y | 10 | CONFIG_GENERIC_CLOCKEVENTS=y |
11 | CONFIG_HAVE_PROC_CPU=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 12 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 14 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -19,6 +20,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
19 | CONFIG_ARCH_HAS_CPUFREQ=y | 20 | CONFIG_ARCH_HAS_CPUFREQ=y |
20 | CONFIG_GENERIC_HWEIGHT=y | 21 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
23 | CONFIG_NEED_DMA_MAP_STATE=y | ||
22 | CONFIG_ARCH_MTD_XIP=y | 24 | CONFIG_ARCH_MTD_XIP=y |
23 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 25 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
24 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -60,11 +62,6 @@ CONFIG_RCU_FANOUT=32 | |||
60 | # CONFIG_TREE_RCU_TRACE is not set | 62 | # CONFIG_TREE_RCU_TRACE is not set |
61 | # CONFIG_IKCONFIG is not set | 63 | # CONFIG_IKCONFIG is not set |
62 | CONFIG_LOG_BUF_SHIFT=14 | 64 | CONFIG_LOG_BUF_SHIFT=14 |
63 | CONFIG_GROUP_SCHED=y | ||
64 | CONFIG_FAIR_GROUP_SCHED=y | ||
65 | # CONFIG_RT_GROUP_SCHED is not set | ||
66 | CONFIG_USER_SCHED=y | ||
67 | # CONFIG_CGROUP_SCHED is not set | ||
68 | # CONFIG_CGROUPS is not set | 65 | # CONFIG_CGROUPS is not set |
69 | CONFIG_SYSFS_DEPRECATED=y | 66 | CONFIG_SYSFS_DEPRECATED=y |
70 | CONFIG_SYSFS_DEPRECATED_V2=y | 67 | CONFIG_SYSFS_DEPRECATED_V2=y |
@@ -97,10 +94,14 @@ CONFIG_TIMERFD=y | |||
97 | CONFIG_EVENTFD=y | 94 | CONFIG_EVENTFD=y |
98 | CONFIG_SHMEM=y | 95 | CONFIG_SHMEM=y |
99 | CONFIG_AIO=y | 96 | CONFIG_AIO=y |
97 | CONFIG_HAVE_PERF_EVENTS=y | ||
98 | CONFIG_PERF_USE_VMALLOC=y | ||
100 | 99 | ||
101 | # | 100 | # |
102 | # Kernel Performance Events And Counters | 101 | # Kernel Performance Events And Counters |
103 | # | 102 | # |
103 | # CONFIG_PERF_EVENTS is not set | ||
104 | # CONFIG_PERF_COUNTERS is not set | ||
104 | CONFIG_VM_EVENT_COUNTERS=y | 105 | CONFIG_VM_EVENT_COUNTERS=y |
105 | # CONFIG_COMPAT_BRK is not set | 106 | # CONFIG_COMPAT_BRK is not set |
106 | CONFIG_SLAB=y | 107 | CONFIG_SLAB=y |
@@ -184,6 +185,7 @@ CONFIG_MMU=y | |||
184 | # CONFIG_ARCH_REALVIEW is not set | 185 | # CONFIG_ARCH_REALVIEW is not set |
185 | # CONFIG_ARCH_VERSATILE is not set | 186 | # CONFIG_ARCH_VERSATILE is not set |
186 | # CONFIG_ARCH_AT91 is not set | 187 | # CONFIG_ARCH_AT91 is not set |
188 | # CONFIG_ARCH_BCMRING is not set | ||
187 | # CONFIG_ARCH_CLPS711X is not set | 189 | # CONFIG_ARCH_CLPS711X is not set |
188 | # CONFIG_ARCH_GEMINI is not set | 190 | # CONFIG_ARCH_GEMINI is not set |
189 | # CONFIG_ARCH_EBSA110 is not set | 191 | # CONFIG_ARCH_EBSA110 is not set |
@@ -193,7 +195,6 @@ CONFIG_MMU=y | |||
193 | # CONFIG_ARCH_STMP3XXX is not set | 195 | # CONFIG_ARCH_STMP3XXX is not set |
194 | # CONFIG_ARCH_NETX is not set | 196 | # CONFIG_ARCH_NETX is not set |
195 | # CONFIG_ARCH_H720X is not set | 197 | # CONFIG_ARCH_H720X is not set |
196 | # CONFIG_ARCH_NOMADIK is not set | ||
197 | # CONFIG_ARCH_IOP13XX is not set | 198 | # CONFIG_ARCH_IOP13XX is not set |
198 | # CONFIG_ARCH_IOP32X is not set | 199 | # CONFIG_ARCH_IOP32X is not set |
199 | # CONFIG_ARCH_IOP33X is not set | 200 | # CONFIG_ARCH_IOP33X is not set |
@@ -210,21 +211,26 @@ CONFIG_MMU=y | |||
210 | # CONFIG_ARCH_KS8695 is not set | 211 | # CONFIG_ARCH_KS8695 is not set |
211 | # CONFIG_ARCH_NS9XXX is not set | 212 | # CONFIG_ARCH_NS9XXX is not set |
212 | # CONFIG_ARCH_W90X900 is not set | 213 | # CONFIG_ARCH_W90X900 is not set |
214 | # CONFIG_ARCH_NUC93X is not set | ||
213 | # CONFIG_ARCH_PNX4008 is not set | 215 | # CONFIG_ARCH_PNX4008 is not set |
214 | CONFIG_ARCH_PXA=y | 216 | CONFIG_ARCH_PXA=y |
215 | # CONFIG_ARCH_MSM is not set | 217 | # CONFIG_ARCH_MSM is not set |
218 | # CONFIG_ARCH_SHMOBILE is not set | ||
216 | # CONFIG_ARCH_RPC is not set | 219 | # CONFIG_ARCH_RPC is not set |
217 | # CONFIG_ARCH_SA1100 is not set | 220 | # CONFIG_ARCH_SA1100 is not set |
218 | # CONFIG_ARCH_S3C2410 is not set | 221 | # CONFIG_ARCH_S3C2410 is not set |
219 | # CONFIG_ARCH_S3C64XX is not set | 222 | # CONFIG_ARCH_S3C64XX is not set |
223 | # CONFIG_ARCH_S5P6440 is not set | ||
224 | # CONFIG_ARCH_S5P6442 is not set | ||
220 | # CONFIG_ARCH_S5PC1XX is not set | 225 | # CONFIG_ARCH_S5PC1XX is not set |
226 | # CONFIG_ARCH_S5PV210 is not set | ||
221 | # CONFIG_ARCH_SHARK is not set | 227 | # CONFIG_ARCH_SHARK is not set |
222 | # CONFIG_ARCH_LH7A40X is not set | 228 | # CONFIG_ARCH_LH7A40X is not set |
223 | # CONFIG_ARCH_U300 is not set | 229 | # CONFIG_ARCH_U300 is not set |
230 | # CONFIG_ARCH_U8500 is not set | ||
231 | # CONFIG_ARCH_NOMADIK is not set | ||
224 | # CONFIG_ARCH_DAVINCI is not set | 232 | # CONFIG_ARCH_DAVINCI is not set |
225 | # CONFIG_ARCH_OMAP is not set | 233 | # CONFIG_ARCH_OMAP is not set |
226 | # CONFIG_ARCH_BCMRING is not set | ||
227 | # CONFIG_ARCH_U8500 is not set | ||
228 | 234 | ||
229 | # | 235 | # |
230 | # Intel PXA2xx/PXA3xx Implementations | 236 | # Intel PXA2xx/PXA3xx Implementations |
@@ -253,6 +259,7 @@ CONFIG_ARCH_PXA=y | |||
253 | # CONFIG_MACH_EM_X270 is not set | 259 | # CONFIG_MACH_EM_X270 is not set |
254 | # CONFIG_MACH_EXEDA is not set | 260 | # CONFIG_MACH_EXEDA is not set |
255 | # CONFIG_MACH_CM_X300 is not set | 261 | # CONFIG_MACH_CM_X300 is not set |
262 | # CONFIG_MACH_CAPC7117 is not set | ||
256 | # CONFIG_ARCH_GUMSTIX is not set | 263 | # CONFIG_ARCH_GUMSTIX is not set |
257 | CONFIG_MACH_INTELMOTE2=y | 264 | CONFIG_MACH_INTELMOTE2=y |
258 | # CONFIG_MACH_STARGATE2 is not set | 265 | # CONFIG_MACH_STARGATE2 is not set |
@@ -275,7 +282,11 @@ CONFIG_MACH_INTELMOTE2=y | |||
275 | # CONFIG_PXA_EZX is not set | 282 | # CONFIG_PXA_EZX is not set |
276 | # CONFIG_MACH_MP900C is not set | 283 | # CONFIG_MACH_MP900C is not set |
277 | # CONFIG_ARCH_PXA_PALM is not set | 284 | # CONFIG_ARCH_PXA_PALM is not set |
285 | # CONFIG_MACH_RAUMFELD_RC is not set | ||
286 | # CONFIG_MACH_RAUMFELD_CONNECTOR is not set | ||
287 | # CONFIG_MACH_RAUMFELD_SPEAKER is not set | ||
278 | # CONFIG_PXA_SHARPSL is not set | 288 | # CONFIG_PXA_SHARPSL is not set |
289 | # CONFIG_MACH_ICONTROL is not set | ||
279 | # CONFIG_ARCH_PXA_ESERIES is not set | 290 | # CONFIG_ARCH_PXA_ESERIES is not set |
280 | CONFIG_PXA27x=y | 291 | CONFIG_PXA27x=y |
281 | CONFIG_PXA_SSP=y | 292 | CONFIG_PXA_SSP=y |
@@ -302,6 +313,7 @@ CONFIG_ARM_THUMB=y | |||
302 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 313 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
303 | CONFIG_IWMMXT=y | 314 | CONFIG_IWMMXT=y |
304 | CONFIG_XSCALE_PMU=y | 315 | CONFIG_XSCALE_PMU=y |
316 | CONFIG_CPU_HAS_PMU=y | ||
305 | CONFIG_COMMON_CLKDEV=y | 317 | CONFIG_COMMON_CLKDEV=y |
306 | 318 | ||
307 | # | 319 | # |
@@ -352,7 +364,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
352 | # | 364 | # |
353 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 365 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
354 | CONFIG_ZBOOT_ROM_BSS=0x0 | 366 | CONFIG_ZBOOT_ROM_BSS=0x0 |
355 | CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=3 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug" | 367 | CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS2,115200 mem=32M" |
356 | # CONFIG_XIP_KERNEL is not set | 368 | # CONFIG_XIP_KERNEL is not set |
357 | CONFIG_KEXEC=y | 369 | CONFIG_KEXEC=y |
358 | CONFIG_ATAGS_PROC=y | 370 | CONFIG_ATAGS_PROC=y |
@@ -360,24 +372,8 @@ CONFIG_ATAGS_PROC=y | |||
360 | # | 372 | # |
361 | # CPU Power Management | 373 | # CPU Power Management |
362 | # | 374 | # |
363 | CONFIG_CPU_FREQ=y | 375 | # CONFIG_CPU_FREQ is not set |
364 | CONFIG_CPU_FREQ_TABLE=y | 376 | # CONFIG_CPU_IDLE is not set |
365 | CONFIG_CPU_FREQ_DEBUG=y | ||
366 | CONFIG_CPU_FREQ_STAT=y | ||
367 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | ||
368 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
369 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
370 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
371 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | ||
372 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | ||
373 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
374 | CONFIG_CPU_FREQ_GOV_POWERSAVE=m | ||
375 | CONFIG_CPU_FREQ_GOV_USERSPACE=m | ||
376 | CONFIG_CPU_FREQ_GOV_ONDEMAND=m | ||
377 | CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m | ||
378 | CONFIG_CPU_IDLE=y | ||
379 | CONFIG_CPU_IDLE_GOV_LADDER=y | ||
380 | CONFIG_CPU_IDLE_GOV_MENU=y | ||
381 | 377 | ||
382 | # | 378 | # |
383 | # Floating point emulation | 379 | # Floating point emulation |
@@ -409,6 +405,7 @@ CONFIG_SUSPEND=y | |||
409 | CONFIG_SUSPEND_FREEZER=y | 405 | CONFIG_SUSPEND_FREEZER=y |
410 | CONFIG_APM_EMULATION=y | 406 | CONFIG_APM_EMULATION=y |
411 | CONFIG_PM_RUNTIME=y | 407 | CONFIG_PM_RUNTIME=y |
408 | CONFIG_PM_OPS=y | ||
412 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | 409 | CONFIG_ARCH_SUSPEND_POSSIBLE=y |
413 | CONFIG_NET=y | 410 | CONFIG_NET=y |
414 | 411 | ||
@@ -416,7 +413,6 @@ CONFIG_NET=y | |||
416 | # Networking options | 413 | # Networking options |
417 | # | 414 | # |
418 | CONFIG_PACKET=y | 415 | CONFIG_PACKET=y |
419 | CONFIG_PACKET_MMAP=y | ||
420 | CONFIG_UNIX=y | 416 | CONFIG_UNIX=y |
421 | CONFIG_XFRM=y | 417 | CONFIG_XFRM=y |
422 | # CONFIG_XFRM_USER is not set | 418 | # CONFIG_XFRM_USER is not set |
@@ -506,6 +502,7 @@ CONFIG_NF_CT_NETLINK=m | |||
506 | CONFIG_NETFILTER_XTABLES=m | 502 | CONFIG_NETFILTER_XTABLES=m |
507 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 503 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
508 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set | 504 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set |
505 | # CONFIG_NETFILTER_XT_TARGET_CT is not set | ||
509 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | 506 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set |
510 | CONFIG_NETFILTER_XT_TARGET_HL=m | 507 | CONFIG_NETFILTER_XT_TARGET_HL=m |
511 | CONFIG_NETFILTER_XT_TARGET_LED=m | 508 | CONFIG_NETFILTER_XT_TARGET_LED=m |
@@ -622,6 +619,7 @@ CONFIG_IP6_NF_RAW=m | |||
622 | # CONFIG_ATM is not set | 619 | # CONFIG_ATM is not set |
623 | CONFIG_STP=m | 620 | CONFIG_STP=m |
624 | CONFIG_BRIDGE=m | 621 | CONFIG_BRIDGE=m |
622 | # CONFIG_BRIDGE_IGMP_SNOOPING is not set | ||
625 | # CONFIG_NET_DSA is not set | 623 | # CONFIG_NET_DSA is not set |
626 | # CONFIG_VLAN_8021Q is not set | 624 | # CONFIG_VLAN_8021Q is not set |
627 | # CONFIG_DECNET is not set | 625 | # CONFIG_DECNET is not set |
@@ -646,32 +644,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
646 | # CONFIG_HAMRADIO is not set | 644 | # CONFIG_HAMRADIO is not set |
647 | # CONFIG_CAN is not set | 645 | # CONFIG_CAN is not set |
648 | # CONFIG_IRDA is not set | 646 | # CONFIG_IRDA is not set |
649 | CONFIG_BT=y | 647 | # CONFIG_BT is not set |
650 | CONFIG_BT_L2CAP=y | ||
651 | CONFIG_BT_SCO=y | ||
652 | CONFIG_BT_RFCOMM=y | ||
653 | CONFIG_BT_RFCOMM_TTY=y | ||
654 | CONFIG_BT_BNEP=y | ||
655 | CONFIG_BT_BNEP_MC_FILTER=y | ||
656 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
657 | CONFIG_BT_HIDP=y | ||
658 | |||
659 | # | ||
660 | # Bluetooth device drivers | ||
661 | # | ||
662 | CONFIG_BT_HCIBTUSB=m | ||
663 | CONFIG_BT_HCIBTSDIO=m | ||
664 | CONFIG_BT_HCIUART=y | ||
665 | CONFIG_BT_HCIUART_H4=y | ||
666 | # CONFIG_BT_HCIUART_BCSP is not set | ||
667 | # CONFIG_BT_HCIUART_LL is not set | ||
668 | CONFIG_BT_HCIBCM203X=m | ||
669 | CONFIG_BT_HCIBPA10X=m | ||
670 | CONFIG_BT_HCIBFUSB=m | ||
671 | CONFIG_BT_HCIVHCI=m | ||
672 | CONFIG_BT_MRVL=m | ||
673 | CONFIG_BT_MRVL_SDIO=m | ||
674 | # CONFIG_BT_ATH3K is not set | ||
675 | # CONFIG_AF_RXRPC is not set | 648 | # CONFIG_AF_RXRPC is not set |
676 | CONFIG_FIB_RULES=y | 649 | CONFIG_FIB_RULES=y |
677 | # CONFIG_WIRELESS is not set | 650 | # CONFIG_WIRELESS is not set |
@@ -687,7 +660,8 @@ CONFIG_FIB_RULES=y | |||
687 | # Generic Driver Options | 660 | # Generic Driver Options |
688 | # | 661 | # |
689 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 662 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
690 | # CONFIG_DEVTMPFS is not set | 663 | CONFIG_DEVTMPFS=y |
664 | CONFIG_DEVTMPFS_MOUNT=y | ||
691 | CONFIG_STANDALONE=y | 665 | CONFIG_STANDALONE=y |
692 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 666 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
693 | CONFIG_FW_LOADER=m | 667 | CONFIG_FW_LOADER=m |
@@ -703,9 +677,9 @@ CONFIG_MTD=y | |||
703 | # CONFIG_MTD_CONCAT is not set | 677 | # CONFIG_MTD_CONCAT is not set |
704 | CONFIG_MTD_PARTITIONS=y | 678 | CONFIG_MTD_PARTITIONS=y |
705 | # CONFIG_MTD_REDBOOT_PARTS is not set | 679 | # CONFIG_MTD_REDBOOT_PARTS is not set |
706 | # CONFIG_MTD_CMDLINE_PARTS is not set | 680 | CONFIG_MTD_CMDLINE_PARTS=y |
707 | # CONFIG_MTD_AFS_PARTS is not set | 681 | CONFIG_MTD_AFS_PARTS=y |
708 | # CONFIG_MTD_AR7_PARTS is not set | 682 | CONFIG_MTD_AR7_PARTS=y |
709 | 683 | ||
710 | # | 684 | # |
711 | # User Modules And Translation Layers | 685 | # User Modules And Translation Layers |
@@ -812,6 +786,7 @@ CONFIG_HAVE_IDE=y | |||
812 | # | 786 | # |
813 | # SCSI device support | 787 | # SCSI device support |
814 | # | 788 | # |
789 | CONFIG_SCSI_MOD=y | ||
815 | # CONFIG_RAID_ATTRS is not set | 790 | # CONFIG_RAID_ATTRS is not set |
816 | # CONFIG_SCSI is not set | 791 | # CONFIG_SCSI is not set |
817 | # CONFIG_SCSI_DMA is not set | 792 | # CONFIG_SCSI_DMA is not set |
@@ -965,6 +940,7 @@ CONFIG_SERIAL_PXA=y | |||
965 | CONFIG_SERIAL_PXA_CONSOLE=y | 940 | CONFIG_SERIAL_PXA_CONSOLE=y |
966 | CONFIG_SERIAL_CORE=y | 941 | CONFIG_SERIAL_CORE=y |
967 | CONFIG_SERIAL_CORE_CONSOLE=y | 942 | CONFIG_SERIAL_CORE_CONSOLE=y |
943 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
968 | CONFIG_UNIX98_PTYS=y | 944 | CONFIG_UNIX98_PTYS=y |
969 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 945 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
970 | CONFIG_LEGACY_PTYS=y | 946 | CONFIG_LEGACY_PTYS=y |
@@ -993,6 +969,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
993 | CONFIG_I2C_PXA=y | 969 | CONFIG_I2C_PXA=y |
994 | # CONFIG_I2C_PXA_SLAVE is not set | 970 | # CONFIG_I2C_PXA_SLAVE is not set |
995 | # CONFIG_I2C_SIMTEC is not set | 971 | # CONFIG_I2C_SIMTEC is not set |
972 | # CONFIG_I2C_XILINX is not set | ||
996 | 973 | ||
997 | # | 974 | # |
998 | # External I2C/SMBus adapter drivers | 975 | # External I2C/SMBus adapter drivers |
@@ -1006,15 +983,9 @@ CONFIG_I2C_PXA=y | |||
1006 | # | 983 | # |
1007 | # CONFIG_I2C_PCA_PLATFORM is not set | 984 | # CONFIG_I2C_PCA_PLATFORM is not set |
1008 | # CONFIG_I2C_STUB is not set | 985 | # CONFIG_I2C_STUB is not set |
1009 | |||
1010 | # | ||
1011 | # Miscellaneous I2C Chip support | ||
1012 | # | ||
1013 | # CONFIG_SENSORS_TSL2550 is not set | ||
1014 | # CONFIG_I2C_DEBUG_CORE is not set | 986 | # CONFIG_I2C_DEBUG_CORE is not set |
1015 | # CONFIG_I2C_DEBUG_ALGO is not set | 987 | # CONFIG_I2C_DEBUG_ALGO is not set |
1016 | # CONFIG_I2C_DEBUG_BUS is not set | 988 | # CONFIG_I2C_DEBUG_BUS is not set |
1017 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
1018 | CONFIG_SPI=y | 989 | CONFIG_SPI=y |
1019 | # CONFIG_SPI_DEBUG is not set | 990 | # CONFIG_SPI_DEBUG is not set |
1020 | CONFIG_SPI_MASTER=y | 991 | CONFIG_SPI_MASTER=y |
@@ -1046,10 +1017,12 @@ CONFIG_GPIO_SYSFS=y | |||
1046 | # | 1017 | # |
1047 | # Memory mapped GPIO expanders: | 1018 | # Memory mapped GPIO expanders: |
1048 | # | 1019 | # |
1020 | # CONFIG_GPIO_IT8761E is not set | ||
1049 | 1021 | ||
1050 | # | 1022 | # |
1051 | # I2C GPIO expanders: | 1023 | # I2C GPIO expanders: |
1052 | # | 1024 | # |
1025 | # CONFIG_GPIO_MAX7300 is not set | ||
1053 | # CONFIG_GPIO_MAX732X is not set | 1026 | # CONFIG_GPIO_MAX732X is not set |
1054 | # CONFIG_GPIO_PCA953X is not set | 1027 | # CONFIG_GPIO_PCA953X is not set |
1055 | # CONFIG_GPIO_PCF857X is not set | 1028 | # CONFIG_GPIO_PCF857X is not set |
@@ -1093,10 +1066,12 @@ CONFIG_SSB_POSSIBLE=y | |||
1093 | # Multifunction device drivers | 1066 | # Multifunction device drivers |
1094 | # | 1067 | # |
1095 | # CONFIG_MFD_CORE is not set | 1068 | # CONFIG_MFD_CORE is not set |
1069 | # CONFIG_MFD_88PM860X is not set | ||
1096 | # CONFIG_MFD_SM501 is not set | 1070 | # CONFIG_MFD_SM501 is not set |
1097 | # CONFIG_MFD_ASIC3 is not set | 1071 | # CONFIG_MFD_ASIC3 is not set |
1098 | # CONFIG_HTC_EGPIO is not set | 1072 | # CONFIG_HTC_EGPIO is not set |
1099 | # CONFIG_HTC_PASIC3 is not set | 1073 | # CONFIG_HTC_PASIC3 is not set |
1074 | # CONFIG_HTC_I2CPLD is not set | ||
1100 | # CONFIG_TPS65010 is not set | 1075 | # CONFIG_TPS65010 is not set |
1101 | # CONFIG_TWL4030_CORE is not set | 1076 | # CONFIG_TWL4030_CORE is not set |
1102 | # CONFIG_MFD_TMIO is not set | 1077 | # CONFIG_MFD_TMIO is not set |
@@ -1105,22 +1080,25 @@ CONFIG_SSB_POSSIBLE=y | |||
1105 | # CONFIG_MFD_TC6393XB is not set | 1080 | # CONFIG_MFD_TC6393XB is not set |
1106 | CONFIG_PMIC_DA903X=y | 1081 | CONFIG_PMIC_DA903X=y |
1107 | # CONFIG_PMIC_ADP5520 is not set | 1082 | # CONFIG_PMIC_ADP5520 is not set |
1083 | # CONFIG_MFD_MAX8925 is not set | ||
1108 | # CONFIG_MFD_WM8400 is not set | 1084 | # CONFIG_MFD_WM8400 is not set |
1109 | # CONFIG_MFD_WM831X is not set | 1085 | # CONFIG_MFD_WM831X is not set |
1110 | # CONFIG_MFD_WM8350_I2C is not set | 1086 | # CONFIG_MFD_WM8350_I2C is not set |
1087 | # CONFIG_MFD_WM8994 is not set | ||
1111 | # CONFIG_MFD_PCF50633 is not set | 1088 | # CONFIG_MFD_PCF50633 is not set |
1112 | # CONFIG_MFD_MC13783 is not set | 1089 | # CONFIG_MFD_MC13783 is not set |
1113 | # CONFIG_AB3100_CORE is not set | 1090 | # CONFIG_AB3100_CORE is not set |
1114 | # CONFIG_EZX_PCAP is not set | 1091 | # CONFIG_EZX_PCAP is not set |
1115 | # CONFIG_MFD_88PM8607 is not set | ||
1116 | # CONFIG_AB4500_CORE is not set | 1092 | # CONFIG_AB4500_CORE is not set |
1117 | CONFIG_REGULATOR=y | 1093 | CONFIG_REGULATOR=y |
1118 | CONFIG_REGULATOR_DEBUG=y | 1094 | CONFIG_REGULATOR_DEBUG=y |
1095 | # CONFIG_REGULATOR_DUMMY is not set | ||
1119 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | 1096 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set |
1120 | CONFIG_REGULATOR_VIRTUAL_CONSUMER=y | 1097 | CONFIG_REGULATOR_VIRTUAL_CONSUMER=y |
1121 | CONFIG_REGULATOR_USERSPACE_CONSUMER=y | 1098 | CONFIG_REGULATOR_USERSPACE_CONSUMER=y |
1122 | # CONFIG_REGULATOR_BQ24022 is not set | 1099 | # CONFIG_REGULATOR_BQ24022 is not set |
1123 | # CONFIG_REGULATOR_MAX1586 is not set | 1100 | # CONFIG_REGULATOR_MAX1586 is not set |
1101 | # CONFIG_REGULATOR_MAX8649 is not set | ||
1124 | # CONFIG_REGULATOR_MAX8660 is not set | 1102 | # CONFIG_REGULATOR_MAX8660 is not set |
1125 | CONFIG_REGULATOR_DA903X=y | 1103 | CONFIG_REGULATOR_DA903X=y |
1126 | # CONFIG_REGULATOR_LP3971 is not set | 1104 | # CONFIG_REGULATOR_LP3971 is not set |
@@ -1218,6 +1196,7 @@ CONFIG_VIDEO_IR_I2C=y | |||
1218 | # CONFIG_VIDEO_SAA7191 is not set | 1196 | # CONFIG_VIDEO_SAA7191 is not set |
1219 | # CONFIG_VIDEO_TVP514X is not set | 1197 | # CONFIG_VIDEO_TVP514X is not set |
1220 | # CONFIG_VIDEO_TVP5150 is not set | 1198 | # CONFIG_VIDEO_TVP5150 is not set |
1199 | # CONFIG_VIDEO_TVP7002 is not set | ||
1221 | # CONFIG_VIDEO_VPX3220 is not set | 1200 | # CONFIG_VIDEO_VPX3220 is not set |
1222 | 1201 | ||
1223 | # | 1202 | # |
@@ -1264,15 +1243,7 @@ CONFIG_SOC_CAMERA_MT9M111=y | |||
1264 | CONFIG_VIDEO_PXA27x=y | 1243 | CONFIG_VIDEO_PXA27x=y |
1265 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set | 1244 | # CONFIG_VIDEO_SH_MOBILE_CEU is not set |
1266 | # CONFIG_V4L_USB_DRIVERS is not set | 1245 | # CONFIG_V4L_USB_DRIVERS is not set |
1267 | CONFIG_RADIO_ADAPTERS=y | 1246 | # CONFIG_RADIO_ADAPTERS is not set |
1268 | # CONFIG_I2C_SI4713 is not set | ||
1269 | # CONFIG_RADIO_SI4713 is not set | ||
1270 | # CONFIG_USB_DSBR is not set | ||
1271 | # CONFIG_RADIO_SI470X is not set | ||
1272 | # CONFIG_USB_MR800 is not set | ||
1273 | CONFIG_RADIO_TEA5764=y | ||
1274 | CONFIG_RADIO_TEA5764_XTAL=y | ||
1275 | # CONFIG_RADIO_TEF6862 is not set | ||
1276 | # CONFIG_DAB is not set | 1247 | # CONFIG_DAB is not set |
1277 | 1248 | ||
1278 | # | 1249 | # |
@@ -1398,8 +1369,6 @@ CONFIG_HID=y | |||
1398 | # | 1369 | # |
1399 | # Special HID drivers | 1370 | # Special HID drivers |
1400 | # | 1371 | # |
1401 | CONFIG_HID_APPLE=m | ||
1402 | # CONFIG_HID_WACOM is not set | ||
1403 | CONFIG_USB_SUPPORT=y | 1372 | CONFIG_USB_SUPPORT=y |
1404 | CONFIG_USB_ARCH_HAS_HCD=y | 1373 | CONFIG_USB_ARCH_HAS_HCD=y |
1405 | CONFIG_USB_ARCH_HAS_OHCI=y | 1374 | CONFIG_USB_ARCH_HAS_OHCI=y |
@@ -1477,7 +1446,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1477 | # CONFIG_USB_RIO500 is not set | 1446 | # CONFIG_USB_RIO500 is not set |
1478 | # CONFIG_USB_LEGOTOWER is not set | 1447 | # CONFIG_USB_LEGOTOWER is not set |
1479 | # CONFIG_USB_LCD is not set | 1448 | # CONFIG_USB_LCD is not set |
1480 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1481 | # CONFIG_USB_LED is not set | 1449 | # CONFIG_USB_LED is not set |
1482 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1450 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1483 | # CONFIG_USB_CYTHERM is not set | 1451 | # CONFIG_USB_CYTHERM is not set |
@@ -1489,7 +1457,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1489 | # CONFIG_USB_IOWARRIOR is not set | 1457 | # CONFIG_USB_IOWARRIOR is not set |
1490 | # CONFIG_USB_TEST is not set | 1458 | # CONFIG_USB_TEST is not set |
1491 | # CONFIG_USB_ISIGHTFW is not set | 1459 | # CONFIG_USB_ISIGHTFW is not set |
1492 | # CONFIG_USB_VST is not set | ||
1493 | CONFIG_USB_GADGET=y | 1460 | CONFIG_USB_GADGET=y |
1494 | # CONFIG_USB_GADGET_DEBUG is not set | 1461 | # CONFIG_USB_GADGET_DEBUG is not set |
1495 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 1462 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -1529,6 +1496,7 @@ CONFIG_USB_ETH=y | |||
1529 | # CONFIG_USB_MIDI_GADGET is not set | 1496 | # CONFIG_USB_MIDI_GADGET is not set |
1530 | # CONFIG_USB_G_PRINTER is not set | 1497 | # CONFIG_USB_G_PRINTER is not set |
1531 | # CONFIG_USB_CDC_COMPOSITE is not set | 1498 | # CONFIG_USB_CDC_COMPOSITE is not set |
1499 | # CONFIG_USB_G_NOKIA is not set | ||
1532 | # CONFIG_USB_G_MULTI is not set | 1500 | # CONFIG_USB_G_MULTI is not set |
1533 | 1501 | ||
1534 | # | 1502 | # |
@@ -1555,8 +1523,6 @@ CONFIG_SDIO_UART=m | |||
1555 | # | 1523 | # |
1556 | CONFIG_MMC_PXA=y | 1524 | CONFIG_MMC_PXA=y |
1557 | # CONFIG_MMC_SDHCI is not set | 1525 | # CONFIG_MMC_SDHCI is not set |
1558 | # CONFIG_MMC_AT91 is not set | ||
1559 | # CONFIG_MMC_ATMELMCI is not set | ||
1560 | CONFIG_MMC_SPI=y | 1526 | CONFIG_MMC_SPI=y |
1561 | # CONFIG_MEMSTICK is not set | 1527 | # CONFIG_MEMSTICK is not set |
1562 | CONFIG_NEW_LEDS=y | 1528 | CONFIG_NEW_LEDS=y |
@@ -1574,11 +1540,11 @@ CONFIG_LEDS_LP3944=y | |||
1574 | # CONFIG_LEDS_REGULATOR is not set | 1540 | # CONFIG_LEDS_REGULATOR is not set |
1575 | # CONFIG_LEDS_BD2802 is not set | 1541 | # CONFIG_LEDS_BD2802 is not set |
1576 | # CONFIG_LEDS_LT3593 is not set | 1542 | # CONFIG_LEDS_LT3593 is not set |
1543 | CONFIG_LEDS_TRIGGERS=y | ||
1577 | 1544 | ||
1578 | # | 1545 | # |
1579 | # LED Triggers | 1546 | # LED Triggers |
1580 | # | 1547 | # |
1581 | CONFIG_LEDS_TRIGGERS=y | ||
1582 | CONFIG_LEDS_TRIGGER_TIMER=y | 1548 | CONFIG_LEDS_TRIGGER_TIMER=y |
1583 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | 1549 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y |
1584 | CONFIG_LEDS_TRIGGER_BACKLIGHT=y | 1550 | CONFIG_LEDS_TRIGGER_BACKLIGHT=y |
@@ -1656,7 +1622,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1656 | # on-CPU RTC drivers | 1622 | # on-CPU RTC drivers |
1657 | # | 1623 | # |
1658 | # CONFIG_RTC_DRV_SA1100 is not set | 1624 | # CONFIG_RTC_DRV_SA1100 is not set |
1659 | # CONFIG_RTC_DRV_PXA is not set | 1625 | CONFIG_RTC_DRV_PXA=y |
1660 | # CONFIG_DMADEVICES is not set | 1626 | # CONFIG_DMADEVICES is not set |
1661 | # CONFIG_AUXDISPLAY is not set | 1627 | # CONFIG_AUXDISPLAY is not set |
1662 | # CONFIG_UIO is not set | 1628 | # CONFIG_UIO is not set |
@@ -1681,19 +1647,10 @@ CONFIG_EXT3_FS_XATTR=y | |||
1681 | CONFIG_JBD=m | 1647 | CONFIG_JBD=m |
1682 | # CONFIG_JBD_DEBUG is not set | 1648 | # CONFIG_JBD_DEBUG is not set |
1683 | CONFIG_FS_MBCACHE=m | 1649 | CONFIG_FS_MBCACHE=m |
1684 | CONFIG_REISERFS_FS=m | 1650 | # CONFIG_REISERFS_FS is not set |
1685 | # CONFIG_REISERFS_CHECK is not set | ||
1686 | # CONFIG_REISERFS_PROC_INFO is not set | ||
1687 | CONFIG_REISERFS_FS_XATTR=y | ||
1688 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
1689 | CONFIG_REISERFS_FS_SECURITY=y | ||
1690 | # CONFIG_JFS_FS is not set | 1651 | # CONFIG_JFS_FS is not set |
1691 | CONFIG_FS_POSIX_ACL=y | 1652 | CONFIG_FS_POSIX_ACL=y |
1692 | CONFIG_XFS_FS=m | 1653 | # CONFIG_XFS_FS is not set |
1693 | # CONFIG_XFS_QUOTA is not set | ||
1694 | # CONFIG_XFS_POSIX_ACL is not set | ||
1695 | # CONFIG_XFS_RT is not set | ||
1696 | # CONFIG_XFS_DEBUG is not set | ||
1697 | # CONFIG_OCFS2_FS is not set | 1654 | # CONFIG_OCFS2_FS is not set |
1698 | # CONFIG_BTRFS_FS is not set | 1655 | # CONFIG_BTRFS_FS is not set |
1699 | # CONFIG_NILFS2_FS is not set | 1656 | # CONFIG_NILFS2_FS is not set |
@@ -1716,9 +1673,7 @@ CONFIG_CUSE=m | |||
1716 | # | 1673 | # |
1717 | # CD-ROM/DVD Filesystems | 1674 | # CD-ROM/DVD Filesystems |
1718 | # | 1675 | # |
1719 | CONFIG_ISO9660_FS=m | 1676 | # CONFIG_ISO9660_FS is not set |
1720 | CONFIG_JOLIET=y | ||
1721 | CONFIG_ZISOFS=y | ||
1722 | # CONFIG_UDF_FS is not set | 1677 | # CONFIG_UDF_FS is not set |
1723 | 1678 | ||
1724 | # | 1679 | # |
@@ -1750,12 +1705,14 @@ CONFIG_MISC_FILESYSTEMS=y | |||
1750 | # CONFIG_BEFS_FS is not set | 1705 | # CONFIG_BEFS_FS is not set |
1751 | # CONFIG_BFS_FS is not set | 1706 | # CONFIG_BFS_FS is not set |
1752 | # CONFIG_EFS_FS is not set | 1707 | # CONFIG_EFS_FS is not set |
1753 | CONFIG_JFFS2_FS=m | 1708 | CONFIG_JFFS2_FS=y |
1754 | CONFIG_JFFS2_FS_DEBUG=0 | 1709 | CONFIG_JFFS2_FS_DEBUG=0 |
1755 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1710 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
1756 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | 1711 | CONFIG_JFFS2_FS_WBUF_VERIFY=y |
1757 | # CONFIG_JFFS2_SUMMARY is not set | 1712 | CONFIG_JFFS2_SUMMARY=y |
1758 | # CONFIG_JFFS2_FS_XATTR is not set | 1713 | CONFIG_JFFS2_FS_XATTR=y |
1714 | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
1715 | CONFIG_JFFS2_FS_SECURITY=y | ||
1759 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | 1716 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y |
1760 | CONFIG_JFFS2_ZLIB=y | 1717 | CONFIG_JFFS2_ZLIB=y |
1761 | CONFIG_JFFS2_LZO=y | 1718 | CONFIG_JFFS2_LZO=y |
@@ -1765,6 +1722,7 @@ CONFIG_JFFS2_RUBIN=y | |||
1765 | CONFIG_JFFS2_CMODE_PRIORITY=y | 1722 | CONFIG_JFFS2_CMODE_PRIORITY=y |
1766 | # CONFIG_JFFS2_CMODE_SIZE is not set | 1723 | # CONFIG_JFFS2_CMODE_SIZE is not set |
1767 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | 1724 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set |
1725 | # CONFIG_LOGFS is not set | ||
1768 | CONFIG_CRAMFS=m | 1726 | CONFIG_CRAMFS=m |
1769 | CONFIG_SQUASHFS=m | 1727 | CONFIG_SQUASHFS=m |
1770 | # CONFIG_SQUASHFS_EMBEDDED is not set | 1728 | # CONFIG_SQUASHFS_EMBEDDED is not set |
@@ -1802,6 +1760,7 @@ CONFIG_SUNRPC=y | |||
1802 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1760 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1803 | CONFIG_SMB_FS=m | 1761 | CONFIG_SMB_FS=m |
1804 | # CONFIG_SMB_NLS_DEFAULT is not set | 1762 | # CONFIG_SMB_NLS_DEFAULT is not set |
1763 | # CONFIG_CEPH_FS is not set | ||
1805 | CONFIG_CIFS=m | 1764 | CONFIG_CIFS=m |
1806 | CONFIG_CIFS_STATS=y | 1765 | CONFIG_CIFS_STATS=y |
1807 | # CONFIG_CIFS_STATS2 is not set | 1766 | # CONFIG_CIFS_STATS2 is not set |
@@ -1895,6 +1854,7 @@ CONFIG_DEBUG_SPINLOCK=y | |||
1895 | CONFIG_DEBUG_MUTEXES=y | 1854 | CONFIG_DEBUG_MUTEXES=y |
1896 | CONFIG_DEBUG_LOCK_ALLOC=y | 1855 | CONFIG_DEBUG_LOCK_ALLOC=y |
1897 | CONFIG_PROVE_LOCKING=y | 1856 | CONFIG_PROVE_LOCKING=y |
1857 | # CONFIG_PROVE_RCU is not set | ||
1898 | CONFIG_LOCKDEP=y | 1858 | CONFIG_LOCKDEP=y |
1899 | # CONFIG_LOCK_STAT is not set | 1859 | # CONFIG_LOCK_STAT is not set |
1900 | # CONFIG_DEBUG_LOCKDEP is not set | 1860 | # CONFIG_DEBUG_LOCKDEP is not set |
@@ -1918,6 +1878,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1918 | # CONFIG_BACKTRACE_SELF_TEST is not set | 1878 | # CONFIG_BACKTRACE_SELF_TEST is not set |
1919 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 1879 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
1920 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1880 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1881 | # CONFIG_LKDTM is not set | ||
1921 | # CONFIG_FAULT_INJECTION is not set | 1882 | # CONFIG_FAULT_INJECTION is not set |
1922 | # CONFIG_LATENCYTOP is not set | 1883 | # CONFIG_LATENCYTOP is not set |
1923 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1884 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
@@ -2061,9 +2022,9 @@ CONFIG_CRC32=y | |||
2061 | CONFIG_CRC7=y | 2022 | CONFIG_CRC7=y |
2062 | CONFIG_LIBCRC32C=m | 2023 | CONFIG_LIBCRC32C=m |
2063 | CONFIG_ZLIB_INFLATE=y | 2024 | CONFIG_ZLIB_INFLATE=y |
2064 | CONFIG_ZLIB_DEFLATE=m | 2025 | CONFIG_ZLIB_DEFLATE=y |
2065 | CONFIG_LZO_COMPRESS=m | 2026 | CONFIG_LZO_COMPRESS=y |
2066 | CONFIG_LZO_DECOMPRESS=m | 2027 | CONFIG_LZO_DECOMPRESS=y |
2067 | CONFIG_DECOMPRESS_GZIP=y | 2028 | CONFIG_DECOMPRESS_GZIP=y |
2068 | CONFIG_DECOMPRESS_BZIP2=y | 2029 | CONFIG_DECOMPRESS_BZIP2=y |
2069 | CONFIG_DECOMPRESS_LZMA=y | 2030 | CONFIG_DECOMPRESS_LZMA=y |
@@ -2075,3 +2036,4 @@ CONFIG_HAS_IOMEM=y | |||
2075 | CONFIG_HAS_IOPORT=y | 2036 | CONFIG_HAS_IOPORT=y |
2076 | CONFIG_HAS_DMA=y | 2037 | CONFIG_HAS_DMA=y |
2077 | CONFIG_NLATTR=y | 2038 | CONFIG_NLATTR=y |
2039 | CONFIG_GENERIC_ATOMIC64=y | ||
diff --git a/arch/arm/configs/mmp2_defconfig b/arch/arm/configs/mmp2_defconfig index 03f76cfc941c..4b55dcb60029 100644 --- a/arch/arm/configs/mmp2_defconfig +++ b/arch/arm/configs/mmp2_defconfig | |||
@@ -1,13 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.33-rc2 | 3 | # Linux kernel version: 2.6.34-rc5 |
4 | # Tue Jan 5 13:55:22 2010 | 4 | # Wed Apr 28 11:23:19 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | 9 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_GENERIC_CLOCKEVENTS=y | 10 | CONFIG_GENERIC_CLOCKEVENTS=y |
11 | CONFIG_HAVE_PROC_CPU=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 12 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 14 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
@@ -18,6 +19,7 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 19 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
19 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_NEED_DMA_MAP_STATE=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 23 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
22 | CONFIG_VECTORS_BASE=0xffff0000 | 24 | CONFIG_VECTORS_BASE=0xffff0000 |
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 25 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -32,6 +34,12 @@ CONFIG_LOCK_KERNEL=y | |||
32 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 34 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
33 | CONFIG_LOCALVERSION="" | 35 | CONFIG_LOCALVERSION="" |
34 | CONFIG_LOCALVERSION_AUTO=y | 36 | CONFIG_LOCALVERSION_AUTO=y |
37 | CONFIG_HAVE_KERNEL_GZIP=y | ||
38 | CONFIG_HAVE_KERNEL_LZO=y | ||
39 | CONFIG_KERNEL_GZIP=y | ||
40 | # CONFIG_KERNEL_BZIP2 is not set | ||
41 | # CONFIG_KERNEL_LZMA is not set | ||
42 | # CONFIG_KERNEL_LZO is not set | ||
35 | CONFIG_SWAP=y | 43 | CONFIG_SWAP=y |
36 | CONFIG_SYSVIPC=y | 44 | CONFIG_SYSVIPC=y |
37 | CONFIG_SYSVIPC_SYSCTL=y | 45 | CONFIG_SYSVIPC_SYSCTL=y |
@@ -52,7 +60,6 @@ CONFIG_RCU_FANOUT=32 | |||
52 | # CONFIG_TREE_RCU_TRACE is not set | 60 | # CONFIG_TREE_RCU_TRACE is not set |
53 | # CONFIG_IKCONFIG is not set | 61 | # CONFIG_IKCONFIG is not set |
54 | CONFIG_LOG_BUF_SHIFT=14 | 62 | CONFIG_LOG_BUF_SHIFT=14 |
55 | # CONFIG_GROUP_SCHED is not set | ||
56 | # CONFIG_CGROUPS is not set | 63 | # CONFIG_CGROUPS is not set |
57 | CONFIG_SYSFS_DEPRECATED=y | 64 | CONFIG_SYSFS_DEPRECATED=y |
58 | CONFIG_SYSFS_DEPRECATED_V2=y | 65 | CONFIG_SYSFS_DEPRECATED_V2=y |
@@ -85,10 +92,14 @@ CONFIG_TIMERFD=y | |||
85 | CONFIG_EVENTFD=y | 92 | CONFIG_EVENTFD=y |
86 | CONFIG_SHMEM=y | 93 | CONFIG_SHMEM=y |
87 | CONFIG_AIO=y | 94 | CONFIG_AIO=y |
95 | CONFIG_HAVE_PERF_EVENTS=y | ||
96 | CONFIG_PERF_USE_VMALLOC=y | ||
88 | 97 | ||
89 | # | 98 | # |
90 | # Kernel Performance Events And Counters | 99 | # Kernel Performance Events And Counters |
91 | # | 100 | # |
101 | # CONFIG_PERF_EVENTS is not set | ||
102 | # CONFIG_PERF_COUNTERS is not set | ||
92 | CONFIG_VM_EVENT_COUNTERS=y | 103 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_COMPAT_BRK=y | 104 | CONFIG_COMPAT_BRK=y |
94 | CONFIG_SLAB=y | 105 | CONFIG_SLAB=y |
@@ -104,6 +115,7 @@ CONFIG_HAVE_CLK=y | |||
104 | # | 115 | # |
105 | # GCOV-based kernel profiling | 116 | # GCOV-based kernel profiling |
106 | # | 117 | # |
118 | # CONFIG_GCOV_KERNEL is not set | ||
107 | # CONFIG_SLOW_WORK is not set | 119 | # CONFIG_SLOW_WORK is not set |
108 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | 120 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y |
109 | CONFIG_SLABINFO=y | 121 | CONFIG_SLABINFO=y |
@@ -170,6 +182,7 @@ CONFIG_MMU=y | |||
170 | # CONFIG_ARCH_REALVIEW is not set | 182 | # CONFIG_ARCH_REALVIEW is not set |
171 | # CONFIG_ARCH_VERSATILE is not set | 183 | # CONFIG_ARCH_VERSATILE is not set |
172 | # CONFIG_ARCH_AT91 is not set | 184 | # CONFIG_ARCH_AT91 is not set |
185 | # CONFIG_ARCH_BCMRING is not set | ||
173 | # CONFIG_ARCH_CLPS711X is not set | 186 | # CONFIG_ARCH_CLPS711X is not set |
174 | # CONFIG_ARCH_GEMINI is not set | 187 | # CONFIG_ARCH_GEMINI is not set |
175 | # CONFIG_ARCH_EBSA110 is not set | 188 | # CONFIG_ARCH_EBSA110 is not set |
@@ -179,7 +192,6 @@ CONFIG_MMU=y | |||
179 | # CONFIG_ARCH_STMP3XXX is not set | 192 | # CONFIG_ARCH_STMP3XXX is not set |
180 | # CONFIG_ARCH_NETX is not set | 193 | # CONFIG_ARCH_NETX is not set |
181 | # CONFIG_ARCH_H720X is not set | 194 | # CONFIG_ARCH_H720X is not set |
182 | # CONFIG_ARCH_NOMADIK is not set | ||
183 | # CONFIG_ARCH_IOP13XX is not set | 195 | # CONFIG_ARCH_IOP13XX is not set |
184 | # CONFIG_ARCH_IOP32X is not set | 196 | # CONFIG_ARCH_IOP32X is not set |
185 | # CONFIG_ARCH_IOP33X is not set | 197 | # CONFIG_ARCH_IOP33X is not set |
@@ -196,21 +208,26 @@ CONFIG_ARCH_MMP=y | |||
196 | # CONFIG_ARCH_KS8695 is not set | 208 | # CONFIG_ARCH_KS8695 is not set |
197 | # CONFIG_ARCH_NS9XXX is not set | 209 | # CONFIG_ARCH_NS9XXX is not set |
198 | # CONFIG_ARCH_W90X900 is not set | 210 | # CONFIG_ARCH_W90X900 is not set |
211 | # CONFIG_ARCH_NUC93X is not set | ||
199 | # CONFIG_ARCH_PNX4008 is not set | 212 | # CONFIG_ARCH_PNX4008 is not set |
200 | # CONFIG_ARCH_PXA is not set | 213 | # CONFIG_ARCH_PXA is not set |
201 | # CONFIG_ARCH_MSM is not set | 214 | # CONFIG_ARCH_MSM is not set |
215 | # CONFIG_ARCH_SHMOBILE is not set | ||
202 | # CONFIG_ARCH_RPC is not set | 216 | # CONFIG_ARCH_RPC is not set |
203 | # CONFIG_ARCH_SA1100 is not set | 217 | # CONFIG_ARCH_SA1100 is not set |
204 | # CONFIG_ARCH_S3C2410 is not set | 218 | # CONFIG_ARCH_S3C2410 is not set |
205 | # CONFIG_ARCH_S3C64XX is not set | 219 | # CONFIG_ARCH_S3C64XX is not set |
220 | # CONFIG_ARCH_S5P6440 is not set | ||
221 | # CONFIG_ARCH_S5P6442 is not set | ||
206 | # CONFIG_ARCH_S5PC1XX is not set | 222 | # CONFIG_ARCH_S5PC1XX is not set |
223 | # CONFIG_ARCH_S5PV210 is not set | ||
207 | # CONFIG_ARCH_SHARK is not set | 224 | # CONFIG_ARCH_SHARK is not set |
208 | # CONFIG_ARCH_LH7A40X is not set | 225 | # CONFIG_ARCH_LH7A40X is not set |
209 | # CONFIG_ARCH_U300 is not set | 226 | # CONFIG_ARCH_U300 is not set |
227 | # CONFIG_ARCH_U8500 is not set | ||
228 | # CONFIG_ARCH_NOMADIK is not set | ||
210 | # CONFIG_ARCH_DAVINCI is not set | 229 | # CONFIG_ARCH_DAVINCI is not set |
211 | # CONFIG_ARCH_OMAP is not set | 230 | # CONFIG_ARCH_OMAP is not set |
212 | # CONFIG_ARCH_BCMRING is not set | ||
213 | # CONFIG_ARCH_U8500 is not set | ||
214 | # CONFIG_MACH_TAVOREVB is not set | 231 | # CONFIG_MACH_TAVOREVB is not set |
215 | 232 | ||
216 | # | 233 | # |
@@ -218,8 +235,10 @@ CONFIG_ARCH_MMP=y | |||
218 | # | 235 | # |
219 | # CONFIG_MACH_ASPENITE is not set | 236 | # CONFIG_MACH_ASPENITE is not set |
220 | # CONFIG_MACH_ZYLONITE2 is not set | 237 | # CONFIG_MACH_ZYLONITE2 is not set |
238 | # CONFIG_MACH_AVENGERS_LITE is not set | ||
221 | # CONFIG_MACH_TTC_DKB is not set | 239 | # CONFIG_MACH_TTC_DKB is not set |
222 | CONFIG_MACH_FLINT=y | 240 | CONFIG_MACH_FLINT=y |
241 | CONFIG_MACH_MARVELL_JASPER=y | ||
223 | CONFIG_CPU_MMP2=y | 242 | CONFIG_CPU_MMP2=y |
224 | CONFIG_PLAT_PXA=y | 243 | CONFIG_PLAT_PXA=y |
225 | 244 | ||
@@ -246,7 +265,10 @@ CONFIG_ARM_THUMB=y | |||
246 | # CONFIG_CPU_ICACHE_DISABLE is not set | 265 | # CONFIG_CPU_ICACHE_DISABLE is not set |
247 | # CONFIG_CPU_DCACHE_DISABLE is not set | 266 | # CONFIG_CPU_DCACHE_DISABLE is not set |
248 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 267 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
268 | CONFIG_OUTER_CACHE=y | ||
269 | CONFIG_CACHE_TAUROS2=y | ||
249 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 270 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
271 | CONFIG_CPU_HAS_PMU=y | ||
250 | # CONFIG_ARM_ERRATA_411920 is not set | 272 | # CONFIG_ARM_ERRATA_411920 is not set |
251 | CONFIG_COMMON_CLKDEV=y | 273 | CONFIG_COMMON_CLKDEV=y |
252 | 274 | ||
@@ -298,7 +320,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
298 | # | 320 | # |
299 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 321 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
300 | CONFIG_ZBOOT_ROM_BSS=0x0 | 322 | CONFIG_ZBOOT_ROM_BSS=0x0 |
301 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=128M user_debug=255" | 323 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS2,38400 mem=128M user_debug=255" |
302 | # CONFIG_XIP_KERNEL is not set | 324 | # CONFIG_XIP_KERNEL is not set |
303 | # CONFIG_KEXEC is not set | 325 | # CONFIG_KEXEC is not set |
304 | 326 | ||
@@ -338,7 +360,6 @@ CONFIG_NET=y | |||
338 | # Networking options | 360 | # Networking options |
339 | # | 361 | # |
340 | CONFIG_PACKET=y | 362 | CONFIG_PACKET=y |
341 | # CONFIG_PACKET_MMAP is not set | ||
342 | CONFIG_UNIX=y | 363 | CONFIG_UNIX=y |
343 | CONFIG_XFRM=y | 364 | CONFIG_XFRM=y |
344 | # CONFIG_XFRM_USER is not set | 365 | # CONFIG_XFRM_USER is not set |
@@ -532,6 +553,7 @@ CONFIG_HAVE_IDE=y | |||
532 | # | 553 | # |
533 | # SCSI device support | 554 | # SCSI device support |
534 | # | 555 | # |
556 | CONFIG_SCSI_MOD=y | ||
535 | # CONFIG_RAID_ATTRS is not set | 557 | # CONFIG_RAID_ATTRS is not set |
536 | # CONFIG_SCSI is not set | 558 | # CONFIG_SCSI is not set |
537 | # CONFIG_SCSI_DMA is not set | 559 | # CONFIG_SCSI_DMA is not set |
@@ -640,6 +662,7 @@ CONFIG_SERIAL_PXA=y | |||
640 | CONFIG_SERIAL_PXA_CONSOLE=y | 662 | CONFIG_SERIAL_PXA_CONSOLE=y |
641 | CONFIG_SERIAL_CORE=y | 663 | CONFIG_SERIAL_CORE=y |
642 | CONFIG_SERIAL_CORE_CONSOLE=y | 664 | CONFIG_SERIAL_CORE_CONSOLE=y |
665 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
643 | CONFIG_UNIX98_PTYS=y | 666 | CONFIG_UNIX98_PTYS=y |
644 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 667 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
645 | # CONFIG_LEGACY_PTYS is not set | 668 | # CONFIG_LEGACY_PTYS is not set |
@@ -667,6 +690,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
667 | CONFIG_I2C_PXA=y | 690 | CONFIG_I2C_PXA=y |
668 | # CONFIG_I2C_PXA_SLAVE is not set | 691 | # CONFIG_I2C_PXA_SLAVE is not set |
669 | # CONFIG_I2C_SIMTEC is not set | 692 | # CONFIG_I2C_SIMTEC is not set |
693 | # CONFIG_I2C_XILINX is not set | ||
670 | 694 | ||
671 | # | 695 | # |
672 | # External I2C/SMBus adapter drivers | 696 | # External I2C/SMBus adapter drivers |
@@ -679,15 +703,9 @@ CONFIG_I2C_PXA=y | |||
679 | # | 703 | # |
680 | # CONFIG_I2C_PCA_PLATFORM is not set | 704 | # CONFIG_I2C_PCA_PLATFORM is not set |
681 | # CONFIG_I2C_STUB is not set | 705 | # CONFIG_I2C_STUB is not set |
682 | |||
683 | # | ||
684 | # Miscellaneous I2C Chip support | ||
685 | # | ||
686 | # CONFIG_SENSORS_TSL2550 is not set | ||
687 | # CONFIG_I2C_DEBUG_CORE is not set | 706 | # CONFIG_I2C_DEBUG_CORE is not set |
688 | # CONFIG_I2C_DEBUG_ALGO is not set | 707 | # CONFIG_I2C_DEBUG_ALGO is not set |
689 | # CONFIG_I2C_DEBUG_BUS is not set | 708 | # CONFIG_I2C_DEBUG_BUS is not set |
690 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
691 | # CONFIG_SPI is not set | 709 | # CONFIG_SPI is not set |
692 | 710 | ||
693 | # | 711 | # |
@@ -702,13 +720,16 @@ CONFIG_GPIOLIB=y | |||
702 | # | 720 | # |
703 | # Memory mapped GPIO expanders: | 721 | # Memory mapped GPIO expanders: |
704 | # | 722 | # |
723 | # CONFIG_GPIO_IT8761E is not set | ||
705 | 724 | ||
706 | # | 725 | # |
707 | # I2C GPIO expanders: | 726 | # I2C GPIO expanders: |
708 | # | 727 | # |
728 | # CONFIG_GPIO_MAX7300 is not set | ||
709 | # CONFIG_GPIO_MAX732X is not set | 729 | # CONFIG_GPIO_MAX732X is not set |
710 | # CONFIG_GPIO_PCA953X is not set | 730 | # CONFIG_GPIO_PCA953X is not set |
711 | # CONFIG_GPIO_PCF857X is not set | 731 | # CONFIG_GPIO_PCF857X is not set |
732 | # CONFIG_GPIO_ADP5588 is not set | ||
712 | 733 | ||
713 | # | 734 | # |
714 | # PCI GPIO expanders: | 735 | # PCI GPIO expanders: |
@@ -737,10 +758,12 @@ CONFIG_SSB_POSSIBLE=y | |||
737 | # Multifunction device drivers | 758 | # Multifunction device drivers |
738 | # | 759 | # |
739 | CONFIG_MFD_CORE=y | 760 | CONFIG_MFD_CORE=y |
761 | # CONFIG_MFD_88PM860X is not set | ||
740 | # CONFIG_MFD_SM501 is not set | 762 | # CONFIG_MFD_SM501 is not set |
741 | # CONFIG_MFD_ASIC3 is not set | 763 | # CONFIG_MFD_ASIC3 is not set |
742 | # CONFIG_HTC_EGPIO is not set | 764 | # CONFIG_HTC_EGPIO is not set |
743 | # CONFIG_HTC_PASIC3 is not set | 765 | # CONFIG_HTC_PASIC3 is not set |
766 | # CONFIG_HTC_I2CPLD is not set | ||
744 | # CONFIG_TPS65010 is not set | 767 | # CONFIG_TPS65010 is not set |
745 | # CONFIG_TWL4030_CORE is not set | 768 | # CONFIG_TWL4030_CORE is not set |
746 | # CONFIG_MFD_TMIO is not set | 769 | # CONFIG_MFD_TMIO is not set |
@@ -749,24 +772,27 @@ CONFIG_MFD_CORE=y | |||
749 | # CONFIG_MFD_TC6393XB is not set | 772 | # CONFIG_MFD_TC6393XB is not set |
750 | # CONFIG_PMIC_DA903X is not set | 773 | # CONFIG_PMIC_DA903X is not set |
751 | # CONFIG_PMIC_ADP5520 is not set | 774 | # CONFIG_PMIC_ADP5520 is not set |
775 | CONFIG_MFD_MAX8925=y | ||
752 | # CONFIG_MFD_WM8400 is not set | 776 | # CONFIG_MFD_WM8400 is not set |
753 | # CONFIG_MFD_WM831X is not set | 777 | # CONFIG_MFD_WM831X is not set |
754 | # CONFIG_MFD_WM8350_I2C is not set | 778 | # CONFIG_MFD_WM8350_I2C is not set |
779 | # CONFIG_MFD_WM8994 is not set | ||
755 | # CONFIG_MFD_PCF50633 is not set | 780 | # CONFIG_MFD_PCF50633 is not set |
756 | # CONFIG_AB3100_CORE is not set | 781 | # CONFIG_AB3100_CORE is not set |
757 | CONFIG_MFD_88PM8607=y | ||
758 | CONFIG_REGULATOR=y | 782 | CONFIG_REGULATOR=y |
759 | # CONFIG_REGULATOR_DEBUG is not set | 783 | # CONFIG_REGULATOR_DEBUG is not set |
784 | # CONFIG_REGULATOR_DUMMY is not set | ||
760 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | 785 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set |
761 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | 786 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set |
762 | # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set | 787 | # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set |
763 | # CONFIG_REGULATOR_BQ24022 is not set | 788 | # CONFIG_REGULATOR_BQ24022 is not set |
764 | # CONFIG_REGULATOR_MAX1586 is not set | 789 | # CONFIG_REGULATOR_MAX1586 is not set |
765 | CONFIG_REGULATOR_MAX8660=y | 790 | CONFIG_REGULATOR_MAX8649=y |
791 | # CONFIG_REGULATOR_MAX8660 is not set | ||
792 | CONFIG_REGULATOR_MAX8925=y | ||
766 | # CONFIG_REGULATOR_LP3971 is not set | 793 | # CONFIG_REGULATOR_LP3971 is not set |
767 | # CONFIG_REGULATOR_TPS65023 is not set | 794 | # CONFIG_REGULATOR_TPS65023 is not set |
768 | # CONFIG_REGULATOR_TPS6507X is not set | 795 | # CONFIG_REGULATOR_TPS6507X is not set |
769 | CONFIG_REGULATOR_88PM8607=y | ||
770 | # CONFIG_MEDIA_SUPPORT is not set | 796 | # CONFIG_MEDIA_SUPPORT is not set |
771 | 797 | ||
772 | # | 798 | # |
@@ -781,6 +807,7 @@ CONFIG_LCD_CLASS_DEVICE=y | |||
781 | # CONFIG_LCD_PLATFORM is not set | 807 | # CONFIG_LCD_PLATFORM is not set |
782 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | 808 | CONFIG_BACKLIGHT_CLASS_DEVICE=y |
783 | CONFIG_BACKLIGHT_GENERIC=y | 809 | CONFIG_BACKLIGHT_GENERIC=y |
810 | CONFIG_BACKLIGHT_MAX8925=y | ||
784 | 811 | ||
785 | # | 812 | # |
786 | # Display device support | 813 | # Display device support |
@@ -821,6 +848,7 @@ CONFIG_RTC_INTF_DEV=y | |||
821 | # CONFIG_RTC_DRV_DS1374 is not set | 848 | # CONFIG_RTC_DRV_DS1374 is not set |
822 | # CONFIG_RTC_DRV_DS1672 is not set | 849 | # CONFIG_RTC_DRV_DS1672 is not set |
823 | # CONFIG_RTC_DRV_MAX6900 is not set | 850 | # CONFIG_RTC_DRV_MAX6900 is not set |
851 | CONFIG_RTC_DRV_MAX8925=y | ||
824 | # CONFIG_RTC_DRV_RS5C372 is not set | 852 | # CONFIG_RTC_DRV_RS5C372 is not set |
825 | # CONFIG_RTC_DRV_ISL1208 is not set | 853 | # CONFIG_RTC_DRV_ISL1208 is not set |
826 | # CONFIG_RTC_DRV_X1205 is not set | 854 | # CONFIG_RTC_DRV_X1205 is not set |
@@ -872,7 +900,6 @@ CONFIG_RTC_INTF_DEV=y | |||
872 | # CONFIG_EXT2_FS is not set | 900 | # CONFIG_EXT2_FS is not set |
873 | # CONFIG_EXT3_FS is not set | 901 | # CONFIG_EXT3_FS is not set |
874 | # CONFIG_EXT4_FS is not set | 902 | # CONFIG_EXT4_FS is not set |
875 | CONFIG_EXT4_USE_FOR_EXT23=y | ||
876 | # CONFIG_REISERFS_FS is not set | 903 | # CONFIG_REISERFS_FS is not set |
877 | # CONFIG_JFS_FS is not set | 904 | # CONFIG_JFS_FS is not set |
878 | CONFIG_FS_POSIX_ACL=y | 905 | CONFIG_FS_POSIX_ACL=y |
@@ -883,7 +910,7 @@ CONFIG_FS_POSIX_ACL=y | |||
883 | # CONFIG_NILFS2_FS is not set | 910 | # CONFIG_NILFS2_FS is not set |
884 | CONFIG_FILE_LOCKING=y | 911 | CONFIG_FILE_LOCKING=y |
885 | CONFIG_FSNOTIFY=y | 912 | CONFIG_FSNOTIFY=y |
886 | CONFIG_DNOTIFY=y | 913 | # CONFIG_DNOTIFY is not set |
887 | CONFIG_INOTIFY=y | 914 | CONFIG_INOTIFY=y |
888 | CONFIG_INOTIFY_USER=y | 915 | CONFIG_INOTIFY_USER=y |
889 | # CONFIG_QUOTA is not set | 916 | # CONFIG_QUOTA is not set |
@@ -940,6 +967,7 @@ CONFIG_JFFS2_ZLIB=y | |||
940 | # CONFIG_JFFS2_LZO is not set | 967 | # CONFIG_JFFS2_LZO is not set |
941 | CONFIG_JFFS2_RTIME=y | 968 | CONFIG_JFFS2_RTIME=y |
942 | # CONFIG_JFFS2_RUBIN is not set | 969 | # CONFIG_JFFS2_RUBIN is not set |
970 | # CONFIG_LOGFS is not set | ||
943 | CONFIG_CRAMFS=y | 971 | CONFIG_CRAMFS=y |
944 | # CONFIG_SQUASHFS is not set | 972 | # CONFIG_SQUASHFS is not set |
945 | # CONFIG_VXFS_FS is not set | 973 | # CONFIG_VXFS_FS is not set |
@@ -967,6 +995,7 @@ CONFIG_SUNRPC_GSS=y | |||
967 | CONFIG_RPCSEC_GSS_KRB5=y | 995 | CONFIG_RPCSEC_GSS_KRB5=y |
968 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 996 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
969 | # CONFIG_SMB_FS is not set | 997 | # CONFIG_SMB_FS is not set |
998 | # CONFIG_CEPH_FS is not set | ||
970 | # CONFIG_CIFS is not set | 999 | # CONFIG_CIFS is not set |
971 | # CONFIG_NCP_FS is not set | 1000 | # CONFIG_NCP_FS is not set |
972 | # CONFIG_CODA_FS is not set | 1001 | # CONFIG_CODA_FS is not set |
@@ -990,7 +1019,7 @@ CONFIG_FRAME_WARN=1024 | |||
990 | CONFIG_MAGIC_SYSRQ=y | 1019 | CONFIG_MAGIC_SYSRQ=y |
991 | # CONFIG_STRIP_ASM_SYMS is not set | 1020 | # CONFIG_STRIP_ASM_SYMS is not set |
992 | # CONFIG_UNUSED_SYMBOLS is not set | 1021 | # CONFIG_UNUSED_SYMBOLS is not set |
993 | # CONFIG_DEBUG_FS is not set | 1022 | CONFIG_DEBUG_FS=y |
994 | # CONFIG_HEADERS_CHECK is not set | 1023 | # CONFIG_HEADERS_CHECK is not set |
995 | CONFIG_DEBUG_KERNEL=y | 1024 | CONFIG_DEBUG_KERNEL=y |
996 | # CONFIG_DEBUG_SHIRQ is not set | 1025 | # CONFIG_DEBUG_SHIRQ is not set |
@@ -1032,6 +1061,7 @@ CONFIG_DEBUG_MEMORY_INIT=y | |||
1032 | # CONFIG_BACKTRACE_SELF_TEST is not set | 1061 | # CONFIG_BACKTRACE_SELF_TEST is not set |
1033 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 1062 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
1034 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | 1063 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set |
1064 | # CONFIG_LKDTM is not set | ||
1035 | # CONFIG_FAULT_INJECTION is not set | 1065 | # CONFIG_FAULT_INJECTION is not set |
1036 | # CONFIG_LATENCYTOP is not set | 1066 | # CONFIG_LATENCYTOP is not set |
1037 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | 1067 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set |
@@ -1052,6 +1082,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
1052 | # CONFIG_KMEMTRACE is not set | 1082 | # CONFIG_KMEMTRACE is not set |
1053 | # CONFIG_WORKQUEUE_TRACER is not set | 1083 | # CONFIG_WORKQUEUE_TRACER is not set |
1054 | # CONFIG_BLK_DEV_IO_TRACE is not set | 1084 | # CONFIG_BLK_DEV_IO_TRACE is not set |
1085 | CONFIG_DYNAMIC_DEBUG=y | ||
1055 | # CONFIG_SAMPLES is not set | 1086 | # CONFIG_SAMPLES is not set |
1056 | CONFIG_HAVE_ARCH_KGDB=y | 1087 | CONFIG_HAVE_ARCH_KGDB=y |
1057 | # CONFIG_KGDB is not set | 1088 | # CONFIG_KGDB is not set |
@@ -1059,9 +1090,7 @@ CONFIG_ARM_UNWIND=y | |||
1059 | CONFIG_DEBUG_USER=y | 1090 | CONFIG_DEBUG_USER=y |
1060 | CONFIG_DEBUG_ERRORS=y | 1091 | CONFIG_DEBUG_ERRORS=y |
1061 | # CONFIG_DEBUG_STACK_USAGE is not set | 1092 | # CONFIG_DEBUG_STACK_USAGE is not set |
1062 | CONFIG_DEBUG_LL=y | 1093 | # CONFIG_DEBUG_LL is not set |
1063 | # CONFIG_EARLY_PRINTK is not set | ||
1064 | # CONFIG_DEBUG_ICEDCC is not set | ||
1065 | # CONFIG_OC_ETM is not set | 1094 | # CONFIG_OC_ETM is not set |
1066 | 1095 | ||
1067 | # | 1096 | # |
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index a2d307ec0420..244655d323ea 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c | |||
@@ -59,6 +59,13 @@ static unsigned long common_pin_config[] __initdata = { | |||
59 | /* UART1 */ | 59 | /* UART1 */ |
60 | GPIO107_UART1_RXD, | 60 | GPIO107_UART1_RXD, |
61 | GPIO108_UART1_TXD, | 61 | GPIO108_UART1_TXD, |
62 | |||
63 | /* SSP1 */ | ||
64 | GPIO113_I2S_MCLK, | ||
65 | GPIO114_I2S_FRM, | ||
66 | GPIO115_I2S_BCLK, | ||
67 | GPIO116_I2S_RXD, | ||
68 | GPIO117_I2S_TXD, | ||
62 | }; | 69 | }; |
63 | 70 | ||
64 | static struct smc91x_platdata smc91x_info = { | 71 | static struct smc91x_platdata smc91x_info = { |
@@ -123,12 +130,18 @@ static struct pxa3xx_nand_platform_data aspenite_nand_info = { | |||
123 | .nr_parts = ARRAY_SIZE(aspenite_nand_partitions), | 130 | .nr_parts = ARRAY_SIZE(aspenite_nand_partitions), |
124 | }; | 131 | }; |
125 | 132 | ||
133 | static struct i2c_board_info aspenite_i2c_info[] __initdata = { | ||
134 | { I2C_BOARD_INFO("wm8753", 0x1b), }, | ||
135 | }; | ||
136 | |||
126 | static void __init common_init(void) | 137 | static void __init common_init(void) |
127 | { | 138 | { |
128 | mfp_config(ARRAY_AND_SIZE(common_pin_config)); | 139 | mfp_config(ARRAY_AND_SIZE(common_pin_config)); |
129 | 140 | ||
130 | /* on-chip devices */ | 141 | /* on-chip devices */ |
131 | pxa168_add_uart(1); | 142 | pxa168_add_uart(1); |
143 | pxa168_add_twsi(1, NULL, ARRAY_AND_SIZE(aspenite_i2c_info)); | ||
144 | pxa168_add_ssp(1); | ||
132 | pxa168_add_nand(&aspenite_nand_info); | 145 | pxa168_add_nand(&aspenite_nand_info); |
133 | 146 | ||
134 | /* off-chip devices */ | 147 | /* off-chip devices */ |
diff --git a/arch/arm/mach-mmp/include/mach/gpio.h b/arch/arm/mach-mmp/include/mach/gpio.h index ab26d13295c4..ee8b02ed8011 100644 --- a/arch/arm/mach-mmp/include/mach/gpio.h +++ b/arch/arm/mach-mmp/include/mach/gpio.h | |||
@@ -10,7 +10,7 @@ | |||
10 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | 10 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) |
11 | #define GPIO_REG(x) (*((volatile u32 *)(GPIO_REGS_VIRT + (x)))) | 11 | #define GPIO_REG(x) (*((volatile u32 *)(GPIO_REGS_VIRT + (x)))) |
12 | 12 | ||
13 | #define NR_BUILTIN_GPIO (128) | 13 | #define NR_BUILTIN_GPIO (192) |
14 | 14 | ||
15 | #define gpio_to_bank(gpio) ((gpio) >> 5) | 15 | #define gpio_to_bank(gpio) ((gpio) >> 5) |
16 | #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio)) | 16 | #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio)) |
diff --git a/arch/arm/mach-mmp/include/mach/irqs.h b/arch/arm/mach-mmp/include/mach/irqs.h index 02701196ea03..b379cdec4d38 100644 --- a/arch/arm/mach-mmp/include/mach/irqs.h +++ b/arch/arm/mach-mmp/include/mach/irqs.h | |||
@@ -5,10 +5,10 @@ | |||
5 | * Interrupt numbers for PXA168 | 5 | * Interrupt numbers for PXA168 |
6 | */ | 6 | */ |
7 | #define IRQ_PXA168_NONE (-1) | 7 | #define IRQ_PXA168_NONE (-1) |
8 | #define IRQ_PXA168_SSP3 0 | 8 | #define IRQ_PXA168_SSP4 0 |
9 | #define IRQ_PXA168_SSP2 1 | 9 | #define IRQ_PXA168_SSP3 1 |
10 | #define IRQ_PXA168_SSP1 2 | 10 | #define IRQ_PXA168_SSP2 2 |
11 | #define IRQ_PXA168_SSP0 3 | 11 | #define IRQ_PXA168_SSP1 3 |
12 | #define IRQ_PXA168_PMIC_INT 4 | 12 | #define IRQ_PXA168_PMIC_INT 4 |
13 | #define IRQ_PXA168_RTC_INT 5 | 13 | #define IRQ_PXA168_RTC_INT 5 |
14 | #define IRQ_PXA168_RTC_ALARM 6 | 14 | #define IRQ_PXA168_RTC_ALARM 6 |
@@ -20,7 +20,7 @@ | |||
20 | #define IRQ_PXA168_TIMER2 14 | 20 | #define IRQ_PXA168_TIMER2 14 |
21 | #define IRQ_PXA168_TIMER3 15 | 21 | #define IRQ_PXA168_TIMER3 15 |
22 | #define IRQ_PXA168_CMU 16 | 22 | #define IRQ_PXA168_CMU 16 |
23 | #define IRQ_PXA168_SSP4 17 | 23 | #define IRQ_PXA168_SSP5 17 |
24 | #define IRQ_PXA168_MSP_WAKEUP 19 | 24 | #define IRQ_PXA168_MSP_WAKEUP 19 |
25 | #define IRQ_PXA168_CF_WAKEUP 20 | 25 | #define IRQ_PXA168_CF_WAKEUP 20 |
26 | #define IRQ_PXA168_XD_WAKEUP 21 | 26 | #define IRQ_PXA168_XD_WAKEUP 21 |
diff --git a/arch/arm/mach-mmp/include/mach/mfp-mmp2.h b/arch/arm/mach-mmp/include/mach/mfp-mmp2.h index 9f9f8143e272..761c2dacc079 100644 --- a/arch/arm/mach-mmp/include/mach/mfp-mmp2.h +++ b/arch/arm/mach-mmp/include/mach/mfp-mmp2.h | |||
@@ -9,6 +9,175 @@ | |||
9 | #define MFP_DRIVE_FAST (0x8 << 13) | 9 | #define MFP_DRIVE_FAST (0x8 << 13) |
10 | 10 | ||
11 | /* GPIO */ | 11 | /* GPIO */ |
12 | #define GPIO0_GPIO0 MFP_CFG(GPIO0, AF0) | ||
13 | #define GPIO1_GPIO1 MFP_CFG(GPIO1, AF0) | ||
14 | #define GPIO2_GPIO2 MFP_CFG(GPIO2, AF0) | ||
15 | #define GPIO3_GPIO3 MFP_CFG(GPIO3, AF0) | ||
16 | #define GPIO4_GPIO4 MFP_CFG(GPIO4, AF0) | ||
17 | #define GPIO5_GPIO5 MFP_CFG(GPIO5, AF0) | ||
18 | #define GPIO6_GPIO6 MFP_CFG(GPIO6, AF0) | ||
19 | #define GPIO7_GPIO7 MFP_CFG(GPIO7, AF0) | ||
20 | #define GPIO8_GPIO8 MFP_CFG(GPIO8, AF0) | ||
21 | #define GPIO9_GPIO9 MFP_CFG(GPIO9, AF0) | ||
22 | #define GPIO10_GPIO10 MFP_CFG(GPIO10, AF0) | ||
23 | #define GPIO11_GPIO11 MFP_CFG(GPIO11, AF0) | ||
24 | #define GPIO12_GPIO12 MFP_CFG(GPIO12, AF0) | ||
25 | #define GPIO13_GPIO13 MFP_CFG(GPIO13, AF0) | ||
26 | #define GPIO14_GPIO14 MFP_CFG(GPIO14, AF0) | ||
27 | #define GPIO15_GPIO15 MFP_CFG(GPIO15, AF0) | ||
28 | #define GPIO16_GPIO16 MFP_CFG(GPIO16, AF0) | ||
29 | #define GPIO17_GPIO17 MFP_CFG(GPIO17, AF0) | ||
30 | #define GPIO18_GPIO18 MFP_CFG(GPIO18, AF0) | ||
31 | #define GPIO19_GPIO19 MFP_CFG(GPIO19, AF0) | ||
32 | #define GPIO20_GPIO20 MFP_CFG(GPIO20, AF0) | ||
33 | #define GPIO21_GPIO21 MFP_CFG(GPIO21, AF0) | ||
34 | #define GPIO22_GPIO22 MFP_CFG(GPIO22, AF0) | ||
35 | #define GPIO23_GPIO23 MFP_CFG(GPIO23, AF0) | ||
36 | #define GPIO24_GPIO24 MFP_CFG(GPIO24, AF0) | ||
37 | #define GPIO25_GPIO25 MFP_CFG(GPIO25, AF0) | ||
38 | #define GPIO26_GPIO26 MFP_CFG(GPIO26, AF0) | ||
39 | #define GPIO27_GPIO27 MFP_CFG(GPIO27, AF0) | ||
40 | #define GPIO28_GPIO28 MFP_CFG(GPIO28, AF0) | ||
41 | #define GPIO29_GPIO29 MFP_CFG(GPIO29, AF0) | ||
42 | #define GPIO30_GPIO30 MFP_CFG(GPIO30, AF0) | ||
43 | #define GPIO31_GPIO31 MFP_CFG(GPIO31, AF0) | ||
44 | #define GPIO32_GPIO32 MFP_CFG(GPIO32, AF0) | ||
45 | #define GPIO33_GPIO33 MFP_CFG(GPIO33, AF0) | ||
46 | #define GPIO34_GPIO34 MFP_CFG(GPIO34, AF0) | ||
47 | #define GPIO35_GPIO35 MFP_CFG(GPIO35, AF0) | ||
48 | #define GPIO36_GPIO36 MFP_CFG(GPIO36, AF0) | ||
49 | #define GPIO37_GPIO37 MFP_CFG(GPIO37, AF0) | ||
50 | #define GPIO38_GPIO38 MFP_CFG(GPIO38, AF0) | ||
51 | #define GPIO39_GPIO39 MFP_CFG(GPIO39, AF0) | ||
52 | #define GPIO40_GPIO40 MFP_CFG(GPIO40, AF0) | ||
53 | #define GPIO41_GPIO41 MFP_CFG(GPIO41, AF0) | ||
54 | #define GPIO42_GPIO42 MFP_CFG(GPIO42, AF0) | ||
55 | #define GPIO43_GPIO43 MFP_CFG(GPIO43, AF0) | ||
56 | #define GPIO44_GPIO44 MFP_CFG(GPIO44, AF0) | ||
57 | #define GPIO45_GPIO45 MFP_CFG(GPIO45, AF0) | ||
58 | #define GPIO46_GPIO46 MFP_CFG(GPIO46, AF0) | ||
59 | #define GPIO47_GPIO47 MFP_CFG(GPIO47, AF0) | ||
60 | #define GPIO48_GPIO48 MFP_CFG(GPIO48, AF0) | ||
61 | #define GPIO49_GPIO49 MFP_CFG(GPIO49, AF0) | ||
62 | #define GPIO50_GPIO50 MFP_CFG(GPIO50, AF0) | ||
63 | #define GPIO51_GPIO51 MFP_CFG(GPIO51, AF0) | ||
64 | #define GPIO52_GPIO52 MFP_CFG(GPIO52, AF0) | ||
65 | #define GPIO53_GPIO53 MFP_CFG(GPIO53, AF0) | ||
66 | #define GPIO54_GPIO54 MFP_CFG(GPIO54, AF0) | ||
67 | #define GPIO55_GPIO55 MFP_CFG(GPIO55, AF0) | ||
68 | #define GPIO56_GPIO56 MFP_CFG(GPIO56, AF0) | ||
69 | #define GPIO57_GPIO57 MFP_CFG(GPIO57, AF0) | ||
70 | #define GPIO58_GPIO58 MFP_CFG(GPIO58, AF0) | ||
71 | #define GPIO59_GPIO59 MFP_CFG(GPIO59, AF0) | ||
72 | #define GPIO60_GPIO60 MFP_CFG(GPIO60, AF0) | ||
73 | #define GPIO61_GPIO61 MFP_CFG(GPIO61, AF0) | ||
74 | #define GPIO62_GPIO62 MFP_CFG(GPIO62, AF0) | ||
75 | #define GPIO63_GPIO63 MFP_CFG(GPIO63, AF0) | ||
76 | #define GPIO64_GPIO64 MFP_CFG(GPIO64, AF0) | ||
77 | #define GPIO65_GPIO65 MFP_CFG(GPIO65, AF0) | ||
78 | #define GPIO66_GPIO66 MFP_CFG(GPIO66, AF0) | ||
79 | #define GPIO67_GPIO67 MFP_CFG(GPIO67, AF0) | ||
80 | #define GPIO68_GPIO68 MFP_CFG(GPIO68, AF0) | ||
81 | #define GPIO69_GPIO69 MFP_CFG(GPIO69, AF0) | ||
82 | #define GPIO70_GPIO70 MFP_CFG(GPIO70, AF0) | ||
83 | #define GPIO71_GPIO71 MFP_CFG(GPIO71, AF0) | ||
84 | #define GPIO72_GPIO72 MFP_CFG(GPIO72, AF0) | ||
85 | #define GPIO73_GPIO73 MFP_CFG(GPIO73, AF0) | ||
86 | #define GPIO74_GPIO74 MFP_CFG(GPIO74, AF0) | ||
87 | #define GPIO75_GPIO75 MFP_CFG(GPIO75, AF0) | ||
88 | #define GPIO76_GPIO76 MFP_CFG(GPIO76, AF0) | ||
89 | #define GPIO77_GPIO77 MFP_CFG(GPIO77, AF0) | ||
90 | #define GPIO78_GPIO78 MFP_CFG(GPIO78, AF0) | ||
91 | #define GPIO79_GPIO79 MFP_CFG(GPIO79, AF0) | ||
92 | #define GPIO80_GPIO80 MFP_CFG(GPIO80, AF0) | ||
93 | #define GPIO81_GPIO81 MFP_CFG(GPIO81, AF0) | ||
94 | #define GPIO82_GPIO82 MFP_CFG(GPIO82, AF0) | ||
95 | #define GPIO83_GPIO83 MFP_CFG(GPIO83, AF0) | ||
96 | #define GPIO84_GPIO84 MFP_CFG(GPIO84, AF0) | ||
97 | #define GPIO85_GPIO85 MFP_CFG(GPIO85, AF0) | ||
98 | #define GPIO86_GPIO86 MFP_CFG(GPIO86, AF0) | ||
99 | #define GPIO87_GPIO87 MFP_CFG(GPIO87, AF0) | ||
100 | #define GPIO88_GPIO88 MFP_CFG(GPIO88, AF0) | ||
101 | #define GPIO89_GPIO89 MFP_CFG(GPIO89, AF0) | ||
102 | #define GPIO90_GPIO90 MFP_CFG(GPIO90, AF0) | ||
103 | #define GPIO91_GPIO91 MFP_CFG(GPIO91, AF0) | ||
104 | #define GPIO92_GPIO92 MFP_CFG(GPIO92, AF0) | ||
105 | #define GPIO93_GPIO93 MFP_CFG(GPIO93, AF0) | ||
106 | #define GPIO94_GPIO94 MFP_CFG(GPIO94, AF0) | ||
107 | #define GPIO95_GPIO95 MFP_CFG(GPIO95, AF0) | ||
108 | #define GPIO96_GPIO96 MFP_CFG(GPIO96, AF0) | ||
109 | #define GPIO97_GPIO97 MFP_CFG(GPIO97, AF0) | ||
110 | #define GPIO98_GPIO98 MFP_CFG(GPIO98, AF0) | ||
111 | #define GPIO99_GPIO99 MFP_CFG(GPIO99, AF0) | ||
112 | #define GPIO100_GPIO100 MFP_CFG(GPIO100, AF0) | ||
113 | #define GPIO101_GPIO101 MFP_CFG(GPIO101, AF0) | ||
114 | #define GPIO102_GPIO102 MFP_CFG(GPIO102, AF1) | ||
115 | #define GPIO103_GPIO103 MFP_CFG(GPIO103, AF1) | ||
116 | #define GPIO104_GPIO104 MFP_CFG(GPIO104, AF1) | ||
117 | #define GPIO105_GPIO105 MFP_CFG(GPIO105, AF1) | ||
118 | #define GPIO106_GPIO106 MFP_CFG(GPIO106, AF1) | ||
119 | #define GPIO107_GPIO107 MFP_CFG(GPIO107, AF1) | ||
120 | #define GPIO108_GPIO108 MFP_CFG(GPIO108, AF1) | ||
121 | #define GPIO109_GPIO109 MFP_CFG(GPIO109, AF1) | ||
122 | #define GPIO110_GPIO110 MFP_CFG(GPIO110, AF1) | ||
123 | #define GPIO111_GPIO111 MFP_CFG(GPIO111, AF1) | ||
124 | #define GPIO112_GPIO112 MFP_CFG(GPIO112, AF1) | ||
125 | #define GPIO113_GPIO113 MFP_CFG(GPIO113, AF1) | ||
126 | #define GPIO114_GPIO114 MFP_CFG(GPIO114, AF0) | ||
127 | #define GPIO115_GPIO115 MFP_CFG(GPIO115, AF0) | ||
128 | #define GPIO116_GPIO116 MFP_CFG(GPIO116, AF0) | ||
129 | #define GPIO117_GPIO117 MFP_CFG(GPIO117, AF0) | ||
130 | #define GPIO118_GPIO118 MFP_CFG(GPIO118, AF0) | ||
131 | #define GPIO119_GPIO119 MFP_CFG(GPIO119, AF0) | ||
132 | #define GPIO120_GPIO120 MFP_CFG(GPIO120, AF0) | ||
133 | #define GPIO121_GPIO121 MFP_CFG(GPIO121, AF0) | ||
134 | #define GPIO122_GPIO122 MFP_CFG(GPIO122, AF0) | ||
135 | #define GPIO123_GPIO123 MFP_CFG(GPIO123, AF0) | ||
136 | #define GPIO124_GPIO124 MFP_CFG(GPIO124, AF0) | ||
137 | #define GPIO125_GPIO125 MFP_CFG(GPIO125, AF0) | ||
138 | #define GPIO126_GPIO126 MFP_CFG(GPIO126, AF0) | ||
139 | #define GPIO127_GPIO127 MFP_CFG(GPIO127, AF0) | ||
140 | #define GPIO128_GPIO128 MFP_CFG(GPIO128, AF0) | ||
141 | #define GPIO129_GPIO129 MFP_CFG(GPIO129, AF0) | ||
142 | #define GPIO130_GPIO130 MFP_CFG(GPIO130, AF0) | ||
143 | #define GPIO131_GPIO131 MFP_CFG(GPIO131, AF0) | ||
144 | #define GPIO132_GPIO132 MFP_CFG(GPIO132, AF0) | ||
145 | #define GPIO133_GPIO133 MFP_CFG(GPIO133, AF0) | ||
146 | #define GPIO134_GPIO134 MFP_CFG(GPIO134, AF0) | ||
147 | #define GPIO135_GPIO135 MFP_CFG(GPIO135, AF0) | ||
148 | #define GPIO136_GPIO136 MFP_CFG(GPIO136, AF0) | ||
149 | #define GPIO137_GPIO137 MFP_CFG(GPIO137, AF0) | ||
150 | #define GPIO138_GPIO138 MFP_CFG(GPIO138, AF0) | ||
151 | #define GPIO139_GPIO139 MFP_CFG(GPIO139, AF0) | ||
152 | #define GPIO140_GPIO140 MFP_CFG(GPIO140, AF0) | ||
153 | #define GPIO141_GPIO141 MFP_CFG(GPIO141, AF0) | ||
154 | #define GPIO142_GPIO142 MFP_CFG(GPIO142, AF1) | ||
155 | #define GPIO143_GPIO143 MFP_CFG(GPIO143, AF1) | ||
156 | #define GPIO144_GPIO144 MFP_CFG(GPIO144, AF1) | ||
157 | #define GPIO145_GPIO145 MFP_CFG(GPIO145, AF1) | ||
158 | #define GPIO146_GPIO146 MFP_CFG(GPIO146, AF1) | ||
159 | #define GPIO147_GPIO147 MFP_CFG(GPIO147, AF1) | ||
160 | #define GPIO148_GPIO148 MFP_CFG(GPIO148, AF1) | ||
161 | #define GPIO149_GPIO149 MFP_CFG(GPIO149, AF1) | ||
162 | #define GPIO150_GPIO150 MFP_CFG(GPIO150, AF1) | ||
163 | #define GPIO151_GPIO151 MFP_CFG(GPIO151, AF1) | ||
164 | #define GPIO152_GPIO152 MFP_CFG(GPIO152, AF1) | ||
165 | #define GPIO153_GPIO153 MFP_CFG(GPIO153, AF1) | ||
166 | #define GPIO154_GPIO154 MFP_CFG(GPIO154, AF1) | ||
167 | #define GPIO155_GPIO155 MFP_CFG(GPIO155, AF1) | ||
168 | #define GPIO156_GPIO156 MFP_CFG(GPIO156, AF1) | ||
169 | #define GPIO157_GPIO157 MFP_CFG(GPIO157, AF1) | ||
170 | #define GPIO158_GPIO158 MFP_CFG(GPIO158, AF1) | ||
171 | #define GPIO159_GPIO159 MFP_CFG(GPIO159, AF1) | ||
172 | #define GPIO160_GPIO160 MFP_CFG(GPIO160, AF1) | ||
173 | #define GPIO161_GPIO161 MFP_CFG(GPIO161, AF1) | ||
174 | #define GPIO162_GPIO162 MFP_CFG(GPIO162, AF1) | ||
175 | #define GPIO163_GPIO163 MFP_CFG(GPIO163, AF1) | ||
176 | #define GPIO164_GPIO164 MFP_CFG(GPIO164, AF1) | ||
177 | #define GPIO165_GPIO165 MFP_CFG(GPIO165, AF1) | ||
178 | #define GPIO166_GPIO166 MFP_CFG(GPIO166, AF1) | ||
179 | #define GPIO167_GPIO167 MFP_CFG(GPIO167, AF1) | ||
180 | #define GPIO168_GPIO168 MFP_CFG(GPIO168, AF1) | ||
12 | 181 | ||
13 | /* DFI */ | 182 | /* DFI */ |
14 | #define GPIO108_DFI_D15 MFP_CFG(GPIO108, AF0) | 183 | #define GPIO108_DFI_D15 MFP_CFG(GPIO108, AF0) |
@@ -47,7 +216,6 @@ | |||
47 | 216 | ||
48 | /* Ethernet */ | 217 | /* Ethernet */ |
49 | #define GPIO155_SM_ADVMUX MFP_CFG(GPIO155, AF2) | 218 | #define GPIO155_SM_ADVMUX MFP_CFG(GPIO155, AF2) |
50 | #define GPIO155_GPIO155 MFP_CFG(GPIO155, AF1) | ||
51 | 219 | ||
52 | /* UART1 */ | 220 | /* UART1 */ |
53 | #define GPIO45_UART1_RXD MFP_CFG(GPIO45, AF1) | 221 | #define GPIO45_UART1_RXD MFP_CFG(GPIO45, AF1) |
@@ -159,6 +327,8 @@ | |||
159 | #define GPIO44_TWSI2_SDA MFP_CFG_DRV(GPIO44, AF1, SLOW) | 327 | #define GPIO44_TWSI2_SDA MFP_CFG_DRV(GPIO44, AF1, SLOW) |
160 | #define GPIO71_TWSI3_SCL MFP_CFG_DRV(GPIO71, AF1, SLOW) | 328 | #define GPIO71_TWSI3_SCL MFP_CFG_DRV(GPIO71, AF1, SLOW) |
161 | #define GPIO72_TWSI3_SDA MFP_CFG_DRV(GPIO72, AF1, SLOW) | 329 | #define GPIO72_TWSI3_SDA MFP_CFG_DRV(GPIO72, AF1, SLOW) |
330 | #define TWSI4_SCL MFP_CFG_DRV(TWSI4_SCL, AF0, SLOW) | ||
331 | #define TWSI4_SDA MFP_CFG_DRV(TWSI4_SDA, AF0, SLOW) | ||
162 | #define GPIO99_TWSI5_SCL MFP_CFG_DRV(GPIO99, AF4, SLOW) | 332 | #define GPIO99_TWSI5_SCL MFP_CFG_DRV(GPIO99, AF4, SLOW) |
163 | #define GPIO100_TWSI5_SDA MFP_CFG_DRV(GPIO100, AF4, SLOW) | 333 | #define GPIO100_TWSI5_SDA MFP_CFG_DRV(GPIO100, AF4, SLOW) |
164 | #define GPIO97_TWSI6_SCL MFP_CFG_DRV(GPIO97, AF2, SLOW) | 334 | #define GPIO97_TWSI6_SCL MFP_CFG_DRV(GPIO97, AF2, SLOW) |
@@ -218,21 +388,6 @@ | |||
218 | #define GPIO69_CAM_MCLK MFP_CFG_DRV(GPIO69, AF1, FAST) | 388 | #define GPIO69_CAM_MCLK MFP_CFG_DRV(GPIO69, AF1, FAST) |
219 | #define GPIO70_CAM_PCLK MFP_CFG_DRV(GPIO70, AF1, FAST) | 389 | #define GPIO70_CAM_PCLK MFP_CFG_DRV(GPIO70, AF1, FAST) |
220 | 390 | ||
221 | /* Wifi */ | ||
222 | #define GPIO45_GPIO45 MFP_CFG(GPIO45, AF0) | ||
223 | #define GPIO46_GPIO46 MFP_CFG(GPIO46, AF0) | ||
224 | #define GPIO21_GPIO21 MFP_CFG(GPIO21, AF0) | ||
225 | #define GPIO22_GPIO22 MFP_CFG(GPIO22, AF0) | ||
226 | #define GPIO55_GPIO55 MFP_CFG(GPIO55, AF0) | ||
227 | #define GPIO56_GPIO56 MFP_CFG(GPIO56, AF0) | ||
228 | #define GPIO57_GPIO57 MFP_CFG(GPIO57, AF0) | ||
229 | #define GPIO58_GPIO58 MFP_CFG(GPIO58, AF0) | ||
230 | |||
231 | /* Codec*/ | ||
232 | #define GPIO23_GPIO23 MFP_CFG(GPIO23, AF0) | ||
233 | |||
234 | #define GPIO101_GPIO101 MFP_CFG(GPIO101, AF0) | ||
235 | |||
236 | /* PMIC */ | 391 | /* PMIC */ |
237 | #define PMIC_PMIC_INT MFP_CFG(PMIC_INT, AF0) | 392 | #define PMIC_PMIC_INT MFP_CFG(PMIC_INT, AF0) |
238 | 393 | ||
diff --git a/arch/arm/mach-mmp/include/mach/mmp2.h b/arch/arm/mach-mmp/include/mach/mmp2.h index 459f3be9cfb2..fec220bd5046 100644 --- a/arch/arm/mach-mmp/include/mach/mmp2.h +++ b/arch/arm/mach-mmp/include/mach/mmp2.h | |||
@@ -39,17 +39,17 @@ static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data, | |||
39 | int ret; | 39 | int ret; |
40 | 40 | ||
41 | switch (id) { | 41 | switch (id) { |
42 | case 0: d = &mmp2_device_twsi1; break; | 42 | case 1: d = &mmp2_device_twsi1; break; |
43 | case 1: d = &mmp2_device_twsi2; break; | 43 | case 2: d = &mmp2_device_twsi2; break; |
44 | case 2: d = &mmp2_device_twsi3; break; | 44 | case 3: d = &mmp2_device_twsi3; break; |
45 | case 3: d = &mmp2_device_twsi4; break; | 45 | case 4: d = &mmp2_device_twsi4; break; |
46 | case 4: d = &mmp2_device_twsi5; break; | 46 | case 5: d = &mmp2_device_twsi5; break; |
47 | case 5: d = &mmp2_device_twsi6; break; | 47 | case 6: d = &mmp2_device_twsi6; break; |
48 | default: | 48 | default: |
49 | return -EINVAL; | 49 | return -EINVAL; |
50 | } | 50 | } |
51 | 51 | ||
52 | ret = i2c_register_board_info(id, info, size); | 52 | ret = i2c_register_board_info(id - 1, info, size); |
53 | if (ret) | 53 | if (ret) |
54 | return ret; | 54 | return ret; |
55 | 55 | ||
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index 3ad612cbdf09..3b2bd5d5eb05 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h | |||
@@ -14,6 +14,11 @@ extern struct pxa_device_desc pxa168_device_pwm1; | |||
14 | extern struct pxa_device_desc pxa168_device_pwm2; | 14 | extern struct pxa_device_desc pxa168_device_pwm2; |
15 | extern struct pxa_device_desc pxa168_device_pwm3; | 15 | extern struct pxa_device_desc pxa168_device_pwm3; |
16 | extern struct pxa_device_desc pxa168_device_pwm4; | 16 | extern struct pxa_device_desc pxa168_device_pwm4; |
17 | extern struct pxa_device_desc pxa168_device_ssp1; | ||
18 | extern struct pxa_device_desc pxa168_device_ssp2; | ||
19 | extern struct pxa_device_desc pxa168_device_ssp3; | ||
20 | extern struct pxa_device_desc pxa168_device_ssp4; | ||
21 | extern struct pxa_device_desc pxa168_device_ssp5; | ||
17 | extern struct pxa_device_desc pxa168_device_nand; | 22 | extern struct pxa_device_desc pxa168_device_nand; |
18 | 23 | ||
19 | static inline int pxa168_add_uart(int id) | 24 | static inline int pxa168_add_uart(int id) |
@@ -67,6 +72,22 @@ static inline int pxa168_add_pwm(int id) | |||
67 | return pxa_register_device(d, NULL, 0); | 72 | return pxa_register_device(d, NULL, 0); |
68 | } | 73 | } |
69 | 74 | ||
75 | static inline int pxa168_add_ssp(int id) | ||
76 | { | ||
77 | struct pxa_device_desc *d = NULL; | ||
78 | |||
79 | switch (id) { | ||
80 | case 1: d = &pxa168_device_ssp1; break; | ||
81 | case 2: d = &pxa168_device_ssp2; break; | ||
82 | case 3: d = &pxa168_device_ssp3; break; | ||
83 | case 4: d = &pxa168_device_ssp4; break; | ||
84 | case 5: d = &pxa168_device_ssp5; break; | ||
85 | default: | ||
86 | return -EINVAL; | ||
87 | } | ||
88 | return pxa_register_device(d, NULL, 0); | ||
89 | } | ||
90 | |||
70 | static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info) | 91 | static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info) |
71 | { | 92 | { |
72 | return pxa_register_device(&pxa168_device_nand, info, sizeof(*info)); | 93 | return pxa_register_device(&pxa168_device_nand, info, sizeof(*info)); |
diff --git a/arch/arm/mach-mmp/include/mach/regs-apbc.h b/arch/arm/mach-mmp/include/mach/regs-apbc.h index 712af03fd1af..1a96585336ba 100644 --- a/arch/arm/mach-mmp/include/mach/regs-apbc.h +++ b/arch/arm/mach-mmp/include/mach/regs-apbc.h | |||
@@ -26,8 +26,6 @@ | |||
26 | #define APBC_PXA168_PWM2 APBC_REG(0x010) | 26 | #define APBC_PXA168_PWM2 APBC_REG(0x010) |
27 | #define APBC_PXA168_PWM3 APBC_REG(0x014) | 27 | #define APBC_PXA168_PWM3 APBC_REG(0x014) |
28 | #define APBC_PXA168_PWM4 APBC_REG(0x018) | 28 | #define APBC_PXA168_PWM4 APBC_REG(0x018) |
29 | #define APBC_PXA168_SSP1 APBC_REG(0x01c) | ||
30 | #define APBC_PXA168_SSP2 APBC_REG(0x020) | ||
31 | #define APBC_PXA168_RTC APBC_REG(0x028) | 29 | #define APBC_PXA168_RTC APBC_REG(0x028) |
32 | #define APBC_PXA168_TWSI0 APBC_REG(0x02c) | 30 | #define APBC_PXA168_TWSI0 APBC_REG(0x02c) |
33 | #define APBC_PXA168_KPC APBC_REG(0x030) | 31 | #define APBC_PXA168_KPC APBC_REG(0x030) |
@@ -35,14 +33,16 @@ | |||
35 | #define APBC_PXA168_AIB APBC_REG(0x03c) | 33 | #define APBC_PXA168_AIB APBC_REG(0x03c) |
36 | #define APBC_PXA168_SW_JTAG APBC_REG(0x040) | 34 | #define APBC_PXA168_SW_JTAG APBC_REG(0x040) |
37 | #define APBC_PXA168_ONEWIRE APBC_REG(0x048) | 35 | #define APBC_PXA168_ONEWIRE APBC_REG(0x048) |
38 | #define APBC_PXA168_SSP3 APBC_REG(0x04c) | ||
39 | #define APBC_PXA168_ASFAR APBC_REG(0x050) | 36 | #define APBC_PXA168_ASFAR APBC_REG(0x050) |
40 | #define APBC_PXA168_ASSAR APBC_REG(0x054) | 37 | #define APBC_PXA168_ASSAR APBC_REG(0x054) |
41 | #define APBC_PXA168_SSP4 APBC_REG(0x058) | ||
42 | #define APBC_PXA168_SSP5 APBC_REG(0x05c) | ||
43 | #define APBC_PXA168_TWSI1 APBC_REG(0x06c) | 38 | #define APBC_PXA168_TWSI1 APBC_REG(0x06c) |
44 | #define APBC_PXA168_UART3 APBC_REG(0x070) | 39 | #define APBC_PXA168_UART3 APBC_REG(0x070) |
45 | #define APBC_PXA168_AC97 APBC_REG(0x084) | 40 | #define APBC_PXA168_AC97 APBC_REG(0x084) |
41 | #define APBC_PXA168_SSP1 APBC_REG(0x81c) | ||
42 | #define APBC_PXA168_SSP2 APBC_REG(0x820) | ||
43 | #define APBC_PXA168_SSP3 APBC_REG(0x84c) | ||
44 | #define APBC_PXA168_SSP4 APBC_REG(0x858) | ||
45 | #define APBC_PXA168_SSP5 APBC_REG(0x85c) | ||
46 | 46 | ||
47 | /* | 47 | /* |
48 | * APB Clock register offsets for PXA910 | 48 | * APB Clock register offsets for PXA910 |
diff --git a/arch/arm/mach-mmp/include/mach/regs-smc.h b/arch/arm/mach-mmp/include/mach/regs-smc.h new file mode 100644 index 000000000000..e484d40d71bd --- /dev/null +++ b/arch/arm/mach-mmp/include/mach/regs-smc.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-mmp/include/mach/regs-smc.h | ||
3 | * | ||
4 | * Static Memory Controller Registers | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_MACH_REGS_SMC_H | ||
12 | #define __ASM_MACH_REGS_SMC_H | ||
13 | |||
14 | #include <mach/addr-map.h> | ||
15 | |||
16 | #define SMC_VIRT_BASE (AXI_VIRT_BASE + 0x83800) | ||
17 | #define SMC_REG(x) (SMC_VIRT_BASE + (x)) | ||
18 | |||
19 | #define SMC_MSC0 SMC_REG(0x0020) | ||
20 | #define SMC_MSC1 SMC_REG(0x0024) | ||
21 | #define SMC_SXCNFG0 SMC_REG(0x0030) | ||
22 | #define SMC_SXCNFG1 SMC_REG(0x0034) | ||
23 | #define SMC_MEMCLKCFG SMC_REG(0x0068) | ||
24 | #define SMC_CSDFICFG0 SMC_REG(0x0090) | ||
25 | #define SMC_CSDFICFG1 SMC_REG(0x0094) | ||
26 | #define SMC_CLK_RET_DEL SMC_REG(0x00b0) | ||
27 | #define SMC_ADV_RET_DEL SMC_REG(0x00b4) | ||
28 | #define SMC_CSADRMAP0 SMC_REG(0x00c0) | ||
29 | #define SMC_CSADRMAP1 SMC_REG(0x00c4) | ||
30 | #define SMC_WE_AP0 SMC_REG(0x00e0) | ||
31 | #define SMC_WE_AP1 SMC_REG(0x00e4) | ||
32 | #define SMC_OE_AP0 SMC_REG(0x00f0) | ||
33 | #define SMC_OE_AP1 SMC_REG(0x00f4) | ||
34 | #define SMC_ADV_AP0 SMC_REG(0x0100) | ||
35 | #define SMC_ADV_AP1 SMC_REG(0x0104) | ||
36 | |||
37 | #endif /* __ASM_MACH_REGS_SMC_H */ | ||
diff --git a/arch/arm/mach-mmp/include/mach/timex.h b/arch/arm/mach-mmp/include/mach/timex.h index 6cebbd0ca8f4..70c9f1d88c02 100644 --- a/arch/arm/mach-mmp/include/mach/timex.h +++ b/arch/arm/mach-mmp/include/mach/timex.h | |||
@@ -6,4 +6,8 @@ | |||
6 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #ifdef CONFIG_CPU_MMP2 | ||
10 | #define CLOCK_TICK_RATE 6500000 | ||
11 | #else | ||
9 | #define CLOCK_TICK_RATE 3250000 | 12 | #define CLOCK_TICK_RATE 3250000 |
13 | #endif | ||
diff --git a/arch/arm/mach-mmp/jasper.c b/arch/arm/mach-mmp/jasper.c index cfd4d66ef800..d77dd41d60e1 100644 --- a/arch/arm/mach-mmp/jasper.c +++ b/arch/arm/mach-mmp/jasper.c | |||
@@ -15,12 +15,16 @@ | |||
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/gpio.h> | 17 | #include <linux/gpio.h> |
18 | #include <linux/regulator/machine.h> | ||
19 | #include <linux/regulator/max8649.h> | ||
20 | #include <linux/mfd/max8925.h> | ||
18 | 21 | ||
19 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
20 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
21 | #include <mach/addr-map.h> | 24 | #include <mach/addr-map.h> |
22 | #include <mach/mfp-mmp2.h> | 25 | #include <mach/mfp-mmp2.h> |
23 | #include <mach/mmp2.h> | 26 | #include <mach/mmp2.h> |
27 | #include <mach/irqs.h> | ||
24 | 28 | ||
25 | #include "common.h" | 29 | #include "common.h" |
26 | 30 | ||
@@ -58,6 +62,63 @@ static unsigned long jasper_pin_config[] __initdata = { | |||
58 | GPIO149_ND_CLE, | 62 | GPIO149_ND_CLE, |
59 | GPIO112_ND_RDY0, | 63 | GPIO112_ND_RDY0, |
60 | GPIO160_ND_RDY1, | 64 | GPIO160_ND_RDY1, |
65 | |||
66 | /* PMIC */ | ||
67 | PMIC_PMIC_INT | MFP_LPM_EDGE_FALL, | ||
68 | }; | ||
69 | |||
70 | static struct regulator_consumer_supply max8649_supply[] = { | ||
71 | REGULATOR_SUPPLY("vcc_core", NULL), | ||
72 | }; | ||
73 | |||
74 | static struct regulator_init_data max8649_init_data = { | ||
75 | .constraints = { | ||
76 | .name = "vcc_core range", | ||
77 | .min_uV = 1150000, | ||
78 | .max_uV = 1280000, | ||
79 | .always_on = 1, | ||
80 | .boot_on = 1, | ||
81 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
82 | }, | ||
83 | .num_consumer_supplies = 1, | ||
84 | .consumer_supplies = &max8649_supply[0], | ||
85 | }; | ||
86 | |||
87 | static struct max8649_platform_data jasper_max8649_info = { | ||
88 | .mode = 2, /* VID1 = 1, VID0 = 0 */ | ||
89 | .extclk = 0, | ||
90 | .ramp_timing = MAX8649_RAMP_32MV, | ||
91 | .regulator = &max8649_init_data, | ||
92 | }; | ||
93 | |||
94 | static struct max8925_backlight_pdata jasper_backlight_data = { | ||
95 | .dual_string = 0, | ||
96 | }; | ||
97 | |||
98 | static struct max8925_power_pdata jasper_power_data = { | ||
99 | .batt_detect = 0, /* can't detect battery by ID pin */ | ||
100 | .topoff_threshold = MAX8925_TOPOFF_THR_10PER, | ||
101 | .fast_charge = MAX8925_FCHG_1000MA, | ||
102 | }; | ||
103 | |||
104 | static struct max8925_platform_data jasper_max8925_info = { | ||
105 | .backlight = &jasper_backlight_data, | ||
106 | .power = &jasper_power_data, | ||
107 | .irq_base = IRQ_BOARD_START, | ||
108 | }; | ||
109 | |||
110 | static struct i2c_board_info jasper_twsi1_info[] = { | ||
111 | [0] = { | ||
112 | .type = "max8649", | ||
113 | .addr = 0x60, | ||
114 | .platform_data = &jasper_max8649_info, | ||
115 | }, | ||
116 | [1] = { | ||
117 | .type = "max8925", | ||
118 | .addr = 0x3c, | ||
119 | .irq = IRQ_MMP2_PMIC, | ||
120 | .platform_data = &jasper_max8925_info, | ||
121 | }, | ||
61 | }; | 122 | }; |
62 | 123 | ||
63 | static void __init jasper_init(void) | 124 | static void __init jasper_init(void) |
@@ -67,6 +128,9 @@ static void __init jasper_init(void) | |||
67 | /* on-chip devices */ | 128 | /* on-chip devices */ |
68 | mmp2_add_uart(1); | 129 | mmp2_add_uart(1); |
69 | mmp2_add_uart(3); | 130 | mmp2_add_uart(3); |
131 | mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(jasper_twsi1_info)); | ||
132 | |||
133 | regulator_has_full_constraints(); | ||
70 | } | 134 | } |
71 | 135 | ||
72 | MACHINE_START(MARVELL_JASPER, "Jasper Development Platform") | 136 | MACHINE_START(MARVELL_JASPER, "Jasper Development Platform") |
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index 72eb9daeea99..7f5eb059bb01 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c | |||
@@ -15,11 +15,14 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include <asm/hardware/cache-tauros2.h> | ||
19 | |||
18 | #include <mach/addr-map.h> | 20 | #include <mach/addr-map.h> |
19 | #include <mach/regs-apbc.h> | 21 | #include <mach/regs-apbc.h> |
20 | #include <mach/regs-apmu.h> | 22 | #include <mach/regs-apmu.h> |
21 | #include <mach/cputype.h> | 23 | #include <mach/cputype.h> |
22 | #include <mach/irqs.h> | 24 | #include <mach/irqs.h> |
25 | #include <mach/dma.h> | ||
23 | #include <mach/mfp.h> | 26 | #include <mach/mfp.h> |
24 | #include <mach/gpio.h> | 27 | #include <mach/gpio.h> |
25 | #include <mach/devices.h> | 28 | #include <mach/devices.h> |
@@ -32,7 +35,50 @@ | |||
32 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x9c) | 35 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x9c) |
33 | 36 | ||
34 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { | 37 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { |
38 | |||
39 | MFP_ADDR_X(GPIO0, GPIO58, 0x54), | ||
40 | MFP_ADDR_X(GPIO59, GPIO73, 0x280), | ||
41 | MFP_ADDR_X(GPIO74, GPIO101, 0x170), | ||
42 | |||
43 | MFP_ADDR(GPIO102, 0x0), | ||
44 | MFP_ADDR(GPIO103, 0x4), | ||
45 | MFP_ADDR(GPIO104, 0x1fc), | ||
46 | MFP_ADDR(GPIO105, 0x1f8), | ||
47 | MFP_ADDR(GPIO106, 0x1f4), | ||
48 | MFP_ADDR(GPIO107, 0x1f0), | ||
49 | MFP_ADDR(GPIO108, 0x21c), | ||
50 | MFP_ADDR(GPIO109, 0x218), | ||
51 | MFP_ADDR(GPIO110, 0x214), | ||
52 | MFP_ADDR(GPIO111, 0x200), | ||
53 | MFP_ADDR(GPIO112, 0x244), | ||
54 | MFP_ADDR(GPIO113, 0x25c), | ||
55 | MFP_ADDR(GPIO114, 0x164), | ||
56 | MFP_ADDR_X(GPIO115, GPIO122, 0x260), | ||
57 | |||
58 | MFP_ADDR(GPIO123, 0x148), | ||
59 | MFP_ADDR_X(GPIO124, GPIO141, 0xc), | ||
60 | |||
61 | MFP_ADDR(GPIO142, 0x8), | ||
62 | MFP_ADDR_X(GPIO143, GPIO151, 0x220), | ||
63 | MFP_ADDR_X(GPIO152, GPIO153, 0x248), | ||
64 | MFP_ADDR_X(GPIO154, GPIO155, 0x254), | ||
65 | MFP_ADDR_X(GPIO156, GPIO159, 0x14c), | ||
66 | |||
67 | MFP_ADDR(GPIO160, 0x250), | ||
68 | MFP_ADDR(GPIO161, 0x210), | ||
69 | MFP_ADDR(GPIO162, 0x20c), | ||
70 | MFP_ADDR(GPIO163, 0x208), | ||
71 | MFP_ADDR(GPIO164, 0x204), | ||
72 | MFP_ADDR(GPIO165, 0x1ec), | ||
73 | MFP_ADDR(GPIO166, 0x1e8), | ||
74 | MFP_ADDR(GPIO167, 0x1e4), | ||
75 | MFP_ADDR(GPIO168, 0x1e0), | ||
76 | |||
77 | MFP_ADDR_X(TWSI1_SCL, TWSI1_SDA, 0x140), | ||
78 | MFP_ADDR_X(TWSI4_SCL, TWSI4_SDA, 0x2bc), | ||
79 | |||
35 | MFP_ADDR(PMIC_INT, 0x2c4), | 80 | MFP_ADDR(PMIC_INT, 0x2c4), |
81 | MFP_ADDR(CLK_REQ, 0x160), | ||
36 | 82 | ||
37 | MFP_ADDR_END, | 83 | MFP_ADDR_END, |
38 | }; | 84 | }; |
@@ -99,9 +145,13 @@ static struct clk_lookup mmp2_clkregs[] = { | |||
99 | static int __init mmp2_init(void) | 145 | static int __init mmp2_init(void) |
100 | { | 146 | { |
101 | if (cpu_is_mmp2()) { | 147 | if (cpu_is_mmp2()) { |
148 | #ifdef CONFIG_CACHE_TAUROS2 | ||
149 | tauros2_init(); | ||
150 | #endif | ||
102 | mfp_init_base(MFPR_VIRT_BASE); | 151 | mfp_init_base(MFPR_VIRT_BASE); |
103 | mfp_init_addr(mmp2_addr_map); | 152 | mfp_init_addr(mmp2_addr_map); |
104 | clks_register(ARRAY_AND_SIZE(mmp2_clkregs)); | 153 | pxa_init_dma(IRQ_MMP2_DMA_RIQ, 16); |
154 | clkdev_add_table(ARRAY_AND_SIZE(mmp2_clkregs)); | ||
105 | } | 155 | } |
106 | 156 | ||
107 | return 0; | 157 | return 0; |
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 1873c821df90..652ae660634c 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c | |||
@@ -72,6 +72,11 @@ static APBC_CLK(pwm1, PXA168_PWM1, 1, 13000000); | |||
72 | static APBC_CLK(pwm2, PXA168_PWM2, 1, 13000000); | 72 | static APBC_CLK(pwm2, PXA168_PWM2, 1, 13000000); |
73 | static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000); | 73 | static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000); |
74 | static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000); | 74 | static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000); |
75 | static APBC_CLK(ssp1, PXA168_SSP1, 4, 0); | ||
76 | static APBC_CLK(ssp2, PXA168_SSP2, 4, 0); | ||
77 | static APBC_CLK(ssp3, PXA168_SSP3, 4, 0); | ||
78 | static APBC_CLK(ssp4, PXA168_SSP4, 4, 0); | ||
79 | static APBC_CLK(ssp5, PXA168_SSP5, 4, 0); | ||
75 | 80 | ||
76 | static APMU_CLK(nand, NAND, 0x01db, 208000000); | 81 | static APMU_CLK(nand, NAND, 0x01db, 208000000); |
77 | 82 | ||
@@ -85,6 +90,11 @@ static struct clk_lookup pxa168_clkregs[] = { | |||
85 | INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL), | 90 | INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL), |
86 | INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL), | 91 | INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL), |
87 | INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL), | 92 | INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL), |
93 | INIT_CLKREG(&clk_ssp1, "pxa168-ssp.0", NULL), | ||
94 | INIT_CLKREG(&clk_ssp2, "pxa168-ssp.1", NULL), | ||
95 | INIT_CLKREG(&clk_ssp3, "pxa168-ssp.2", NULL), | ||
96 | INIT_CLKREG(&clk_ssp4, "pxa168-ssp.3", NULL), | ||
97 | INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), | ||
88 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 98 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
89 | }; | 99 | }; |
90 | 100 | ||
@@ -132,3 +142,8 @@ PXA168_DEVICE(pwm2, "pxa168-pwm", 1, NONE, 0xd401a400, 0x10); | |||
132 | PXA168_DEVICE(pwm3, "pxa168-pwm", 2, NONE, 0xd401a800, 0x10); | 142 | PXA168_DEVICE(pwm3, "pxa168-pwm", 2, NONE, 0xd401a800, 0x10); |
133 | PXA168_DEVICE(pwm4, "pxa168-pwm", 3, NONE, 0xd401ac00, 0x10); | 143 | PXA168_DEVICE(pwm4, "pxa168-pwm", 3, NONE, 0xd401ac00, 0x10); |
134 | PXA168_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); | 144 | PXA168_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); |
145 | PXA168_DEVICE(ssp1, "pxa168-ssp", 0, SSP1, 0xd401b000, 0x40, 52, 53); | ||
146 | PXA168_DEVICE(ssp2, "pxa168-ssp", 1, SSP2, 0xd401c000, 0x40, 54, 55); | ||
147 | PXA168_DEVICE(ssp3, "pxa168-ssp", 2, SSP3, 0xd401f000, 0x40, 56, 57); | ||
148 | PXA168_DEVICE(ssp4, "pxa168-ssp", 3, SSP4, 0xd4020000, 0x40, 58, 59); | ||
149 | PXA168_DEVICE(ssp5, "pxa168-ssp", 4, SSP5, 0xd4021000, 0x40, 60, 61); | ||
diff --git a/arch/arm/mach-mx5/clock-mx51.c b/arch/arm/mach-mx5/clock-mx51.c index 8f85f73b83a8..1ee6ce4087b8 100644 --- a/arch/arm/mach-mx5/clock-mx51.c +++ b/arch/arm/mach-mx5/clock-mx51.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include <asm/clkdev.h> | 18 | #include <asm/clkdev.h> |
19 | #include <asm/div64.h> | ||
19 | 20 | ||
20 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
21 | #include <mach/common.h> | 22 | #include <mach/common.h> |
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index 5b6ee46fa7f6..3b51741a4810 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -19,7 +19,6 @@ config MACH_MAINSTONE | |||
19 | config MACH_ZYLONITE | 19 | config MACH_ZYLONITE |
20 | bool | 20 | bool |
21 | select PXA3xx | 21 | select PXA3xx |
22 | select PXA_SSP | ||
23 | select HAVE_PWM | 22 | select HAVE_PWM |
24 | select PXA_HAVE_BOARD_IRQS | 23 | select PXA_HAVE_BOARD_IRQS |
25 | 24 | ||
@@ -39,7 +38,6 @@ config MACH_LITTLETON | |||
39 | select PXA3xx | 38 | select PXA3xx |
40 | select CPU_PXA300 | 39 | select CPU_PXA300 |
41 | select CPU_PXA310 | 40 | select CPU_PXA310 |
42 | select PXA_SSP | ||
43 | 41 | ||
44 | config MACH_TAVOREVB | 42 | config MACH_TAVOREVB |
45 | bool "PXA930 Evaluation Board (aka TavorEVB)" | 43 | bool "PXA930 Evaluation Board (aka TavorEVB)" |
@@ -98,7 +96,6 @@ config MACH_ARMCORE | |||
98 | select PXA27x | 96 | select PXA27x |
99 | select IWMMXT | 97 | select IWMMXT |
100 | select PXA25x | 98 | select PXA25x |
101 | select PXA_SSP | ||
102 | 99 | ||
103 | config MACH_EM_X270 | 100 | config MACH_EM_X270 |
104 | bool "CompuLab EM-x270 platform" | 101 | bool "CompuLab EM-x270 platform" |
@@ -161,7 +158,6 @@ config MACH_XCEP | |||
161 | select MTD_CFI | 158 | select MTD_CFI |
162 | select MTD_CHAR | 159 | select MTD_CHAR |
163 | select SMC91X | 160 | select SMC91X |
164 | select PXA_SSP | ||
165 | help | 161 | help |
166 | PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash. | 162 | PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash. |
167 | Tuned for usage in Libera instruments for particle accelerators. | 163 | Tuned for usage in Libera instruments for particle accelerators. |
@@ -180,7 +176,6 @@ config MACH_TRIZEPS4WL | |||
180 | depends on TRIZEPS_PXA | 176 | depends on TRIZEPS_PXA |
181 | select TRIZEPS_PCMCIA | 177 | select TRIZEPS_PCMCIA |
182 | select PXA27x | 178 | select PXA27x |
183 | select PXA_SSP | ||
184 | 179 | ||
185 | choice | 180 | choice |
186 | prompt "Select base board for Trizeps module" | 181 | prompt "Select base board for Trizeps module" |
@@ -217,7 +212,6 @@ config MACH_PCM027 | |||
217 | bool "Phytec phyCORE-PXA270 CPU module (PCM-027)" | 212 | bool "Phytec phyCORE-PXA270 CPU module (PCM-027)" |
218 | select PXA27x | 213 | select PXA27x |
219 | select IWMMXT | 214 | select IWMMXT |
220 | select PXA_SSP | ||
221 | select PXA_HAVE_BOARD_IRQS | 215 | select PXA_HAVE_BOARD_IRQS |
222 | 216 | ||
223 | config MACH_PCM990_BASEBOARD | 217 | config MACH_PCM990_BASEBOARD |
@@ -255,13 +249,19 @@ config MACH_COLIBRI320 | |||
255 | select PXA3xx | 249 | select PXA3xx |
256 | select CPU_PXA320 | 250 | select CPU_PXA320 |
257 | 251 | ||
252 | config MACH_VPAC270 | ||
253 | bool "Voipac PXA270" | ||
254 | select PXA27x | ||
255 | select HAVE_PATA_PLATFORM | ||
256 | help | ||
257 | PXA270 based Single Board Computer. | ||
258 | |||
258 | comment "End-user Products (sorted by vendor name)" | 259 | comment "End-user Products (sorted by vendor name)" |
259 | 260 | ||
260 | config MACH_H4700 | 261 | config MACH_H4700 |
261 | bool "HP iPAQ hx4700" | 262 | bool "HP iPAQ hx4700" |
262 | select PXA27x | 263 | select PXA27x |
263 | select IWMMXT | 264 | select IWMMXT |
264 | select PXA_SSP | ||
265 | select HAVE_PWM | 265 | select HAVE_PWM |
266 | select PXA_HAVE_BOARD_IRQS | 266 | select PXA_HAVE_BOARD_IRQS |
267 | 267 | ||
@@ -277,7 +277,6 @@ config MACH_MAGICIAN | |||
277 | bool "Enable HTC Magician Support" | 277 | bool "Enable HTC Magician Support" |
278 | select PXA27x | 278 | select PXA27x |
279 | select IWMMXT | 279 | select IWMMXT |
280 | select PXA_SSP | ||
281 | select HAVE_PWM | 280 | select HAVE_PWM |
282 | select PXA_HAVE_BOARD_IRQS | 281 | select PXA_HAVE_BOARD_IRQS |
283 | 282 | ||
@@ -431,13 +430,11 @@ config MACH_RAUMFELD_CONNECTOR | |||
431 | bool "Raumfeld Connector" | 430 | bool "Raumfeld Connector" |
432 | select PXA3xx | 431 | select PXA3xx |
433 | select CPU_PXA300 | 432 | select CPU_PXA300 |
434 | select PXA_SSP | ||
435 | 433 | ||
436 | config MACH_RAUMFELD_SPEAKER | 434 | config MACH_RAUMFELD_SPEAKER |
437 | bool "Raumfeld Speaker" | 435 | bool "Raumfeld Speaker" |
438 | select PXA3xx | 436 | select PXA3xx |
439 | select CPU_PXA300 | 437 | select CPU_PXA300 |
440 | select PXA_SSP | ||
441 | 438 | ||
442 | config PXA_SHARPSL | 439 | config PXA_SHARPSL |
443 | bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models" | 440 | bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models" |
@@ -461,21 +458,11 @@ config SHARPSL_PM_MAX1111 | |||
461 | select HWMON | 458 | select HWMON |
462 | select SENSORS_MAX1111 | 459 | select SENSORS_MAX1111 |
463 | 460 | ||
464 | config CORGI_SSP_DEPRECATED | ||
465 | bool | ||
466 | select PXA_SSP | ||
467 | select PXA_SSP_LEGACY | ||
468 | help | ||
469 | This option will include corgi_ssp.c and corgi_lcd.c | ||
470 | that corgi_ts.c and other legacy drivers (corgi_bl.c | ||
471 | and sharpsl_pm.c) may depend on. | ||
472 | |||
473 | config MACH_POODLE | 461 | config MACH_POODLE |
474 | bool "Enable Sharp SL-5600 (Poodle) Support" | 462 | bool "Enable Sharp SL-5600 (Poodle) Support" |
475 | depends on PXA_SHARPSL | 463 | depends on PXA_SHARPSL |
476 | select PXA25x | 464 | select PXA25x |
477 | select SHARP_LOCOMO | 465 | select SHARP_LOCOMO |
478 | select PXA_SSP | ||
479 | select PXA_HAVE_BOARD_IRQS | 466 | select PXA_HAVE_BOARD_IRQS |
480 | 467 | ||
481 | config MACH_CORGI | 468 | config MACH_CORGI |
@@ -581,6 +568,12 @@ config MACH_E800 | |||
581 | Say Y here if you intend to run this kernel on a Toshiba | 568 | Say Y here if you intend to run this kernel on a Toshiba |
582 | e800 family PDA. | 569 | e800 family PDA. |
583 | 570 | ||
571 | config MACH_ZIPIT2 | ||
572 | bool "Zipit Z2 Handheld" | ||
573 | select PXA27x | ||
574 | select HAVE_PWM | ||
575 | select PXA_HAVE_BOARD_IRQS | ||
576 | |||
584 | endmenu | 577 | endmenu |
585 | 578 | ||
586 | config PXA25x | 579 | config PXA25x |
@@ -645,28 +638,16 @@ config CPU_PXA950 | |||
645 | 638 | ||
646 | config PXA_SHARP_C7xx | 639 | config PXA_SHARP_C7xx |
647 | bool | 640 | bool |
648 | select PXA_SSP | ||
649 | select SHARPSL_PM | 641 | select SHARPSL_PM |
650 | help | 642 | help |
651 | Enable support for all Sharp C7xx models | 643 | Enable support for all Sharp C7xx models |
652 | 644 | ||
653 | config PXA_SHARP_Cxx00 | 645 | config PXA_SHARP_Cxx00 |
654 | bool | 646 | bool |
655 | select PXA_SSP | ||
656 | select SHARPSL_PM | 647 | select SHARPSL_PM |
657 | help | 648 | help |
658 | Enable common support for Sharp Cxx00 models | 649 | Enable common support for Sharp Cxx00 models |
659 | 650 | ||
660 | config PXA_SSP | ||
661 | tristate | ||
662 | help | ||
663 | Enable support for PXA2xx SSP ports | ||
664 | |||
665 | config PXA_SSP_LEGACY | ||
666 | bool | ||
667 | help | ||
668 | Support of legacy SSP API | ||
669 | |||
670 | config TOSA_BT | 651 | config TOSA_BT |
671 | tristate "Control the state of built-in bluetooth chip on Sharp SL-6000" | 652 | tristate "Control the state of built-in bluetooth chip on Sharp SL-6000" |
672 | depends on MACH_TOSA | 653 | depends on MACH_TOSA |
@@ -675,6 +656,18 @@ config TOSA_BT | |||
675 | This is a simple driver that is able to control | 656 | This is a simple driver that is able to control |
676 | the state of built in bluetooth chip on tosa. | 657 | the state of built in bluetooth chip on tosa. |
677 | 658 | ||
659 | config TOSA_USE_EXT_KEYCODES | ||
660 | bool "Tosa keyboard: use extended keycodes" | ||
661 | depends on MACH_TOSA | ||
662 | default n | ||
663 | help | ||
664 | Say Y here to enable the tosa keyboard driver to generate extended | ||
665 | (>= 127) keycodes. Be aware, that they can't be correctly interpreted | ||
666 | by either console keyboard driver or by Kdrive keybd driver. | ||
667 | |||
668 | Say Y only if you know, what you are doing! | ||
669 | |||
670 | |||
678 | config PXA_HAVE_BOARD_IRQS | 671 | config PXA_HAVE_BOARD_IRQS |
679 | bool | 672 | bool |
680 | 673 | ||
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index 86bc87b7f2dd..b8f1f4bc7ca7 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -14,7 +14,6 @@ obj-$(CONFIG_PXA3xx) += cpufreq-pxa3xx.o | |||
14 | endif | 14 | endif |
15 | 15 | ||
16 | # Generic drivers that other drivers may depend upon | 16 | # Generic drivers that other drivers may depend upon |
17 | obj-$(CONFIG_PXA_SSP) += ssp.o | ||
18 | 17 | ||
19 | # SoC-specific code | 18 | # SoC-specific code |
20 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o | 19 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o |
@@ -62,6 +61,7 @@ obj-$(CONFIG_MACH_PCM990_BASEBOARD) += pcm990-baseboard.o | |||
62 | obj-$(CONFIG_MACH_COLIBRI) += colibri-pxa270.o | 61 | obj-$(CONFIG_MACH_COLIBRI) += colibri-pxa270.o |
63 | obj-$(CONFIG_MACH_COLIBRI300) += colibri-pxa3xx.o colibri-pxa300.o | 62 | obj-$(CONFIG_MACH_COLIBRI300) += colibri-pxa3xx.o colibri-pxa300.o |
64 | obj-$(CONFIG_MACH_COLIBRI320) += colibri-pxa3xx.o colibri-pxa320.o | 63 | obj-$(CONFIG_MACH_COLIBRI320) += colibri-pxa3xx.o colibri-pxa320.o |
64 | obj-$(CONFIG_MACH_VPAC270) += vpac270.o | ||
65 | 65 | ||
66 | # End-user Products | 66 | # End-user Products |
67 | obj-$(CONFIG_MACH_H4700) += hx4700.o | 67 | obj-$(CONFIG_MACH_H4700) += hx4700.o |
@@ -80,7 +80,6 @@ obj-$(CONFIG_MACH_PALMLD) += palmld.o | |||
80 | obj-$(CONFIG_PALM_TREO) += palmtreo.o | 80 | obj-$(CONFIG_PALM_TREO) += palmtreo.o |
81 | obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o sharpsl_pm.o corgi_pm.o | 81 | obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o sharpsl_pm.o corgi_pm.o |
82 | obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o sharpsl_pm.o spitz_pm.o | 82 | obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o sharpsl_pm.o spitz_pm.o |
83 | obj-$(CONFIG_CORGI_SSP_DEPRECATED) += corgi_ssp.o corgi_lcd.o | ||
84 | obj-$(CONFIG_MACH_POODLE) += poodle.o | 83 | obj-$(CONFIG_MACH_POODLE) += poodle.o |
85 | obj-$(CONFIG_MACH_TOSA) += tosa.o | 84 | obj-$(CONFIG_MACH_TOSA) += tosa.o |
86 | obj-$(CONFIG_MACH_ICONTROL) += icontrol.o mxm8x10.o | 85 | obj-$(CONFIG_MACH_ICONTROL) += icontrol.o mxm8x10.o |
@@ -94,6 +93,7 @@ obj-$(CONFIG_MACH_E800) += e800.o | |||
94 | obj-$(CONFIG_MACH_RAUMFELD_RC) += raumfeld.o | 93 | obj-$(CONFIG_MACH_RAUMFELD_RC) += raumfeld.o |
95 | obj-$(CONFIG_MACH_RAUMFELD_CONNECTOR) += raumfeld.o | 94 | obj-$(CONFIG_MACH_RAUMFELD_CONNECTOR) += raumfeld.o |
96 | obj-$(CONFIG_MACH_RAUMFELD_SPEAKER) += raumfeld.o | 95 | obj-$(CONFIG_MACH_RAUMFELD_SPEAKER) += raumfeld.o |
96 | obj-$(CONFIG_MACH_ZIPIT2) += z2.o | ||
97 | 97 | ||
98 | # Support for blinky lights | 98 | # Support for blinky lights |
99 | led-y := leds.o | 99 | led-y := leds.o |
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c index d37cfa132a65..fdda6be6c391 100644 --- a/arch/arm/mach-pxa/cm-x300.c +++ b/arch/arm/mach-pxa/cm-x300.c | |||
@@ -30,6 +30,9 @@ | |||
30 | #include <linux/i2c/pca953x.h> | 30 | #include <linux/i2c/pca953x.h> |
31 | 31 | ||
32 | #include <linux/mfd/da903x.h> | 32 | #include <linux/mfd/da903x.h> |
33 | #include <linux/regulator/machine.h> | ||
34 | #include <linux/power_supply.h> | ||
35 | #include <linux/apm-emulation.h> | ||
33 | 36 | ||
34 | #include <linux/spi/spi.h> | 37 | #include <linux/spi/spi.h> |
35 | #include <linux/spi/spi_gpio.h> | 38 | #include <linux/spi/spi_gpio.h> |
@@ -430,7 +433,7 @@ static inline void cm_x300_init_nand(void) {} | |||
430 | 433 | ||
431 | #if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) | 434 | #if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) |
432 | static struct pxamci_platform_data cm_x300_mci_platform_data = { | 435 | static struct pxamci_platform_data cm_x300_mci_platform_data = { |
433 | .detect_delay = 20, | 436 | .detect_delay_ms = 200, |
434 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 437 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
435 | .gpio_card_detect = GPIO82_MMC_IRQ, | 438 | .gpio_card_detect = GPIO82_MMC_IRQ, |
436 | .gpio_card_ro = GPIO85_MMC_WP, | 439 | .gpio_card_ro = GPIO85_MMC_WP, |
@@ -451,7 +454,7 @@ static void cm_x300_mci2_exit(struct device *dev, void *data) | |||
451 | } | 454 | } |
452 | 455 | ||
453 | static struct pxamci_platform_data cm_x300_mci2_platform_data = { | 456 | static struct pxamci_platform_data cm_x300_mci2_platform_data = { |
454 | .detect_delay = 20, | 457 | .detect_delay_ms = 200, |
455 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 458 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
456 | .init = cm_x300_mci2_init, | 459 | .init = cm_x300_mci2_init, |
457 | .exit = cm_x300_mci2_exit, | 460 | .exit = cm_x300_mci2_exit, |
@@ -584,12 +587,87 @@ static void __init cm_x300_init_rtc(void) | |||
584 | static inline void cm_x300_init_rtc(void) {} | 587 | static inline void cm_x300_init_rtc(void) {} |
585 | #endif | 588 | #endif |
586 | 589 | ||
590 | /* Battery */ | ||
591 | struct power_supply_info cm_x300_psy_info = { | ||
592 | .name = "battery", | ||
593 | .technology = POWER_SUPPLY_TECHNOLOGY_LIPO, | ||
594 | .voltage_max_design = 4200000, | ||
595 | .voltage_min_design = 3000000, | ||
596 | .use_for_apm = 1, | ||
597 | }; | ||
598 | |||
599 | static void cm_x300_battery_low(void) | ||
600 | { | ||
601 | #if defined(CONFIG_APM_EMULATION) | ||
602 | apm_queue_event(APM_LOW_BATTERY); | ||
603 | #endif | ||
604 | } | ||
605 | |||
606 | static void cm_x300_battery_critical(void) | ||
607 | { | ||
608 | #if defined(CONFIG_APM_EMULATION) | ||
609 | apm_queue_event(APM_CRITICAL_SUSPEND); | ||
610 | #endif | ||
611 | } | ||
612 | |||
613 | struct da9030_battery_info cm_x300_battery_info = { | ||
614 | .battery_info = &cm_x300_psy_info, | ||
615 | |||
616 | .charge_milliamp = 1000, | ||
617 | .charge_millivolt = 4200, | ||
618 | |||
619 | .vbat_low = 3600, | ||
620 | .vbat_crit = 3400, | ||
621 | .vbat_charge_start = 4100, | ||
622 | .vbat_charge_stop = 4200, | ||
623 | .vbat_charge_restart = 4000, | ||
624 | |||
625 | .vcharge_min = 3200, | ||
626 | .vcharge_max = 5500, | ||
627 | |||
628 | .tbat_low = 197, | ||
629 | .tbat_high = 78, | ||
630 | .tbat_restart = 100, | ||
631 | |||
632 | .batmon_interval = 0, | ||
633 | |||
634 | .battery_low = cm_x300_battery_low, | ||
635 | .battery_critical = cm_x300_battery_critical, | ||
636 | }; | ||
637 | |||
638 | static struct regulator_consumer_supply buck2_consumers[] = { | ||
639 | { | ||
640 | .dev = NULL, | ||
641 | .supply = "vcc_core", | ||
642 | }, | ||
643 | }; | ||
644 | |||
645 | static struct regulator_init_data buck2_data = { | ||
646 | .constraints = { | ||
647 | .min_uV = 1375000, | ||
648 | .max_uV = 1375000, | ||
649 | .state_mem = { | ||
650 | .enabled = 0, | ||
651 | }, | ||
652 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
653 | .apply_uV = 1, | ||
654 | }, | ||
655 | .num_consumer_supplies = ARRAY_SIZE(buck2_consumers), | ||
656 | .consumer_supplies = buck2_consumers, | ||
657 | }; | ||
658 | |||
587 | /* DA9030 */ | 659 | /* DA9030 */ |
588 | struct da903x_subdev_info cm_x300_da9030_subdevs[] = { | 660 | struct da903x_subdev_info cm_x300_da9030_subdevs[] = { |
589 | { | 661 | { |
590 | .name = "da903x-backlight", | 662 | .name = "da903x-battery", |
591 | .id = DA9030_ID_WLED, | 663 | .id = DA9030_ID_BAT, |
592 | } | 664 | .platform_data = &cm_x300_battery_info, |
665 | }, | ||
666 | { | ||
667 | .name = "da903x-regulator", | ||
668 | .id = DA9030_ID_BUCK2, | ||
669 | .platform_data = &buck2_data, | ||
670 | }, | ||
593 | }; | 671 | }; |
594 | 672 | ||
595 | static struct da903x_platform_data cm_x300_da9030_info = { | 673 | static struct da903x_platform_data cm_x300_da9030_info = { |
@@ -599,7 +677,7 @@ static struct da903x_platform_data cm_x300_da9030_info = { | |||
599 | 677 | ||
600 | static struct i2c_board_info cm_x300_pmic_info = { | 678 | static struct i2c_board_info cm_x300_pmic_info = { |
601 | I2C_BOARD_INFO("da9030", 0x49), | 679 | I2C_BOARD_INFO("da9030", 0x49), |
602 | .irq = IRQ_GPIO(0), | 680 | .irq = IRQ_WAKEUP0, |
603 | .platform_data = &cm_x300_da9030_info, | 681 | .platform_data = &cm_x300_da9030_info, |
604 | }; | 682 | }; |
605 | 683 | ||
@@ -689,13 +767,13 @@ static void __init cm_x300_init(void) | |||
689 | static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags, | 767 | static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags, |
690 | char **cmdline, struct meminfo *mi) | 768 | char **cmdline, struct meminfo *mi) |
691 | { | 769 | { |
692 | mi->nr_banks = 2; | 770 | /* Make sure that mi->bank[0].start = PHYS_ADDR */ |
693 | mi->bank[0].start = 0xa0000000; | 771 | for (; tags->hdr.size; tags = tag_next(tags)) |
694 | mi->bank[0].node = 0; | 772 | if (tags->hdr.tag == ATAG_MEM && |
695 | mi->bank[0].size = (64*1024*1024); | 773 | tags->u.mem.start == 0x80000000) { |
696 | mi->bank[1].start = 0xc0000000; | 774 | tags->u.mem.start = 0xa0000000; |
697 | mi->bank[1].node = 0; | 775 | break; |
698 | mi->bank[1].size = (64*1024*1024); | 776 | } |
699 | } | 777 | } |
700 | 778 | ||
701 | MACHINE_START(CM_X300, "CM-X300 module") | 779 | MACHINE_START(CM_X300, "CM-X300 module") |
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c index e6c0a2287eb8..199afa2ae303 100644 --- a/arch/arm/mach-pxa/colibri-pxa3xx.c +++ b/arch/arm/mach-pxa/colibri-pxa3xx.c | |||
@@ -96,7 +96,7 @@ static void colibri_pxa3xx_mci_exit(struct device *dev, void *data) | |||
96 | } | 96 | } |
97 | 97 | ||
98 | static struct pxamci_platform_data colibri_pxa3xx_mci_platform_data = { | 98 | static struct pxamci_platform_data colibri_pxa3xx_mci_platform_data = { |
99 | .detect_delay = 20, | 99 | .detect_delay_ms = 200, |
100 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 100 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
101 | .init = colibri_pxa3xx_mci_init, | 101 | .init = colibri_pxa3xx_mci_init, |
102 | .exit = colibri_pxa3xx_mci_exit, | 102 | .exit = colibri_pxa3xx_mci_exit, |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index da3156d8690b..3d1dcb9ac08f 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -106,18 +106,18 @@ static unsigned long corgi_pin_config[] __initdata = { | |||
106 | GPIO8_MMC_CS0, | 106 | GPIO8_MMC_CS0, |
107 | 107 | ||
108 | /* GPIO Matrix Keypad */ | 108 | /* GPIO Matrix Keypad */ |
109 | GPIO66_GPIO, /* column 0 */ | 109 | GPIO66_GPIO | MFP_LPM_DRIVE_HIGH, /* column 0 */ |
110 | GPIO67_GPIO, /* column 1 */ | 110 | GPIO67_GPIO | MFP_LPM_DRIVE_HIGH, /* column 1 */ |
111 | GPIO68_GPIO, /* column 2 */ | 111 | GPIO68_GPIO | MFP_LPM_DRIVE_HIGH, /* column 2 */ |
112 | GPIO69_GPIO, /* column 3 */ | 112 | GPIO69_GPIO | MFP_LPM_DRIVE_HIGH, /* column 3 */ |
113 | GPIO70_GPIO, /* column 4 */ | 113 | GPIO70_GPIO | MFP_LPM_DRIVE_HIGH, /* column 4 */ |
114 | GPIO71_GPIO, /* column 5 */ | 114 | GPIO71_GPIO | MFP_LPM_DRIVE_HIGH, /* column 5 */ |
115 | GPIO72_GPIO, /* column 6 */ | 115 | GPIO72_GPIO | MFP_LPM_DRIVE_HIGH, /* column 6 */ |
116 | GPIO73_GPIO, /* column 7 */ | 116 | GPIO73_GPIO | MFP_LPM_DRIVE_HIGH, /* column 7 */ |
117 | GPIO74_GPIO, /* column 8 */ | 117 | GPIO74_GPIO | MFP_LPM_DRIVE_HIGH, /* column 8 */ |
118 | GPIO75_GPIO, /* column 9 */ | 118 | GPIO75_GPIO | MFP_LPM_DRIVE_HIGH, /* column 9 */ |
119 | GPIO76_GPIO, /* column 10 */ | 119 | GPIO76_GPIO | MFP_LPM_DRIVE_HIGH, /* column 10 */ |
120 | GPIO77_GPIO, /* column 11 */ | 120 | GPIO77_GPIO | MFP_LPM_DRIVE_HIGH, /* column 11 */ |
121 | GPIO58_GPIO, /* row 0 */ | 121 | GPIO58_GPIO, /* row 0 */ |
122 | GPIO59_GPIO, /* row 1 */ | 122 | GPIO59_GPIO, /* row 1 */ |
123 | GPIO60_GPIO, /* row 2 */ | 123 | GPIO60_GPIO, /* row 2 */ |
@@ -128,13 +128,20 @@ static unsigned long corgi_pin_config[] __initdata = { | |||
128 | GPIO65_GPIO, /* row 7 */ | 128 | GPIO65_GPIO, /* row 7 */ |
129 | 129 | ||
130 | /* GPIO */ | 130 | /* GPIO */ |
131 | GPIO9_GPIO, /* CORGI_GPIO_nSD_DETECT */ | 131 | GPIO9_GPIO, /* CORGI_GPIO_nSD_DETECT */ |
132 | GPIO7_GPIO, /* CORGI_GPIO_nSD_WP */ | 132 | GPIO7_GPIO, /* CORGI_GPIO_nSD_WP */ |
133 | GPIO33_GPIO, /* CORGI_GPIO_SD_PWR */ | 133 | GPIO11_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_MAIN_BAT_{LOW,COVER} */ |
134 | GPIO22_GPIO, /* CORGI_GPIO_IR_ON */ | 134 | GPIO13_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_LED_ORANGE */ |
135 | GPIO44_GPIO, /* CORGI_GPIO_HSYNC */ | 135 | GPIO21_GPIO, /* CORGI_GPIO_ADC_TEMP */ |
136 | 136 | GPIO22_GPIO, /* CORGI_GPIO_IR_ON */ | |
137 | GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, | 137 | GPIO33_GPIO, /* CORGI_GPIO_SD_PWR */ |
138 | GPIO38_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_CHRG_ON */ | ||
139 | GPIO43_GPIO | MFP_LPM_KEEP_OUTPUT, /* CORGI_GPIO_CHRG_UKN */ | ||
140 | GPIO44_GPIO, /* CORGI_GPIO_HSYNC */ | ||
141 | |||
142 | GPIO0_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_KEY_INT */ | ||
143 | GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, /* CORGI_GPIO_AC_IN */ | ||
144 | GPIO3_GPIO | WAKEUP_ON_EDGE_BOTH, /* CORGI_GPIO_WAKEUP */ | ||
138 | }; | 145 | }; |
139 | 146 | ||
140 | /* | 147 | /* |
@@ -437,6 +444,7 @@ static struct platform_device corgiled_device = { | |||
437 | * to give the card a chance to fully insert/eject. | 444 | * to give the card a chance to fully insert/eject. |
438 | */ | 445 | */ |
439 | static struct pxamci_platform_data corgi_mci_platform_data = { | 446 | static struct pxamci_platform_data corgi_mci_platform_data = { |
447 | .detect_delay_ms = 250, | ||
440 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 448 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
441 | .gpio_card_detect = -1, | 449 | .gpio_card_detect = -1, |
442 | .gpio_card_ro = CORGI_GPIO_nSD_WP, | 450 | .gpio_card_ro = CORGI_GPIO_nSD_WP, |
@@ -672,6 +680,15 @@ static void __init corgi_init(void) | |||
672 | 680 | ||
673 | pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config)); | 681 | pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config)); |
674 | 682 | ||
683 | /* allow wakeup from various GPIOs */ | ||
684 | gpio_set_wake(CORGI_GPIO_KEY_INT, 1); | ||
685 | gpio_set_wake(CORGI_GPIO_WAKEUP, 1); | ||
686 | gpio_set_wake(CORGI_GPIO_AC_IN, 1); | ||
687 | gpio_set_wake(CORGI_GPIO_CHRG_FULL, 1); | ||
688 | |||
689 | if (!machine_is_corgi()) | ||
690 | gpio_set_wake(CORGI_GPIO_MAIN_BAT_LOW, 1); | ||
691 | |||
675 | pxa_set_ffuart_info(NULL); | 692 | pxa_set_ffuart_info(NULL); |
676 | pxa_set_btuart_info(NULL); | 693 | pxa_set_btuart_info(NULL); |
677 | pxa_set_stuart_info(NULL); | 694 | pxa_set_stuart_info(NULL); |
@@ -679,7 +696,6 @@ static void __init corgi_init(void) | |||
679 | corgi_init_spi(); | 696 | corgi_init_spi(); |
680 | 697 | ||
681 | pxa_set_udc_info(&udc_info); | 698 | pxa_set_udc_info(&udc_info); |
682 | corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
683 | pxa_set_mci_info(&corgi_mci_platform_data); | 699 | pxa_set_mci_info(&corgi_mci_platform_data); |
684 | pxa_set_ficp_info(&corgi_ficp_platform_data); | 700 | pxa_set_ficp_info(&corgi_ficp_platform_data); |
685 | pxa_set_i2c_info(NULL); | 701 | pxa_set_i2c_info(NULL); |
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c deleted file mode 100644 index d9b96319d498..000000000000 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ /dev/null | |||
@@ -1,288 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/corgi_lcd.c | ||
3 | * | ||
4 | * Corgi/Spitz LCD Specific Code | ||
5 | * | ||
6 | * Copyright (C) 2005 Richard Purdie | ||
7 | * | ||
8 | * Connectivity: | ||
9 | * Corgi - LCD to ATI Imageon w100 (Wallaby) | ||
10 | * Spitz - LCD to PXA Framebuffer | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/delay.h> | ||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/module.h> | ||
22 | #include <linux/string.h> | ||
23 | #include <mach/corgi.h> | ||
24 | #include <mach/hardware.h> | ||
25 | #include <mach/sharpsl.h> | ||
26 | #include <mach/spitz.h> | ||
27 | #include <asm/hardware/scoop.h> | ||
28 | #include <asm/mach/sharpsl_param.h> | ||
29 | #include "generic.h" | ||
30 | |||
31 | /* Register Addresses */ | ||
32 | #define RESCTL_ADRS 0x00 | ||
33 | #define PHACTRL_ADRS 0x01 | ||
34 | #define DUTYCTRL_ADRS 0x02 | ||
35 | #define POWERREG0_ADRS 0x03 | ||
36 | #define POWERREG1_ADRS 0x04 | ||
37 | #define GPOR3_ADRS 0x05 | ||
38 | #define PICTRL_ADRS 0x06 | ||
39 | #define POLCTRL_ADRS 0x07 | ||
40 | |||
41 | /* Register Bit Definitions */ | ||
42 | #define RESCTL_QVGA 0x01 | ||
43 | #define RESCTL_VGA 0x00 | ||
44 | |||
45 | #define POWER1_VW_ON 0x01 /* VW Supply FET ON */ | ||
46 | #define POWER1_GVSS_ON 0x02 /* GVSS(-8V) Power Supply ON */ | ||
47 | #define POWER1_VDD_ON 0x04 /* VDD(8V),SVSS(-4V) Power Supply ON */ | ||
48 | |||
49 | #define POWER1_VW_OFF 0x00 /* VW Supply FET OFF */ | ||
50 | #define POWER1_GVSS_OFF 0x00 /* GVSS(-8V) Power Supply OFF */ | ||
51 | #define POWER1_VDD_OFF 0x00 /* VDD(8V),SVSS(-4V) Power Supply OFF */ | ||
52 | |||
53 | #define POWER0_COM_DCLK 0x01 /* COM Voltage DC Bias DAC Serial Data Clock */ | ||
54 | #define POWER0_COM_DOUT 0x02 /* COM Voltage DC Bias DAC Serial Data Out */ | ||
55 | #define POWER0_DAC_ON 0x04 /* DAC Power Supply ON */ | ||
56 | #define POWER0_COM_ON 0x08 /* COM Power Supply ON */ | ||
57 | #define POWER0_VCC5_ON 0x10 /* VCC5 Power Supply ON */ | ||
58 | |||
59 | #define POWER0_DAC_OFF 0x00 /* DAC Power Supply OFF */ | ||
60 | #define POWER0_COM_OFF 0x00 /* COM Power Supply OFF */ | ||
61 | #define POWER0_VCC5_OFF 0x00 /* VCC5 Power Supply OFF */ | ||
62 | |||
63 | #define PICTRL_INIT_STATE 0x01 | ||
64 | #define PICTRL_INIOFF 0x02 | ||
65 | #define PICTRL_POWER_DOWN 0x04 | ||
66 | #define PICTRL_COM_SIGNAL_OFF 0x08 | ||
67 | #define PICTRL_DAC_SIGNAL_OFF 0x10 | ||
68 | |||
69 | #define POLCTRL_SYNC_POL_FALL 0x01 | ||
70 | #define POLCTRL_EN_POL_FALL 0x02 | ||
71 | #define POLCTRL_DATA_POL_FALL 0x04 | ||
72 | #define POLCTRL_SYNC_ACT_H 0x08 | ||
73 | #define POLCTRL_EN_ACT_L 0x10 | ||
74 | |||
75 | #define POLCTRL_SYNC_POL_RISE 0x00 | ||
76 | #define POLCTRL_EN_POL_RISE 0x00 | ||
77 | #define POLCTRL_DATA_POL_RISE 0x00 | ||
78 | #define POLCTRL_SYNC_ACT_L 0x00 | ||
79 | #define POLCTRL_EN_ACT_H 0x00 | ||
80 | |||
81 | #define PHACTRL_PHASE_MANUAL 0x01 | ||
82 | #define DEFAULT_PHAD_QVGA (9) | ||
83 | #define DEFAULT_COMADJ (125) | ||
84 | |||
85 | /* | ||
86 | * This is only a psuedo I2C interface. We can't use the standard kernel | ||
87 | * routines as the interface is write only. We just assume the data is acked... | ||
88 | */ | ||
89 | static void lcdtg_ssp_i2c_send(u8 data) | ||
90 | { | ||
91 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, data); | ||
92 | udelay(10); | ||
93 | } | ||
94 | |||
95 | static void lcdtg_i2c_send_bit(u8 data) | ||
96 | { | ||
97 | lcdtg_ssp_i2c_send(data); | ||
98 | lcdtg_ssp_i2c_send(data | POWER0_COM_DCLK); | ||
99 | lcdtg_ssp_i2c_send(data); | ||
100 | } | ||
101 | |||
102 | static void lcdtg_i2c_send_start(u8 base) | ||
103 | { | ||
104 | lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT); | ||
105 | lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK); | ||
106 | lcdtg_ssp_i2c_send(base); | ||
107 | } | ||
108 | |||
109 | static void lcdtg_i2c_send_stop(u8 base) | ||
110 | { | ||
111 | lcdtg_ssp_i2c_send(base); | ||
112 | lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK); | ||
113 | lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT); | ||
114 | } | ||
115 | |||
116 | static void lcdtg_i2c_send_byte(u8 base, u8 data) | ||
117 | { | ||
118 | int i; | ||
119 | for (i = 0; i < 8; i++) { | ||
120 | if (data & 0x80) | ||
121 | lcdtg_i2c_send_bit(base | POWER0_COM_DOUT); | ||
122 | else | ||
123 | lcdtg_i2c_send_bit(base); | ||
124 | data <<= 1; | ||
125 | } | ||
126 | } | ||
127 | |||
128 | static void lcdtg_i2c_wait_ack(u8 base) | ||
129 | { | ||
130 | lcdtg_i2c_send_bit(base); | ||
131 | } | ||
132 | |||
133 | static void lcdtg_set_common_voltage(u8 base_data, u8 data) | ||
134 | { | ||
135 | /* Set Common Voltage to M62332FP via I2C */ | ||
136 | lcdtg_i2c_send_start(base_data); | ||
137 | lcdtg_i2c_send_byte(base_data, 0x9c); | ||
138 | lcdtg_i2c_wait_ack(base_data); | ||
139 | lcdtg_i2c_send_byte(base_data, 0x00); | ||
140 | lcdtg_i2c_wait_ack(base_data); | ||
141 | lcdtg_i2c_send_byte(base_data, data); | ||
142 | lcdtg_i2c_wait_ack(base_data); | ||
143 | lcdtg_i2c_send_stop(base_data); | ||
144 | } | ||
145 | |||
146 | /* Set Phase Adjust */ | ||
147 | static void lcdtg_set_phadadj(int mode) | ||
148 | { | ||
149 | int adj; | ||
150 | switch(mode) { | ||
151 | case 480: | ||
152 | case 640: | ||
153 | /* Setting for VGA */ | ||
154 | adj = sharpsl_param.phadadj; | ||
155 | if (adj < 0) { | ||
156 | adj = PHACTRL_PHASE_MANUAL; | ||
157 | } else { | ||
158 | adj = ((adj & 0x0f) << 1) | PHACTRL_PHASE_MANUAL; | ||
159 | } | ||
160 | break; | ||
161 | case 240: | ||
162 | case 320: | ||
163 | default: | ||
164 | /* Setting for QVGA */ | ||
165 | adj = (DEFAULT_PHAD_QVGA << 1) | PHACTRL_PHASE_MANUAL; | ||
166 | break; | ||
167 | } | ||
168 | |||
169 | corgi_ssp_lcdtg_send(PHACTRL_ADRS, adj); | ||
170 | } | ||
171 | |||
172 | static int lcd_inited; | ||
173 | |||
174 | void corgi_lcdtg_hw_init(int mode) | ||
175 | { | ||
176 | if (!lcd_inited) { | ||
177 | int comadj; | ||
178 | |||
179 | /* Initialize Internal Logic & Port */ | ||
180 | corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_POWER_DOWN | PICTRL_INIOFF | PICTRL_INIT_STATE | ||
181 | | PICTRL_COM_SIGNAL_OFF | PICTRL_DAC_SIGNAL_OFF); | ||
182 | |||
183 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_OFF | ||
184 | | POWER0_COM_OFF | POWER0_VCC5_OFF); | ||
185 | |||
186 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF); | ||
187 | |||
188 | /* VDD(+8V), SVSS(-4V) ON */ | ||
189 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON); | ||
190 | mdelay(3); | ||
191 | |||
192 | /* DAC ON */ | ||
193 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | ||
194 | | POWER0_COM_OFF | POWER0_VCC5_OFF); | ||
195 | |||
196 | /* INIB = H, INI = L */ | ||
197 | /* PICTL[0] = H , PICTL[1] = PICTL[2] = PICTL[4] = L */ | ||
198 | corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE | PICTRL_COM_SIGNAL_OFF); | ||
199 | |||
200 | /* Set Common Voltage */ | ||
201 | comadj = sharpsl_param.comadj; | ||
202 | if (comadj < 0) | ||
203 | comadj = DEFAULT_COMADJ; | ||
204 | lcdtg_set_common_voltage((POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF), comadj); | ||
205 | |||
206 | /* VCC5 ON, DAC ON */ | ||
207 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | | ||
208 | POWER0_COM_OFF | POWER0_VCC5_ON); | ||
209 | |||
210 | /* GVSS(-8V) ON, VDD ON */ | ||
211 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON); | ||
212 | mdelay(2); | ||
213 | |||
214 | /* COM SIGNAL ON (PICTL[3] = L) */ | ||
215 | corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE); | ||
216 | |||
217 | /* COM ON, DAC ON, VCC5_ON */ | ||
218 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON | ||
219 | | POWER0_COM_ON | POWER0_VCC5_ON); | ||
220 | |||
221 | /* VW ON, GVSS ON, VDD ON */ | ||
222 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_ON | POWER1_GVSS_ON | POWER1_VDD_ON); | ||
223 | |||
224 | /* Signals output enable */ | ||
225 | corgi_ssp_lcdtg_send(PICTRL_ADRS, 0); | ||
226 | |||
227 | /* Set Phase Adjust */ | ||
228 | lcdtg_set_phadadj(mode); | ||
229 | |||
230 | /* Initialize for Input Signals from ATI */ | ||
231 | corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE | ||
232 | | POLCTRL_DATA_POL_RISE | POLCTRL_SYNC_ACT_L | POLCTRL_EN_ACT_H); | ||
233 | udelay(1000); | ||
234 | |||
235 | lcd_inited=1; | ||
236 | } else { | ||
237 | lcdtg_set_phadadj(mode); | ||
238 | } | ||
239 | |||
240 | switch(mode) { | ||
241 | case 480: | ||
242 | case 640: | ||
243 | /* Set Lcd Resolution (VGA) */ | ||
244 | corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_VGA); | ||
245 | break; | ||
246 | case 240: | ||
247 | case 320: | ||
248 | default: | ||
249 | /* Set Lcd Resolution (QVGA) */ | ||
250 | corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_QVGA); | ||
251 | break; | ||
252 | } | ||
253 | } | ||
254 | |||
255 | void corgi_lcdtg_suspend(void) | ||
256 | { | ||
257 | /* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */ | ||
258 | mdelay(34); | ||
259 | |||
260 | /* (1)VW OFF */ | ||
261 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON); | ||
262 | |||
263 | /* (2)COM OFF */ | ||
264 | corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_COM_SIGNAL_OFF); | ||
265 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON); | ||
266 | |||
267 | /* (3)Set Common Voltage Bias 0V */ | ||
268 | lcdtg_set_common_voltage(POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON, 0); | ||
269 | |||
270 | /* (4)GVSS OFF */ | ||
271 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON); | ||
272 | |||
273 | /* (5)VCC5 OFF */ | ||
274 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF); | ||
275 | |||
276 | /* (6)Set PDWN, INIOFF, DACOFF */ | ||
277 | corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIOFF | PICTRL_DAC_SIGNAL_OFF | | ||
278 | PICTRL_POWER_DOWN | PICTRL_COM_SIGNAL_OFF); | ||
279 | |||
280 | /* (7)DAC OFF */ | ||
281 | corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_OFF | POWER0_COM_OFF | POWER0_VCC5_OFF); | ||
282 | |||
283 | /* (8)VDD OFF */ | ||
284 | corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF); | ||
285 | |||
286 | lcd_inited = 0; | ||
287 | } | ||
288 | |||
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index d4a0733e905b..3f1dc74ac048 100644 --- a/arch/arm/mach-pxa/corgi_pm.c +++ b/arch/arm/mach-pxa/corgi_pm.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/gpio.h> | ||
17 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
18 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
19 | #include <linux/apm-emulation.h> | 20 | #include <linux/apm-emulation.h> |
@@ -25,7 +26,8 @@ | |||
25 | #include <mach/sharpsl.h> | 26 | #include <mach/sharpsl.h> |
26 | #include <mach/corgi.h> | 27 | #include <mach/corgi.h> |
27 | #include <mach/pxa2xx-regs.h> | 28 | #include <mach/pxa2xx-regs.h> |
28 | #include <mach/pxa2xx-gpio.h> | 29 | |
30 | #include "generic.h" | ||
29 | #include "sharpsl.h" | 31 | #include "sharpsl.h" |
30 | 32 | ||
31 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ | 33 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ |
@@ -35,87 +37,46 @@ | |||
35 | #define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ | 37 | #define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ |
36 | #define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ | 38 | #define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ |
37 | 39 | ||
40 | static struct gpio charger_gpios[] = { | ||
41 | { CORGI_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" }, | ||
42 | { CORGI_GPIO_CHRG_ON, GPIOF_OUT_INIT_LOW, "Charger On" }, | ||
43 | { CORGI_GPIO_CHRG_UKN, GPIOF_OUT_INIT_LOW, "Charger Unknown" }, | ||
44 | { CORGI_GPIO_KEY_INT, GPIOF_IN, "Key Interrupt" }, | ||
45 | }; | ||
46 | |||
38 | static void corgi_charger_init(void) | 47 | static void corgi_charger_init(void) |
39 | { | 48 | { |
40 | pxa_gpio_mode(CORGI_GPIO_ADC_TEMP_ON | GPIO_OUT); | 49 | gpio_request_array(ARRAY_AND_SIZE(charger_gpios)); |
41 | pxa_gpio_mode(CORGI_GPIO_CHRG_ON | GPIO_OUT); | ||
42 | pxa_gpio_mode(CORGI_GPIO_CHRG_UKN | GPIO_OUT); | ||
43 | pxa_gpio_mode(CORGI_GPIO_KEY_INT | GPIO_IN); | ||
44 | } | 50 | } |
45 | 51 | ||
46 | static void corgi_measure_temp(int on) | 52 | static void corgi_measure_temp(int on) |
47 | { | 53 | { |
48 | if (on) | 54 | gpio_set_value(CORGI_GPIO_ADC_TEMP_ON, on); |
49 | GPSR(CORGI_GPIO_ADC_TEMP_ON) = GPIO_bit(CORGI_GPIO_ADC_TEMP_ON); | ||
50 | else | ||
51 | GPCR(CORGI_GPIO_ADC_TEMP_ON) = GPIO_bit(CORGI_GPIO_ADC_TEMP_ON); | ||
52 | } | 55 | } |
53 | 56 | ||
54 | static void corgi_charge(int on) | 57 | static void corgi_charge(int on) |
55 | { | 58 | { |
56 | if (on) { | 59 | if (on) { |
57 | if (machine_is_corgi() && (sharpsl_pm.flags & SHARPSL_SUSPENDED)) { | 60 | if (machine_is_corgi() && (sharpsl_pm.flags & SHARPSL_SUSPENDED)) { |
58 | GPCR(CORGI_GPIO_CHRG_ON) = GPIO_bit(CORGI_GPIO_CHRG_ON); | 61 | gpio_set_value(CORGI_GPIO_CHRG_ON, 0); |
59 | GPSR(CORGI_GPIO_CHRG_UKN) = GPIO_bit(CORGI_GPIO_CHRG_UKN); | 62 | gpio_set_value(CORGI_GPIO_CHRG_UKN, 1); |
60 | } else { | 63 | } else { |
61 | GPSR(CORGI_GPIO_CHRG_ON) = GPIO_bit(CORGI_GPIO_CHRG_ON); | 64 | gpio_set_value(CORGI_GPIO_CHRG_ON, 1); |
62 | GPCR(CORGI_GPIO_CHRG_UKN) = GPIO_bit(CORGI_GPIO_CHRG_UKN); | 65 | gpio_set_value(CORGI_GPIO_CHRG_UKN, 0); |
63 | } | 66 | } |
64 | } else { | 67 | } else { |
65 | GPCR(CORGI_GPIO_CHRG_ON) = GPIO_bit(CORGI_GPIO_CHRG_ON); | 68 | gpio_set_value(CORGI_GPIO_CHRG_ON, 0); |
66 | GPCR(CORGI_GPIO_CHRG_UKN) = GPIO_bit(CORGI_GPIO_CHRG_UKN); | 69 | gpio_set_value(CORGI_GPIO_CHRG_UKN, 0); |
67 | } | 70 | } |
68 | } | 71 | } |
69 | 72 | ||
70 | static void corgi_discharge(int on) | 73 | static void corgi_discharge(int on) |
71 | { | 74 | { |
72 | if (on) | 75 | gpio_set_value(CORGI_GPIO_DISCHARGE_ON, on); |
73 | GPSR(CORGI_GPIO_DISCHARGE_ON) = GPIO_bit(CORGI_GPIO_DISCHARGE_ON); | ||
74 | else | ||
75 | GPCR(CORGI_GPIO_DISCHARGE_ON) = GPIO_bit(CORGI_GPIO_DISCHARGE_ON); | ||
76 | } | 76 | } |
77 | 77 | ||
78 | static void corgi_presuspend(void) | 78 | static void corgi_presuspend(void) |
79 | { | 79 | { |
80 | int i; | ||
81 | unsigned long wakeup_mask; | ||
82 | |||
83 | /* charging , so CHARGE_ON bit is HIGH during OFF. */ | ||
84 | if (READ_GPIO_BIT(CORGI_GPIO_CHRG_ON)) | ||
85 | PGSR1 |= GPIO_bit(CORGI_GPIO_CHRG_ON); | ||
86 | else | ||
87 | PGSR1 &= ~GPIO_bit(CORGI_GPIO_CHRG_ON); | ||
88 | |||
89 | if (READ_GPIO_BIT(CORGI_GPIO_LED_ORANGE)) | ||
90 | PGSR0 |= GPIO_bit(CORGI_GPIO_LED_ORANGE); | ||
91 | else | ||
92 | PGSR0 &= ~GPIO_bit(CORGI_GPIO_LED_ORANGE); | ||
93 | |||
94 | if (READ_GPIO_BIT(CORGI_GPIO_CHRG_UKN)) | ||
95 | PGSR1 |= GPIO_bit(CORGI_GPIO_CHRG_UKN); | ||
96 | else | ||
97 | PGSR1 &= ~GPIO_bit(CORGI_GPIO_CHRG_UKN); | ||
98 | |||
99 | /* Resume on keyboard power key */ | ||
100 | PGSR2 = (PGSR2 & ~CORGI_GPIO_ALL_STROBE_BIT) | CORGI_GPIO_STROBE_BIT(0); | ||
101 | |||
102 | wakeup_mask = GPIO_bit(CORGI_GPIO_KEY_INT) | GPIO_bit(CORGI_GPIO_WAKEUP) | GPIO_bit(CORGI_GPIO_AC_IN) | GPIO_bit(CORGI_GPIO_CHRG_FULL); | ||
103 | |||
104 | if (!machine_is_corgi()) | ||
105 | wakeup_mask |= GPIO_bit(CORGI_GPIO_MAIN_BAT_LOW); | ||
106 | |||
107 | PWER = wakeup_mask | PWER_RTC; | ||
108 | PRER = wakeup_mask; | ||
109 | PFER = wakeup_mask; | ||
110 | |||
111 | for (i = 0; i <=15; i++) { | ||
112 | if (PRER & PFER & GPIO_bit(i)) { | ||
113 | if (GPLR0 & GPIO_bit(i) ) | ||
114 | PRER &= ~GPIO_bit(i); | ||
115 | else | ||
116 | PFER &= ~GPIO_bit(i); | ||
117 | } | ||
118 | } | ||
119 | } | 80 | } |
120 | 81 | ||
121 | static void corgi_postsuspend(void) | 82 | static void corgi_postsuspend(void) |
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c deleted file mode 100644 index 9347254f8bcf..000000000000 --- a/arch/arm/mach-pxa/corgi_ssp.c +++ /dev/null | |||
@@ -1,274 +0,0 @@ | |||
1 | /* | ||
2 | * SSP control code for Sharp Corgi devices | ||
3 | * | ||
4 | * Copyright (c) 2004-2005 Richard Purdie | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #include <linux/module.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/sched.h> | ||
16 | #include <linux/delay.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <mach/hardware.h> | ||
19 | #include <asm/mach-types.h> | ||
20 | |||
21 | #include <mach/ssp.h> | ||
22 | #include <mach/pxa2xx-gpio.h> | ||
23 | #include <mach/regs-ssp.h> | ||
24 | #include "sharpsl.h" | ||
25 | |||
26 | static DEFINE_SPINLOCK(corgi_ssp_lock); | ||
27 | static struct ssp_dev corgi_ssp_dev; | ||
28 | static struct ssp_state corgi_ssp_state; | ||
29 | static struct corgissp_machinfo *ssp_machinfo; | ||
30 | |||
31 | /* | ||
32 | * There are three devices connected to the SSP interface: | ||
33 | * 1. A touchscreen controller (TI ADS7846 compatible) | ||
34 | * 2. An LCD controller (with some Backlight functionality) | ||
35 | * 3. A battery monitoring IC (Maxim MAX1111) | ||
36 | * | ||
37 | * Each device uses a different speed/mode of communication. | ||
38 | * | ||
39 | * The touchscreen is very sensitive and the most frequently used | ||
40 | * so the port is left configured for this. | ||
41 | * | ||
42 | * Devices are selected using Chip Selects on GPIOs. | ||
43 | */ | ||
44 | |||
45 | /* | ||
46 | * ADS7846 Routines | ||
47 | */ | ||
48 | unsigned long corgi_ssp_ads7846_putget(ulong data) | ||
49 | { | ||
50 | unsigned long flag; | ||
51 | u32 ret = 0; | ||
52 | |||
53 | spin_lock_irqsave(&corgi_ssp_lock, flag); | ||
54 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
55 | GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); | ||
56 | |||
57 | ssp_write_word(&corgi_ssp_dev,data); | ||
58 | ssp_read_word(&corgi_ssp_dev, &ret); | ||
59 | |||
60 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
61 | GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); | ||
62 | spin_unlock_irqrestore(&corgi_ssp_lock, flag); | ||
63 | |||
64 | return ret; | ||
65 | } | ||
66 | |||
67 | /* | ||
68 | * NOTE: These functions should always be called in interrupt context | ||
69 | * and use the _lock and _unlock functions. They are very time sensitive. | ||
70 | */ | ||
71 | void corgi_ssp_ads7846_lock(void) | ||
72 | { | ||
73 | spin_lock(&corgi_ssp_lock); | ||
74 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
75 | GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); | ||
76 | } | ||
77 | |||
78 | void corgi_ssp_ads7846_unlock(void) | ||
79 | { | ||
80 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
81 | GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); | ||
82 | spin_unlock(&corgi_ssp_lock); | ||
83 | } | ||
84 | |||
85 | void corgi_ssp_ads7846_put(ulong data) | ||
86 | { | ||
87 | ssp_write_word(&corgi_ssp_dev,data); | ||
88 | } | ||
89 | |||
90 | unsigned long corgi_ssp_ads7846_get(void) | ||
91 | { | ||
92 | u32 ret = 0; | ||
93 | ssp_read_word(&corgi_ssp_dev, &ret); | ||
94 | return ret; | ||
95 | } | ||
96 | |||
97 | EXPORT_SYMBOL(corgi_ssp_ads7846_putget); | ||
98 | EXPORT_SYMBOL(corgi_ssp_ads7846_lock); | ||
99 | EXPORT_SYMBOL(corgi_ssp_ads7846_unlock); | ||
100 | EXPORT_SYMBOL(corgi_ssp_ads7846_put); | ||
101 | EXPORT_SYMBOL(corgi_ssp_ads7846_get); | ||
102 | |||
103 | |||
104 | /* | ||
105 | * LCD/Backlight Routines | ||
106 | */ | ||
107 | unsigned long corgi_ssp_dac_put(ulong data) | ||
108 | { | ||
109 | unsigned long flag, sscr1 = SSCR1_SPH; | ||
110 | u32 tmp; | ||
111 | |||
112 | spin_lock_irqsave(&corgi_ssp_lock, flag); | ||
113 | |||
114 | if (machine_is_spitz() || machine_is_akita() || machine_is_borzoi()) | ||
115 | sscr1 = 0; | ||
116 | |||
117 | ssp_disable(&corgi_ssp_dev); | ||
118 | ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), sscr1, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_lcdcon)); | ||
119 | ssp_enable(&corgi_ssp_dev); | ||
120 | |||
121 | if (ssp_machinfo->cs_lcdcon >= 0) | ||
122 | GPCR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); | ||
123 | ssp_write_word(&corgi_ssp_dev,data); | ||
124 | /* Read null data back from device to prevent SSP overflow */ | ||
125 | ssp_read_word(&corgi_ssp_dev, &tmp); | ||
126 | if (ssp_machinfo->cs_lcdcon >= 0) | ||
127 | GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); | ||
128 | |||
129 | ssp_disable(&corgi_ssp_dev); | ||
130 | ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846)); | ||
131 | ssp_enable(&corgi_ssp_dev); | ||
132 | |||
133 | spin_unlock_irqrestore(&corgi_ssp_lock, flag); | ||
134 | |||
135 | return 0; | ||
136 | } | ||
137 | |||
138 | void corgi_ssp_lcdtg_send(u8 adrs, u8 data) | ||
139 | { | ||
140 | corgi_ssp_dac_put(((adrs & 0x07) << 5) | (data & 0x1f)); | ||
141 | } | ||
142 | |||
143 | void corgi_ssp_blduty_set(int duty) | ||
144 | { | ||
145 | corgi_ssp_lcdtg_send(0x02,duty); | ||
146 | } | ||
147 | |||
148 | EXPORT_SYMBOL(corgi_ssp_lcdtg_send); | ||
149 | EXPORT_SYMBOL(corgi_ssp_blduty_set); | ||
150 | |||
151 | /* | ||
152 | * Max1111 Routines | ||
153 | */ | ||
154 | int corgi_ssp_max1111_get(ulong data) | ||
155 | { | ||
156 | unsigned long flag; | ||
157 | long voltage = 0, voltage1 = 0, voltage2 = 0; | ||
158 | |||
159 | spin_lock_irqsave(&corgi_ssp_lock, flag); | ||
160 | if (ssp_machinfo->cs_max1111 >= 0) | ||
161 | GPCR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); | ||
162 | ssp_disable(&corgi_ssp_dev); | ||
163 | ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_max1111)); | ||
164 | ssp_enable(&corgi_ssp_dev); | ||
165 | |||
166 | udelay(1); | ||
167 | |||
168 | /* TB1/RB1 */ | ||
169 | ssp_write_word(&corgi_ssp_dev,data); | ||
170 | ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1); /* null read */ | ||
171 | |||
172 | /* TB12/RB2 */ | ||
173 | ssp_write_word(&corgi_ssp_dev,0); | ||
174 | ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1); | ||
175 | |||
176 | /* TB13/RB3*/ | ||
177 | ssp_write_word(&corgi_ssp_dev,0); | ||
178 | ssp_read_word(&corgi_ssp_dev, (u32*)&voltage2); | ||
179 | |||
180 | ssp_disable(&corgi_ssp_dev); | ||
181 | ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846)); | ||
182 | ssp_enable(&corgi_ssp_dev); | ||
183 | if (ssp_machinfo->cs_max1111 >= 0) | ||
184 | GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); | ||
185 | spin_unlock_irqrestore(&corgi_ssp_lock, flag); | ||
186 | |||
187 | if (voltage1 & 0xc0 || voltage2 & 0x3f) | ||
188 | voltage = -1; | ||
189 | else | ||
190 | voltage = ((voltage1 << 2) & 0xfc) | ((voltage2 >> 6) & 0x03); | ||
191 | |||
192 | return voltage; | ||
193 | } | ||
194 | |||
195 | EXPORT_SYMBOL(corgi_ssp_max1111_get); | ||
196 | |||
197 | /* | ||
198 | * Support Routines | ||
199 | */ | ||
200 | |||
201 | void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo) | ||
202 | { | ||
203 | ssp_machinfo = machinfo; | ||
204 | } | ||
205 | |||
206 | static int __devinit corgi_ssp_probe(struct platform_device *dev) | ||
207 | { | ||
208 | int ret; | ||
209 | |||
210 | /* Chip Select - Disable All */ | ||
211 | if (ssp_machinfo->cs_lcdcon >= 0) | ||
212 | pxa_gpio_mode(ssp_machinfo->cs_lcdcon | GPIO_OUT | GPIO_DFLT_HIGH); | ||
213 | if (ssp_machinfo->cs_max1111 >= 0) | ||
214 | pxa_gpio_mode(ssp_machinfo->cs_max1111 | GPIO_OUT | GPIO_DFLT_HIGH); | ||
215 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
216 | pxa_gpio_mode(ssp_machinfo->cs_ads7846 | GPIO_OUT | GPIO_DFLT_HIGH); | ||
217 | |||
218 | ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0); | ||
219 | |||
220 | if (ret) | ||
221 | printk(KERN_ERR "Unable to register SSP handler!\n"); | ||
222 | else { | ||
223 | ssp_disable(&corgi_ssp_dev); | ||
224 | ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846)); | ||
225 | ssp_enable(&corgi_ssp_dev); | ||
226 | } | ||
227 | |||
228 | return ret; | ||
229 | } | ||
230 | |||
231 | static int corgi_ssp_remove(struct platform_device *dev) | ||
232 | { | ||
233 | ssp_exit(&corgi_ssp_dev); | ||
234 | return 0; | ||
235 | } | ||
236 | |||
237 | static int corgi_ssp_suspend(struct platform_device *dev, pm_message_t state) | ||
238 | { | ||
239 | ssp_flush(&corgi_ssp_dev); | ||
240 | ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state); | ||
241 | |||
242 | return 0; | ||
243 | } | ||
244 | |||
245 | static int corgi_ssp_resume(struct platform_device *dev) | ||
246 | { | ||
247 | if (ssp_machinfo->cs_lcdcon >= 0) | ||
248 | GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */ | ||
249 | if (ssp_machinfo->cs_max1111 >= 0) | ||
250 | GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/ | ||
251 | if (ssp_machinfo->cs_ads7846 >= 0) | ||
252 | GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/ | ||
253 | ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state); | ||
254 | ssp_enable(&corgi_ssp_dev); | ||
255 | |||
256 | return 0; | ||
257 | } | ||
258 | |||
259 | static struct platform_driver corgissp_driver = { | ||
260 | .probe = corgi_ssp_probe, | ||
261 | .remove = corgi_ssp_remove, | ||
262 | .suspend = corgi_ssp_suspend, | ||
263 | .resume = corgi_ssp_resume, | ||
264 | .driver = { | ||
265 | .name = "corgi-ssp", | ||
266 | }, | ||
267 | }; | ||
268 | |||
269 | int __init corgi_ssp_init(void) | ||
270 | { | ||
271 | return platform_driver_register(&corgissp_driver); | ||
272 | } | ||
273 | |||
274 | arch_initcall(corgi_ssp_init); | ||
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c index 88575b87bd33..91fd4fea6a54 100644 --- a/arch/arm/mach-pxa/csb726.c +++ b/arch/arm/mach-pxa/csb726.c | |||
@@ -125,18 +125,9 @@ static unsigned long csb726_pin_config[] = { | |||
125 | GPIO118_I2C_SDA, | 125 | GPIO118_I2C_SDA, |
126 | }; | 126 | }; |
127 | 127 | ||
128 | static struct pxamci_platform_data csb726_mci_data; | ||
129 | |||
130 | static int csb726_mci_init(struct device *dev, | ||
131 | irq_handler_t detect, void *data) | ||
132 | { | ||
133 | csb726_mci_data.detect_delay = msecs_to_jiffies(500); | ||
134 | return 0; | ||
135 | } | ||
136 | |||
137 | static struct pxamci_platform_data csb726_mci = { | 128 | static struct pxamci_platform_data csb726_mci = { |
129 | .detect_delay_ms = 500, | ||
138 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 130 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
139 | .init = csb726_mci_init, | ||
140 | /* FIXME setpower */ | 131 | /* FIXME setpower */ |
141 | .gpio_card_detect = CSB726_GPIO_MMC_DETECT, | 132 | .gpio_card_detect = CSB726_GPIO_MMC_DETECT, |
142 | .gpio_card_ro = CSB726_GPIO_MMC_RO, | 133 | .gpio_card_ro = CSB726_GPIO_MMC_RO, |
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index aab04f33e49b..0517c17978f3 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -626,6 +626,7 @@ static int em_x270_mci_get_ro(struct device *dev) | |||
626 | } | 626 | } |
627 | 627 | ||
628 | static struct pxamci_platform_data em_x270_mci_platform_data = { | 628 | static struct pxamci_platform_data em_x270_mci_platform_data = { |
629 | .detect_delay_ms = 250, | ||
629 | .ocr_mask = MMC_VDD_20_21|MMC_VDD_21_22|MMC_VDD_22_23| | 630 | .ocr_mask = MMC_VDD_20_21|MMC_VDD_21_22|MMC_VDD_22_23| |
630 | MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27| | 631 | MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27| |
631 | MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30| | 632 | MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30| |
@@ -643,7 +644,6 @@ static void __init em_x270_init_mmc(void) | |||
643 | if (machine_is_em_x270()) | 644 | if (machine_is_em_x270()) |
644 | em_x270_mci_platform_data.get_ro = em_x270_mci_get_ro; | 645 | em_x270_mci_platform_data.get_ro = em_x270_mci_get_ro; |
645 | 646 | ||
646 | em_x270_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
647 | pxa_set_mci_info(&em_x270_mci_platform_data); | 647 | pxa_set_mci_info(&em_x270_mci_platform_data); |
648 | } | 648 | } |
649 | #else | 649 | #else |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index 3126a35aa002..baabb3ce088e 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <mach/reset.h> | 29 | #include <mach/reset.h> |
30 | #include <mach/gpio.h> | 30 | #include <mach/gpio.h> |
31 | #include <mach/pxa2xx-gpio.h> | ||
32 | 31 | ||
33 | #include "generic.h" | 32 | #include "generic.h" |
34 | 33 | ||
@@ -128,33 +127,3 @@ void __init pxa_map_io(void) | |||
128 | iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc)); | 127 | iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc)); |
129 | get_clk_frequency_khz(1); | 128 | get_clk_frequency_khz(1); |
130 | } | 129 | } |
131 | |||
132 | /* | ||
133 | * Configure pins for GPIO or other functions | ||
134 | */ | ||
135 | int pxa_gpio_mode(int gpio_mode) | ||
136 | { | ||
137 | unsigned long flags; | ||
138 | int gpio = gpio_mode & GPIO_MD_MASK_NR; | ||
139 | int fn = (gpio_mode & GPIO_MD_MASK_FN) >> 8; | ||
140 | int gafr; | ||
141 | |||
142 | if (gpio > pxa_last_gpio) | ||
143 | return -EINVAL; | ||
144 | |||
145 | local_irq_save(flags); | ||
146 | if (gpio_mode & GPIO_DFLT_LOW) | ||
147 | GPCR(gpio) = GPIO_bit(gpio); | ||
148 | else if (gpio_mode & GPIO_DFLT_HIGH) | ||
149 | GPSR(gpio) = GPIO_bit(gpio); | ||
150 | if (gpio_mode & GPIO_MD_MASK_DIR) | ||
151 | GPDR(gpio) |= GPIO_bit(gpio); | ||
152 | else | ||
153 | GPDR(gpio) &= ~GPIO_bit(gpio); | ||
154 | gafr = GAFR(gpio) & ~(0x3 << (((gpio) & 0xf)*2)); | ||
155 | GAFR(gpio) = gafr | (fn << (((gpio) & 0xf)*2)); | ||
156 | local_irq_restore(flags); | ||
157 | |||
158 | return 0; | ||
159 | } | ||
160 | EXPORT_SYMBOL(pxa_gpio_mode); | ||
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h index 811743c56147..5f2ba8d9015c 100644 --- a/arch/arm/mach-pxa/include/mach/colibri.h +++ b/arch/arm/mach-pxa/include/mach/colibri.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _COLIBRI_H_ | 2 | #define _COLIBRI_H_ |
3 | 3 | ||
4 | #include <net/ax88796.h> | 4 | #include <net/ax88796.h> |
5 | #include <mach/mfp.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * common settings for all modules | 8 | * common settings for all modules |
diff --git a/arch/arm/mach-pxa/include/mach/corgi.h b/arch/arm/mach-pxa/include/mach/corgi.h index 7239281788de..585970ef08ce 100644 --- a/arch/arm/mach-pxa/include/mach/corgi.h +++ b/arch/arm/mach-pxa/include/mach/corgi.h | |||
@@ -113,7 +113,6 @@ | |||
113 | * Shared data structures | 113 | * Shared data structures |
114 | */ | 114 | */ |
115 | extern struct platform_device corgiscoop_device; | 115 | extern struct platform_device corgiscoop_device; |
116 | extern struct platform_device corgissp_device; | ||
117 | 116 | ||
118 | #endif /* __ASM_ARCH_CORGI_H */ | 117 | #endif /* __ASM_ARCH_CORGI_H */ |
119 | 118 | ||
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h index 7515757d6911..3d8d8cb09685 100644 --- a/arch/arm/mach-pxa/include/mach/hardware.h +++ b/arch/arm/mach-pxa/include/mach/hardware.h | |||
@@ -202,7 +202,7 @@ | |||
202 | #define __cpu_is_pxa950(id) \ | 202 | #define __cpu_is_pxa950(id) \ |
203 | ({ \ | 203 | ({ \ |
204 | unsigned int _id = (id) >> 4 & 0xfff; \ | 204 | unsigned int _id = (id) >> 4 & 0xfff; \ |
205 | id == 0x697; \ | 205 | _id == 0x697; \ |
206 | }) | 206 | }) |
207 | #else | 207 | #else |
208 | #define __cpu_is_pxa950(id) (0) | 208 | #define __cpu_is_pxa950(id) (0) |
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h b/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h index 658b28ed129b..c54cef25895c 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h | |||
@@ -25,6 +25,8 @@ | |||
25 | #define MFP_DIR(x) (((x) >> 23) & 0x1) | 25 | #define MFP_DIR(x) (((x) >> 23) & 0x1) |
26 | 26 | ||
27 | #define MFP_LPM_CAN_WAKEUP (0x1 << 24) | 27 | #define MFP_LPM_CAN_WAKEUP (0x1 << 24) |
28 | #define MFP_LPM_KEEP_OUTPUT (0x1 << 25) | ||
29 | |||
28 | #define WAKEUP_ON_EDGE_RISE (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_RISE) | 30 | #define WAKEUP_ON_EDGE_RISE (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_RISE) |
29 | #define WAKEUP_ON_EDGE_FALL (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_FALL) | 31 | #define WAKEUP_ON_EDGE_FALL (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_FALL) |
30 | #define WAKEUP_ON_EDGE_BOTH (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_BOTH) | 32 | #define WAKEUP_ON_EDGE_BOTH (MFP_LPM_CAN_WAKEUP | MFP_LPM_EDGE_BOTH) |
diff --git a/arch/arm/mach-pxa/include/mach/mmc.h b/arch/arm/mach-pxa/include/mach/mmc.h index 02a69dc2ee63..9eb515bb799d 100644 --- a/arch/arm/mach-pxa/include/mach/mmc.h +++ b/arch/arm/mach-pxa/include/mach/mmc.h | |||
@@ -9,7 +9,7 @@ struct mmc_host; | |||
9 | 9 | ||
10 | struct pxamci_platform_data { | 10 | struct pxamci_platform_data { |
11 | unsigned int ocr_mask; /* available voltages */ | 11 | unsigned int ocr_mask; /* available voltages */ |
12 | unsigned long detect_delay; /* delay in jiffies before detecting cards after interrupt */ | 12 | unsigned long detect_delay_ms; /* delay in millisecond before detecting cards after interrupt */ |
13 | int (*init)(struct device *, irq_handler_t , void *); | 13 | int (*init)(struct device *, irq_handler_t , void *); |
14 | int (*get_ro)(struct device *); | 14 | int (*get_ro)(struct device *); |
15 | void (*setpower)(struct device *, unsigned int); | 15 | void (*setpower)(struct device *, unsigned int); |
diff --git a/arch/arm/mach-pxa/include/mach/pxa2xx-gpio.h b/arch/arm/mach-pxa/include/mach/pxa2xx-gpio.h deleted file mode 100644 index 1209c44aa6f1..000000000000 --- a/arch/arm/mach-pxa/include/mach/pxa2xx-gpio.h +++ /dev/null | |||
@@ -1,375 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_PXA2XX_GPIO_H | ||
2 | #define __ASM_ARCH_PXA2XX_GPIO_H | ||
3 | |||
4 | #warning Please use mfp-pxa2[57]x.h instead of pxa2xx-gpio.h | ||
5 | |||
6 | #include <mach/gpio.h> | ||
7 | |||
8 | /* GPIO alternate function assignments */ | ||
9 | |||
10 | #define GPIO1_RST 1 /* reset */ | ||
11 | #define GPIO6_MMCCLK 6 /* MMC Clock */ | ||
12 | #define GPIO7_48MHz 7 /* 48 MHz clock output */ | ||
13 | #define GPIO8_MMCCS0 8 /* MMC Chip Select 0 */ | ||
14 | #define GPIO9_MMCCS1 9 /* MMC Chip Select 1 */ | ||
15 | #define GPIO10_RTCCLK 10 /* real time clock (1 Hz) */ | ||
16 | #define GPIO11_3_6MHz 11 /* 3.6 MHz oscillator out */ | ||
17 | #define GPIO12_32KHz 12 /* 32 kHz out */ | ||
18 | #define GPIO12_CIF_DD_7 12 /* Camera data pin 7 */ | ||
19 | #define GPIO13_MBGNT 13 /* memory controller grant */ | ||
20 | #define GPIO14_MBREQ 14 /* alternate bus master request */ | ||
21 | #define GPIO15_nCS_1 15 /* chip select 1 */ | ||
22 | #define GPIO16_PWM0 16 /* PWM0 output */ | ||
23 | #define GPIO17_PWM1 17 /* PWM1 output */ | ||
24 | #define GPIO17_CIF_DD_6 17 /* Camera data pin 6 */ | ||
25 | #define GPIO18_RDY 18 /* Ext. Bus Ready */ | ||
26 | #define GPIO19_DREQ1 19 /* External DMA Request */ | ||
27 | #define GPIO20_DREQ0 20 /* External DMA Request */ | ||
28 | #define GPIO23_SCLK 23 /* SSP clock */ | ||
29 | #define GPIO23_CIF_MCLK 23 /* Camera Master Clock */ | ||
30 | #define GPIO24_SFRM 24 /* SSP Frame */ | ||
31 | #define GPIO24_CIF_FV 24 /* Camera frame start signal */ | ||
32 | #define GPIO25_STXD 25 /* SSP transmit */ | ||
33 | #define GPIO25_CIF_LV 25 /* Camera line start signal */ | ||
34 | #define GPIO26_SRXD 26 /* SSP receive */ | ||
35 | #define GPIO26_CIF_PCLK 26 /* Camera Pixel Clock */ | ||
36 | #define GPIO27_SEXTCLK 27 /* SSP ext_clk */ | ||
37 | #define GPIO27_CIF_DD_0 27 /* Camera data pin 0 */ | ||
38 | #define GPIO28_BITCLK 28 /* AC97/I2S bit_clk */ | ||
39 | #define GPIO29_SDATA_IN 29 /* AC97 Sdata_in0 / I2S Sdata_in */ | ||
40 | #define GPIO30_SDATA_OUT 30 /* AC97/I2S Sdata_out */ | ||
41 | #define GPIO31_SYNC 31 /* AC97/I2S sync */ | ||
42 | #define GPIO32_SDATA_IN1 32 /* AC97 Sdata_in1 */ | ||
43 | #define GPIO32_SYSCLK 32 /* I2S System Clock */ | ||
44 | #define GPIO32_MMCCLK 32 /* MMC Clock (PXA270) */ | ||
45 | #define GPIO33_nCS_5 33 /* chip select 5 */ | ||
46 | #define GPIO34_FFRXD 34 /* FFUART receive */ | ||
47 | #define GPIO34_MMCCS0 34 /* MMC Chip Select 0 */ | ||
48 | #define GPIO35_FFCTS 35 /* FFUART Clear to send */ | ||
49 | #define GPIO36_FFDCD 36 /* FFUART Data carrier detect */ | ||
50 | #define GPIO37_FFDSR 37 /* FFUART data set ready */ | ||
51 | #define GPIO38_FFRI 38 /* FFUART Ring Indicator */ | ||
52 | #define GPIO39_MMCCS1 39 /* MMC Chip Select 1 */ | ||
53 | #define GPIO39_FFTXD 39 /* FFUART transmit data */ | ||
54 | #define GPIO40_FFDTR 40 /* FFUART data terminal Ready */ | ||
55 | #define GPIO41_FFRTS 41 /* FFUART request to send */ | ||
56 | #define GPIO42_BTRXD 42 /* BTUART receive data */ | ||
57 | #define GPIO42_HWRXD 42 /* HWUART receive data */ | ||
58 | #define GPIO42_CIF_MCLK 42 /* Camera Master Clock */ | ||
59 | #define GPIO43_BTTXD 43 /* BTUART transmit data */ | ||
60 | #define GPIO43_HWTXD 43 /* HWUART transmit data */ | ||
61 | #define GPIO43_CIF_FV 43 /* Camera frame start signal */ | ||
62 | #define GPIO44_BTCTS 44 /* BTUART clear to send */ | ||
63 | #define GPIO44_HWCTS 44 /* HWUART clear to send */ | ||
64 | #define GPIO44_CIF_LV 44 /* Camera line start signal */ | ||
65 | #define GPIO45_BTRTS 45 /* BTUART request to send */ | ||
66 | #define GPIO45_HWRTS 45 /* HWUART request to send */ | ||
67 | #define GPIO45_AC97_SYSCLK 45 /* AC97 System Clock */ | ||
68 | #define GPIO45_CIF_PCLK 45 /* Camera Pixel Clock */ | ||
69 | #define GPIO46_ICPRXD 46 /* ICP receive data */ | ||
70 | #define GPIO46_STRXD 46 /* STD_UART receive data */ | ||
71 | #define GPIO47_ICPTXD 47 /* ICP transmit data */ | ||
72 | #define GPIO47_STTXD 47 /* STD_UART transmit data */ | ||
73 | #define GPIO47_CIF_DD_0 47 /* Camera data pin 0 */ | ||
74 | #define GPIO48_nPOE 48 /* Output Enable for Card Space */ | ||
75 | #define GPIO48_CIF_DD_5 48 /* Camera data pin 5 */ | ||
76 | #define GPIO49_nPWE 49 /* Write Enable for Card Space */ | ||
77 | #define GPIO50_nPIOR 50 /* I/O Read for Card Space */ | ||
78 | #define GPIO50_CIF_DD_3 50 /* Camera data pin 3 */ | ||
79 | #define GPIO51_nPIOW 51 /* I/O Write for Card Space */ | ||
80 | #define GPIO51_CIF_DD_2 51 /* Camera data pin 2 */ | ||
81 | #define GPIO52_nPCE_1 52 /* Card Enable for Card Space */ | ||
82 | #define GPIO52_CIF_DD_4 52 /* Camera data pin 4 */ | ||
83 | #define GPIO53_nPCE_2 53 /* Card Enable for Card Space */ | ||
84 | #define GPIO53_MMCCLK 53 /* MMC Clock */ | ||
85 | #define GPIO53_CIF_MCLK 53 /* Camera Master Clock */ | ||
86 | #define GPIO54_MMCCLK 54 /* MMC Clock */ | ||
87 | #define GPIO54_pSKTSEL 54 /* Socket Select for Card Space */ | ||
88 | #define GPIO54_nPCE_2 54 /* Card Enable for Card Space (PXA27x) */ | ||
89 | #define GPIO54_CIF_PCLK 54 /* Camera Pixel Clock */ | ||
90 | #define GPIO55_nPREG 55 /* Card Address bit 26 */ | ||
91 | #define GPIO55_CIF_DD_1 55 /* Camera data pin 1 */ | ||
92 | #define GPIO56_nPWAIT 56 /* Wait signal for Card Space */ | ||
93 | #define GPIO57_nIOIS16 57 /* Bus Width select for I/O Card Space */ | ||
94 | #define GPIO58_LDD_0 58 /* LCD data pin 0 */ | ||
95 | #define GPIO59_LDD_1 59 /* LCD data pin 1 */ | ||
96 | #define GPIO60_LDD_2 60 /* LCD data pin 2 */ | ||
97 | #define GPIO61_LDD_3 61 /* LCD data pin 3 */ | ||
98 | #define GPIO62_LDD_4 62 /* LCD data pin 4 */ | ||
99 | #define GPIO63_LDD_5 63 /* LCD data pin 5 */ | ||
100 | #define GPIO64_LDD_6 64 /* LCD data pin 6 */ | ||
101 | #define GPIO65_LDD_7 65 /* LCD data pin 7 */ | ||
102 | #define GPIO66_LDD_8 66 /* LCD data pin 8 */ | ||
103 | #define GPIO66_MBREQ 66 /* alternate bus master req */ | ||
104 | #define GPIO67_LDD_9 67 /* LCD data pin 9 */ | ||
105 | #define GPIO67_MMCCS0 67 /* MMC Chip Select 0 */ | ||
106 | #define GPIO68_LDD_10 68 /* LCD data pin 10 */ | ||
107 | #define GPIO68_MMCCS1 68 /* MMC Chip Select 1 */ | ||
108 | #define GPIO69_LDD_11 69 /* LCD data pin 11 */ | ||
109 | #define GPIO69_MMCCLK 69 /* MMC_CLK */ | ||
110 | #define GPIO70_LDD_12 70 /* LCD data pin 12 */ | ||
111 | #define GPIO70_RTCCLK 70 /* Real Time clock (1 Hz) */ | ||
112 | #define GPIO71_LDD_13 71 /* LCD data pin 13 */ | ||
113 | #define GPIO71_3_6MHz 71 /* 3.6 MHz Oscillator clock */ | ||
114 | #define GPIO72_LDD_14 72 /* LCD data pin 14 */ | ||
115 | #define GPIO72_32kHz 72 /* 32 kHz clock */ | ||
116 | #define GPIO73_LDD_15 73 /* LCD data pin 15 */ | ||
117 | #define GPIO73_MBGNT 73 /* Memory controller grant */ | ||
118 | #define GPIO74_LCD_FCLK 74 /* LCD Frame clock */ | ||
119 | #define GPIO75_LCD_LCLK 75 /* LCD line clock */ | ||
120 | #define GPIO76_LCD_PCLK 76 /* LCD Pixel clock */ | ||
121 | #define GPIO77_LCD_ACBIAS 77 /* LCD AC Bias */ | ||
122 | #define GPIO78_nCS_2 78 /* chip select 2 */ | ||
123 | #define GPIO79_nCS_3 79 /* chip select 3 */ | ||
124 | #define GPIO80_nCS_4 80 /* chip select 4 */ | ||
125 | #define GPIO81_NSCLK 81 /* NSSP clock */ | ||
126 | #define GPIO81_CIF_DD_0 81 /* Camera data pin 0 */ | ||
127 | #define GPIO82_NSFRM 82 /* NSSP Frame */ | ||
128 | #define GPIO82_CIF_DD_5 82 /* Camera data pin 5 */ | ||
129 | #define GPIO83_NSTXD 83 /* NSSP transmit */ | ||
130 | #define GPIO83_CIF_DD_4 83 /* Camera data pin 4 */ | ||
131 | #define GPIO84_NSRXD 84 /* NSSP receive */ | ||
132 | #define GPIO84_CIF_FV 84 /* Camera frame start signal */ | ||
133 | #define GPIO85_nPCE_1 85 /* Card Enable for Card Space (PXA27x) */ | ||
134 | #define GPIO85_CIF_LV 85 /* Camera line start signal */ | ||
135 | #define GPIO90_CIF_DD_4 90 /* Camera data pin 4 */ | ||
136 | #define GPIO91_CIF_DD_5 91 /* Camera data pin 5 */ | ||
137 | #define GPIO92_MMCDAT0 92 /* MMC DAT0 (PXA27x) */ | ||
138 | #define GPIO93_CIF_DD_6 93 /* Camera data pin 6 */ | ||
139 | #define GPIO94_CIF_DD_5 94 /* Camera data pin 5 */ | ||
140 | #define GPIO95_CIF_DD_4 95 /* Camera data pin 4 */ | ||
141 | #define GPIO96_FFRXD 96 /* FFUART recieve */ | ||
142 | #define GPIO98_FFRTS 98 /* FFUART request to send */ | ||
143 | #define GPIO98_CIF_DD_0 98 /* Camera data pin 0 */ | ||
144 | #define GPIO99_FFTXD 99 /* FFUART transmit data */ | ||
145 | #define GPIO100_FFCTS 100 /* FFUART Clear to send */ | ||
146 | #define GPIO102_nPCE_1 102 /* PCMCIA (PXA27x) */ | ||
147 | #define GPIO103_CIF_DD_3 103 /* Camera data pin 3 */ | ||
148 | #define GPIO104_CIF_DD_2 104 /* Camera data pin 2 */ | ||
149 | #define GPIO105_CIF_DD_1 105 /* Camera data pin 1 */ | ||
150 | #define GPIO106_CIF_DD_9 106 /* Camera data pin 9 */ | ||
151 | #define GPIO107_CIF_DD_8 107 /* Camera data pin 8 */ | ||
152 | #define GPIO108_CIF_DD_7 108 /* Camera data pin 7 */ | ||
153 | #define GPIO109_MMCDAT1 109 /* MMC DAT1 (PXA27x) */ | ||
154 | #define GPIO110_MMCDAT2 110 /* MMC DAT2 (PXA27x) */ | ||
155 | #define GPIO110_MMCCS0 110 /* MMC Chip Select 0 (PXA27x) */ | ||
156 | #define GPIO111_MMCDAT3 111 /* MMC DAT3 (PXA27x) */ | ||
157 | #define GPIO111_MMCCS1 111 /* MMC Chip Select 1 (PXA27x) */ | ||
158 | #define GPIO112_MMCCMD 112 /* MMC CMD (PXA27x) */ | ||
159 | #define GPIO113_I2S_SYSCLK 113 /* I2S System Clock (PXA27x) */ | ||
160 | #define GPIO113_AC97_RESET_N 113 /* AC97 NRESET on (PXA27x) */ | ||
161 | #define GPIO114_CIF_DD_1 114 /* Camera data pin 1 */ | ||
162 | #define GPIO115_CIF_DD_3 115 /* Camera data pin 3 */ | ||
163 | #define GPIO116_CIF_DD_2 116 /* Camera data pin 2 */ | ||
164 | |||
165 | /* GPIO alternate function mode & direction */ | ||
166 | |||
167 | #define GPIO_IN 0x000 | ||
168 | #define GPIO_OUT 0x080 | ||
169 | #define GPIO_ALT_FN_1_IN 0x100 | ||
170 | #define GPIO_ALT_FN_1_OUT 0x180 | ||
171 | #define GPIO_ALT_FN_2_IN 0x200 | ||
172 | #define GPIO_ALT_FN_2_OUT 0x280 | ||
173 | #define GPIO_ALT_FN_3_IN 0x300 | ||
174 | #define GPIO_ALT_FN_3_OUT 0x380 | ||
175 | #define GPIO_MD_MASK_NR 0x07f | ||
176 | #define GPIO_MD_MASK_DIR 0x080 | ||
177 | #define GPIO_MD_MASK_FN 0x300 | ||
178 | #define GPIO_DFLT_LOW 0x400 | ||
179 | #define GPIO_DFLT_HIGH 0x800 | ||
180 | |||
181 | #define GPIO1_RTS_MD ( 1 | GPIO_ALT_FN_1_IN) | ||
182 | #define GPIO6_MMCCLK_MD ( 6 | GPIO_ALT_FN_1_OUT) | ||
183 | #define GPIO7_48MHz_MD ( 7 | GPIO_ALT_FN_1_OUT) | ||
184 | #define GPIO8_MMCCS0_MD ( 8 | GPIO_ALT_FN_1_OUT) | ||
185 | #define GPIO9_MMCCS1_MD ( 9 | GPIO_ALT_FN_1_OUT) | ||
186 | #define GPIO10_RTCCLK_MD (10 | GPIO_ALT_FN_1_OUT) | ||
187 | #define GPIO11_3_6MHz_MD (11 | GPIO_ALT_FN_1_OUT) | ||
188 | #define GPIO12_32KHz_MD (12 | GPIO_ALT_FN_1_OUT) | ||
189 | #define GPIO12_CIF_DD_7_MD (12 | GPIO_ALT_FN_2_IN) | ||
190 | #define GPIO13_MBGNT_MD (13 | GPIO_ALT_FN_2_OUT) | ||
191 | #define GPIO14_MBREQ_MD (14 | GPIO_ALT_FN_1_IN) | ||
192 | #define GPIO15_nCS_1_MD (15 | GPIO_ALT_FN_2_OUT) | ||
193 | #define GPIO16_PWM0_MD (16 | GPIO_ALT_FN_2_OUT) | ||
194 | #define GPIO17_PWM1_MD (17 | GPIO_ALT_FN_2_OUT) | ||
195 | #define GPIO17_CIF_DD_6_MD (17 | GPIO_ALT_FN_2_IN) | ||
196 | #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN) | ||
197 | #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN) | ||
198 | #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN) | ||
199 | #define GPIO23_CIF_MCLK_MD (23 | GPIO_ALT_FN_1_OUT) | ||
200 | #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT) | ||
201 | #define GPIO24_CIF_FV_MD (24 | GPIO_ALT_FN_1_OUT) | ||
202 | #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT) | ||
203 | #define GPIO25_CIF_LV_MD (25 | GPIO_ALT_FN_1_OUT) | ||
204 | #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT) | ||
205 | #define GPIO26_SRXD_MD (26 | GPIO_ALT_FN_1_IN) | ||
206 | #define GPIO26_CIF_PCLK_MD (26 | GPIO_ALT_FN_2_IN) | ||
207 | #define GPIO27_SEXTCLK_MD (27 | GPIO_ALT_FN_1_IN) | ||
208 | #define GPIO27_CIF_DD_0_MD (27 | GPIO_ALT_FN_3_IN) | ||
209 | #define GPIO28_BITCLK_AC97_MD (28 | GPIO_ALT_FN_1_IN) | ||
210 | #define GPIO28_BITCLK_IN_I2S_MD (28 | GPIO_ALT_FN_2_IN) | ||
211 | #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT) | ||
212 | #define GPIO29_SDATA_IN_AC97_MD (29 | GPIO_ALT_FN_1_IN) | ||
213 | #define GPIO29_SDATA_IN_I2S_MD (29 | GPIO_ALT_FN_2_IN) | ||
214 | #define GPIO30_SDATA_OUT_AC97_MD (30 | GPIO_ALT_FN_2_OUT) | ||
215 | #define GPIO30_SDATA_OUT_I2S_MD (30 | GPIO_ALT_FN_1_OUT) | ||
216 | #define GPIO31_SYNC_I2S_MD (31 | GPIO_ALT_FN_1_OUT) | ||
217 | #define GPIO31_SYNC_AC97_MD (31 | GPIO_ALT_FN_2_OUT) | ||
218 | #define GPIO32_SDATA_IN1_AC97_MD (32 | GPIO_ALT_FN_1_IN) | ||
219 | #define GPIO32_SYSCLK_I2S_MD (32 | GPIO_ALT_FN_1_OUT) | ||
220 | #define GPIO32_MMCCLK_MD (32 | GPIO_ALT_FN_2_OUT) | ||
221 | #define GPIO33_nCS_5_MD (33 | GPIO_ALT_FN_2_OUT) | ||
222 | #define GPIO34_FFRXD_MD (34 | GPIO_ALT_FN_1_IN) | ||
223 | #define GPIO34_MMCCS0_MD (34 | GPIO_ALT_FN_2_OUT) | ||
224 | #define GPIO35_FFCTS_MD (35 | GPIO_ALT_FN_1_IN) | ||
225 | #define GPIO35_KP_MKOUT6_MD (35 | GPIO_ALT_FN_2_OUT) | ||
226 | #define GPIO36_FFDCD_MD (36 | GPIO_ALT_FN_1_IN) | ||
227 | #define GPIO37_FFDSR_MD (37 | GPIO_ALT_FN_1_IN) | ||
228 | #define GPIO38_FFRI_MD (38 | GPIO_ALT_FN_1_IN) | ||
229 | #define GPIO39_MMCCS1_MD (39 | GPIO_ALT_FN_1_OUT) | ||
230 | #define GPIO39_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT) | ||
231 | #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT) | ||
232 | #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT) | ||
233 | #define GPIO41_KP_MKOUT7_MD (41 | GPIO_ALT_FN_1_OUT) | ||
234 | #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN) | ||
235 | #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN) | ||
236 | #define GPIO42_CIF_MCLK_MD (42 | GPIO_ALT_FN_3_OUT) | ||
237 | #define GPIO43_BTTXD_MD (43 | GPIO_ALT_FN_2_OUT) | ||
238 | #define GPIO43_HWTXD_MD (43 | GPIO_ALT_FN_3_OUT) | ||
239 | #define GPIO43_CIF_FV_MD (43 | GPIO_ALT_FN_3_OUT) | ||
240 | #define GPIO44_BTCTS_MD (44 | GPIO_ALT_FN_1_IN) | ||
241 | #define GPIO44_HWCTS_MD (44 | GPIO_ALT_FN_3_IN) | ||
242 | #define GPIO44_CIF_LV_MD (44 | GPIO_ALT_FN_3_OUT) | ||
243 | #define GPIO45_CIF_PCLK_MD (45 | GPIO_ALT_FN_3_IN) | ||
244 | #define GPIO45_BTRTS_MD (45 | GPIO_ALT_FN_2_OUT) | ||
245 | #define GPIO45_HWRTS_MD (45 | GPIO_ALT_FN_3_OUT) | ||
246 | #define GPIO45_SYSCLK_AC97_MD (45 | GPIO_ALT_FN_1_OUT) | ||
247 | #define GPIO46_ICPRXD_MD (46 | GPIO_ALT_FN_1_IN) | ||
248 | #define GPIO46_STRXD_MD (46 | GPIO_ALT_FN_2_IN) | ||
249 | #define GPIO47_CIF_DD_0_MD (47 | GPIO_ALT_FN_1_IN) | ||
250 | #define GPIO47_ICPTXD_MD (47 | GPIO_ALT_FN_2_OUT) | ||
251 | #define GPIO47_STTXD_MD (47 | GPIO_ALT_FN_1_OUT) | ||
252 | #define GPIO48_CIF_DD_5_MD (48 | GPIO_ALT_FN_1_IN) | ||
253 | #define GPIO48_nPOE_MD (48 | GPIO_ALT_FN_2_OUT) | ||
254 | #define GPIO48_HWTXD_MD (48 | GPIO_ALT_FN_1_OUT) | ||
255 | #define GPIO48_nPOE_MD (48 | GPIO_ALT_FN_2_OUT) | ||
256 | #define GPIO49_HWRXD_MD (49 | GPIO_ALT_FN_1_IN) | ||
257 | #define GPIO49_nPWE_MD (49 | GPIO_ALT_FN_2_OUT) | ||
258 | #define GPIO50_CIF_DD_3_MD (50 | GPIO_ALT_FN_1_IN) | ||
259 | #define GPIO50_nPIOR_MD (50 | GPIO_ALT_FN_2_OUT) | ||
260 | #define GPIO50_HWCTS_MD (50 | GPIO_ALT_FN_1_IN) | ||
261 | #define GPIO50_CIF_DD_3_MD (50 | GPIO_ALT_FN_1_IN) | ||
262 | #define GPIO51_CIF_DD_2_MD (51 | GPIO_ALT_FN_1_IN) | ||
263 | #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT) | ||
264 | #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT) | ||
265 | #define GPIO51_CIF_DD_2_MD (51 | GPIO_ALT_FN_1_IN) | ||
266 | #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT) | ||
267 | #define GPIO52_CIF_DD_4_MD (52 | GPIO_ALT_FN_1_IN) | ||
268 | #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT) | ||
269 | #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT) | ||
270 | #define GPIO53_CIF_MCLK_MD (53 | GPIO_ALT_FN_2_OUT) | ||
271 | #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT) | ||
272 | #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT) | ||
273 | #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT) | ||
274 | #define GPIO54_CIF_PCLK_MD (54 | GPIO_ALT_FN_3_IN) | ||
275 | #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT) | ||
276 | #define GPIO55_CIF_DD_1_MD (55 | GPIO_ALT_FN_1_IN) | ||
277 | #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN) | ||
278 | #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN) | ||
279 | #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT) | ||
280 | #define GPIO59_LDD_1_MD (59 | GPIO_ALT_FN_2_OUT) | ||
281 | #define GPIO60_LDD_2_MD (60 | GPIO_ALT_FN_2_OUT) | ||
282 | #define GPIO61_LDD_3_MD (61 | GPIO_ALT_FN_2_OUT) | ||
283 | #define GPIO62_LDD_4_MD (62 | GPIO_ALT_FN_2_OUT) | ||
284 | #define GPIO63_LDD_5_MD (63 | GPIO_ALT_FN_2_OUT) | ||
285 | #define GPIO64_LDD_6_MD (64 | GPIO_ALT_FN_2_OUT) | ||
286 | #define GPIO65_LDD_7_MD (65 | GPIO_ALT_FN_2_OUT) | ||
287 | #define GPIO66_LDD_8_MD (66 | GPIO_ALT_FN_2_OUT) | ||
288 | #define GPIO66_MBREQ_MD (66 | GPIO_ALT_FN_1_IN) | ||
289 | #define GPIO67_LDD_9_MD (67 | GPIO_ALT_FN_2_OUT) | ||
290 | #define GPIO67_MMCCS0_MD (67 | GPIO_ALT_FN_1_OUT) | ||
291 | #define GPIO68_LDD_10_MD (68 | GPIO_ALT_FN_2_OUT) | ||
292 | #define GPIO68_MMCCS1_MD (68 | GPIO_ALT_FN_1_OUT) | ||
293 | #define GPIO69_LDD_11_MD (69 | GPIO_ALT_FN_2_OUT) | ||
294 | #define GPIO69_MMCCLK_MD (69 | GPIO_ALT_FN_1_OUT) | ||
295 | #define GPIO70_LDD_12_MD (70 | GPIO_ALT_FN_2_OUT) | ||
296 | #define GPIO70_RTCCLK_MD (70 | GPIO_ALT_FN_1_OUT) | ||
297 | #define GPIO71_LDD_13_MD (71 | GPIO_ALT_FN_2_OUT) | ||
298 | #define GPIO71_3_6MHz_MD (71 | GPIO_ALT_FN_1_OUT) | ||
299 | #define GPIO72_LDD_14_MD (72 | GPIO_ALT_FN_2_OUT) | ||
300 | #define GPIO72_32kHz_MD (72 | GPIO_ALT_FN_1_OUT) | ||
301 | #define GPIO73_LDD_15_MD (73 | GPIO_ALT_FN_2_OUT) | ||
302 | #define GPIO73_MBGNT_MD (73 | GPIO_ALT_FN_1_OUT) | ||
303 | #define GPIO74_LCD_FCLK_MD (74 | GPIO_ALT_FN_2_OUT) | ||
304 | #define GPIO75_LCD_LCLK_MD (75 | GPIO_ALT_FN_2_OUT) | ||
305 | #define GPIO76_LCD_PCLK_MD (76 | GPIO_ALT_FN_2_OUT) | ||
306 | #define GPIO77_LCD_ACBIAS_MD (77 | GPIO_ALT_FN_2_OUT) | ||
307 | #define GPIO78_nCS_2_MD (78 | GPIO_ALT_FN_2_OUT) | ||
308 | #define GPIO78_nPCE_2_MD (78 | GPIO_ALT_FN_1_OUT) | ||
309 | #define GPIO79_nCS_3_MD (79 | GPIO_ALT_FN_2_OUT) | ||
310 | #define GPIO79_pSKTSEL_MD (79 | GPIO_ALT_FN_1_OUT) | ||
311 | #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT) | ||
312 | #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT) | ||
313 | #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN) | ||
314 | #define GPIO81_CIF_DD_0_MD (81 | GPIO_ALT_FN_2_IN) | ||
315 | #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT) | ||
316 | #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN) | ||
317 | #define GPIO82_CIF_DD_5_MD (82 | GPIO_ALT_FN_3_IN) | ||
318 | #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT) | ||
319 | #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN) | ||
320 | #define GPIO83_CIF_DD_4_MD (83 | GPIO_ALT_FN_3_IN) | ||
321 | #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT) | ||
322 | #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN) | ||
323 | #define GPIO84_CIF_FV_MD (84 | GPIO_ALT_FN_3_IN) | ||
324 | #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT) | ||
325 | #define GPIO85_CIF_LV_MD (85 | GPIO_ALT_FN_3_IN) | ||
326 | #define GPIO86_nPCE_1_MD (86 | GPIO_ALT_FN_1_OUT) | ||
327 | #define GPIO88_USBH1_PWR_MD (88 | GPIO_ALT_FN_1_IN) | ||
328 | #define GPIO89_USBH1_PEN_MD (89 | GPIO_ALT_FN_2_OUT) | ||
329 | #define GPIO90_CIF_DD_4_MD (90 | GPIO_ALT_FN_3_IN) | ||
330 | #define GPIO91_CIF_DD_5_MD (91 | GPIO_ALT_FN_3_IN) | ||
331 | #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT) | ||
332 | #define GPIO93_CIF_DD_6_MD (93 | GPIO_ALT_FN_2_IN) | ||
333 | #define GPIO94_CIF_DD_5_MD (94 | GPIO_ALT_FN_2_IN) | ||
334 | #define GPIO95_CIF_DD_4_MD (95 | GPIO_ALT_FN_2_IN) | ||
335 | #define GPIO95_KP_MKIN6_MD (95 | GPIO_ALT_FN_3_IN) | ||
336 | #define GPIO96_KP_DKIN3_MD (96 | GPIO_ALT_FN_1_IN) | ||
337 | #define GPIO96_FFRXD_MD (96 | GPIO_ALT_FN_3_IN) | ||
338 | #define GPIO97_KP_MKIN3_MD (97 | GPIO_ALT_FN_3_IN) | ||
339 | #define GPIO98_CIF_DD_0_MD (98 | GPIO_ALT_FN_2_IN) | ||
340 | #define GPIO98_FFRTS_MD (98 | GPIO_ALT_FN_3_OUT) | ||
341 | #define GPIO99_FFTXD_MD (99 | GPIO_ALT_FN_3_OUT) | ||
342 | #define GPIO100_KP_MKIN0_MD (100 | GPIO_ALT_FN_1_IN) | ||
343 | #define GPIO101_KP_MKIN1_MD (101 | GPIO_ALT_FN_1_IN) | ||
344 | #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT) | ||
345 | #define GPIO102_KP_MKIN2_MD (102 | GPIO_ALT_FN_1_IN) | ||
346 | #define GPIO103_CIF_DD_3_MD (103 | GPIO_ALT_FN_1_IN) | ||
347 | #define GPIO103_KP_MKOUT0_MD (103 | GPIO_ALT_FN_2_OUT) | ||
348 | #define GPIO104_CIF_DD_2_MD (104 | GPIO_ALT_FN_1_IN) | ||
349 | #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT) | ||
350 | #define GPIO104_KP_MKOUT1_MD (104 | GPIO_ALT_FN_2_OUT) | ||
351 | #define GPIO105_CIF_DD_1_MD (105 | GPIO_ALT_FN_1_IN) | ||
352 | #define GPIO105_KP_MKOUT2_MD (105 | GPIO_ALT_FN_2_OUT) | ||
353 | #define GPIO106_CIF_DD_9_MD (106 | GPIO_ALT_FN_1_IN) | ||
354 | #define GPIO106_KP_MKOUT3_MD (106 | GPIO_ALT_FN_2_OUT) | ||
355 | #define GPIO107_CIF_DD_8_MD (107 | GPIO_ALT_FN_1_IN) | ||
356 | #define GPIO107_KP_MKOUT4_MD (107 | GPIO_ALT_FN_2_OUT) | ||
357 | #define GPIO108_CIF_DD_7_MD (108 | GPIO_ALT_FN_1_IN) | ||
358 | #define GPIO108_KP_MKOUT5_MD (108 | GPIO_ALT_FN_2_OUT) | ||
359 | #define GPIO109_MMCDAT1_MD (109 | GPIO_ALT_FN_1_OUT) | ||
360 | #define GPIO110_MMCDAT2_MD (110 | GPIO_ALT_FN_1_OUT) | ||
361 | #define GPIO110_MMCCS0_MD (110 | GPIO_ALT_FN_1_OUT) | ||
362 | #define GPIO111_MMCDAT3_MD (111 | GPIO_ALT_FN_1_OUT) | ||
363 | #define GPIO110_MMCCS1_MD (111 | GPIO_ALT_FN_1_OUT) | ||
364 | #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT) | ||
365 | #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT) | ||
366 | #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT) | ||
367 | #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_IN) | ||
368 | #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN) | ||
369 | |||
370 | /* | ||
371 | * Handy routine to set GPIO alternate functions | ||
372 | */ | ||
373 | extern int pxa_gpio_mode( int gpio_mode ); | ||
374 | |||
375 | #endif /* __ASM_ARCH_PXA2XX_GPIO_H */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/regs-u2d.h b/arch/arm/mach-pxa/include/mach/regs-u2d.h index 44b0b20b69a4..c15c0c57de08 100644 --- a/arch/arm/mach-pxa/include/mach/regs-u2d.h +++ b/arch/arm/mach-pxa/include/mach/regs-u2d.h | |||
@@ -166,7 +166,8 @@ | |||
166 | #define U2DMACSR_BUSERRTYPE (7 << 10) /* PX Bus Error Type */ | 166 | #define U2DMACSR_BUSERRTYPE (7 << 10) /* PX Bus Error Type */ |
167 | #define U2DMACSR_EORINTR (1 << 9) /* End Of Receive */ | 167 | #define U2DMACSR_EORINTR (1 << 9) /* End Of Receive */ |
168 | #define U2DMACSR_REQPEND (1 << 8) /* Request Pending */ | 168 | #define U2DMACSR_REQPEND (1 << 8) /* Request Pending */ |
169 | #define U2DMACSR_RASINTR (1 << 4) /* Request After Channel Stopped (read / write 1 clear) */#define U2DMACSR_STOPINTR (1 << 3) /* Stop Interrupt (read only) */ | 169 | #define U2DMACSR_RASINTR (1 << 4) /* Request After Channel Stopped (read / write 1 clear) */ |
170 | #define U2DMACSR_STOPINTR (1 << 3) /* Stop Interrupt (read only) */ | ||
170 | #define U2DMACSR_ENDINTR (1 << 2) /* End Interrupt (read / write 1 clear) */ | 171 | #define U2DMACSR_ENDINTR (1 << 2) /* End Interrupt (read / write 1 clear) */ |
171 | #define U2DMACSR_STARTINTR (1 << 1) /* Start Interrupt (read / write 1 clear) */ | 172 | #define U2DMACSR_STARTINTR (1 << 1) /* Start Interrupt (read / write 1 clear) */ |
172 | #define U2DMACSR_BUSERRINTR (1 << 0) /* Bus Error Interrupt (read / write 1 clear) */ | 173 | #define U2DMACSR_BUSERRINTR (1 << 0) /* Bus Error Interrupt (read / write 1 clear) */ |
diff --git a/arch/arm/mach-pxa/include/mach/ssp.h b/arch/arm/mach-pxa/include/mach/ssp.h deleted file mode 100644 index be1be5b6db51..000000000000 --- a/arch/arm/mach-pxa/include/mach/ssp.h +++ /dev/null | |||
@@ -1,109 +0,0 @@ | |||
1 | /* | ||
2 | * ssp.h | ||
3 | * | ||
4 | * Copyright (C) 2003 Russell King, All Rights Reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This driver supports the following PXA CPU/SSP ports:- | ||
11 | * | ||
12 | * PXA250 SSP | ||
13 | * PXA255 SSP, NSSP | ||
14 | * PXA26x SSP, NSSP, ASSP | ||
15 | * PXA27x SSP1, SSP2, SSP3 | ||
16 | * PXA3xx SSP1, SSP2, SSP3, SSP4 | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_SSP_H | ||
20 | #define __ASM_ARCH_SSP_H | ||
21 | |||
22 | #include <linux/list.h> | ||
23 | #include <linux/io.h> | ||
24 | |||
25 | enum pxa_ssp_type { | ||
26 | SSP_UNDEFINED = 0, | ||
27 | PXA25x_SSP, /* pxa 210, 250, 255, 26x */ | ||
28 | PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */ | ||
29 | PXA27x_SSP, | ||
30 | }; | ||
31 | |||
32 | struct ssp_device { | ||
33 | struct platform_device *pdev; | ||
34 | struct list_head node; | ||
35 | |||
36 | struct clk *clk; | ||
37 | void __iomem *mmio_base; | ||
38 | unsigned long phys_base; | ||
39 | |||
40 | const char *label; | ||
41 | int port_id; | ||
42 | int type; | ||
43 | int use_count; | ||
44 | int irq; | ||
45 | int drcmr_rx; | ||
46 | int drcmr_tx; | ||
47 | }; | ||
48 | |||
49 | #ifdef CONFIG_PXA_SSP_LEGACY | ||
50 | /* | ||
51 | * SSP initialisation flags | ||
52 | */ | ||
53 | #define SSP_NO_IRQ 0x1 /* don't register an irq handler in SSP driver */ | ||
54 | |||
55 | struct ssp_state { | ||
56 | u32 cr0; | ||
57 | u32 cr1; | ||
58 | u32 to; | ||
59 | u32 psp; | ||
60 | }; | ||
61 | |||
62 | struct ssp_dev { | ||
63 | struct ssp_device *ssp; | ||
64 | u32 port; | ||
65 | u32 mode; | ||
66 | u32 flags; | ||
67 | u32 psp_flags; | ||
68 | u32 speed; | ||
69 | int irq; | ||
70 | }; | ||
71 | |||
72 | int ssp_write_word(struct ssp_dev *dev, u32 data); | ||
73 | int ssp_read_word(struct ssp_dev *dev, u32 *data); | ||
74 | int ssp_flush(struct ssp_dev *dev); | ||
75 | void ssp_enable(struct ssp_dev *dev); | ||
76 | void ssp_disable(struct ssp_dev *dev); | ||
77 | void ssp_save_state(struct ssp_dev *dev, struct ssp_state *ssp); | ||
78 | void ssp_restore_state(struct ssp_dev *dev, struct ssp_state *ssp); | ||
79 | int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags); | ||
80 | int ssp_config(struct ssp_dev *dev, u32 mode, u32 flags, u32 psp_flags, u32 speed); | ||
81 | void ssp_exit(struct ssp_dev *dev); | ||
82 | #endif /* CONFIG_PXA_SSP_LEGACY */ | ||
83 | |||
84 | /** | ||
85 | * ssp_write_reg - Write to a SSP register | ||
86 | * | ||
87 | * @dev: SSP device to access | ||
88 | * @reg: Register to write to | ||
89 | * @val: Value to be written. | ||
90 | */ | ||
91 | static inline void ssp_write_reg(struct ssp_device *dev, u32 reg, u32 val) | ||
92 | { | ||
93 | __raw_writel(val, dev->mmio_base + reg); | ||
94 | } | ||
95 | |||
96 | /** | ||
97 | * ssp_read_reg - Read from a SSP register | ||
98 | * | ||
99 | * @dev: SSP device to access | ||
100 | * @reg: Register to read from | ||
101 | */ | ||
102 | static inline u32 ssp_read_reg(struct ssp_device *dev, u32 reg) | ||
103 | { | ||
104 | return __raw_readl(dev->mmio_base + reg); | ||
105 | } | ||
106 | |||
107 | struct ssp_device *ssp_request(int port, const char *label); | ||
108 | void ssp_free(struct ssp_device *); | ||
109 | #endif /* __ASM_ARCH_SSP_H */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/tosa.h b/arch/arm/mach-pxa/include/mach/tosa.h index 4df2d38507dc..1bbd1f2e4beb 100644 --- a/arch/arm/mach-pxa/include/mach/tosa.h +++ b/arch/arm/mach-pxa/include/mach/tosa.h | |||
@@ -167,7 +167,7 @@ | |||
167 | 167 | ||
168 | #define TOSA_KEY_SYNC KEY_102ND /* ??? */ | 168 | #define TOSA_KEY_SYNC KEY_102ND /* ??? */ |
169 | 169 | ||
170 | #ifndef CONFIG_KEYBOARD_TOSA_USE_EXT_KEYCODES | 170 | #ifndef CONFIG_TOSA_USE_EXT_KEYCODES |
171 | #define TOSA_KEY_RECORD KEY_YEN | 171 | #define TOSA_KEY_RECORD KEY_YEN |
172 | #define TOSA_KEY_ADDRESSBOOK KEY_KATAKANA | 172 | #define TOSA_KEY_ADDRESSBOOK KEY_KATAKANA |
173 | #define TOSA_KEY_CANCEL KEY_ESC | 173 | #define TOSA_KEY_CANCEL KEY_ESC |
diff --git a/arch/arm/mach-pxa/include/mach/vpac270.h b/arch/arm/mach-pxa/include/mach/vpac270.h new file mode 100644 index 000000000000..7bfa3dd0fd5e --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/vpac270.h | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * GPIOs and interrupts for Voipac PXA270 | ||
3 | * | ||
4 | * Copyright (C) 2010 | ||
5 | * Marek Vasut <marek.vasut@gmail.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #ifndef _INCLUDE_VPAC270_H_ | ||
14 | #define _INCLUDE_VPAC270_H_ | ||
15 | |||
16 | #define GPIO1_VPAC270_USER_BTN 1 | ||
17 | |||
18 | #define GPIO15_VPAC270_LED_ORANGE 15 | ||
19 | |||
20 | #define GPIO81_VPAC270_BKL_ON 81 | ||
21 | #define GPIO83_VPAC270_NL_ON 83 | ||
22 | |||
23 | #define GPIO52_VPAC270_SD_READONLY 52 | ||
24 | #define GPIO53_VPAC270_SD_DETECT_N 53 | ||
25 | |||
26 | #define GPIO84_VPAC270_PCMCIA_CD 84 | ||
27 | #define GPIO35_VPAC270_PCMCIA_RDY 35 | ||
28 | #define GPIO107_VPAC270_PCMCIA_PPEN 107 | ||
29 | #define GPIO11_VPAC270_PCMCIA_RESET 11 | ||
30 | #define GPIO17_VPAC270_CF_CD 17 | ||
31 | #define GPIO12_VPAC270_CF_RDY 12 | ||
32 | #define GPIO16_VPAC270_CF_RESET 16 | ||
33 | |||
34 | #define GPIO41_VPAC270_UDC_DETECT 41 | ||
35 | |||
36 | #define GPIO114_VPAC270_ETH_IRQ 114 | ||
37 | |||
38 | #define GPIO36_VPAC270_IDE_IRQ 36 | ||
39 | |||
40 | #define GPIO113_VPAC270_TS_IRQ 113 | ||
41 | |||
42 | #endif | ||
diff --git a/arch/arm/mach-pxa/include/mach/z2.h b/arch/arm/mach-pxa/include/mach/z2.h new file mode 100644 index 000000000000..8835c16bc82f --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/z2.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-pxa/include/mach/z2.h | ||
3 | * | ||
4 | * Author: Ken McGuire | ||
5 | * Created: Feb 6, 2009 | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef ASM_ARCH_ZIPIT2_H | ||
13 | #define ASM_ARCH_ZIPIT2_H | ||
14 | |||
15 | /* LEDs */ | ||
16 | #define GPIO10_ZIPITZ2_LED_WIFI 10 | ||
17 | #define GPIO85_ZIPITZ2_LED_CHARGED 85 | ||
18 | #define GPIO83_ZIPITZ2_LED_CHARGING 83 | ||
19 | |||
20 | /* SD/MMC */ | ||
21 | #define GPIO96_ZIPITZ2_SD_DETECT 96 | ||
22 | |||
23 | /* GPIO Buttons */ | ||
24 | #define GPIO1_ZIPITZ2_POWER_BUTTON 1 | ||
25 | #define GPIO98_ZIPITZ2_LID_BUTTON 98 | ||
26 | |||
27 | /* Libertas GSPI8686 WiFi */ | ||
28 | #define GPIO14_ZIPITZ2_WIFI_RESET 14 | ||
29 | #define GPIO15_ZIPITZ2_WIFI_POWER 15 | ||
30 | #define GPIO24_ZIPITZ2_WIFI_CS 24 | ||
31 | #define GPIO36_ZIPITZ2_WIFI_IRQ 36 | ||
32 | |||
33 | /* LCD */ | ||
34 | #define GPIO19_ZIPITZ2_LCD_RESET 19 | ||
35 | #define GPIO88_ZIPITZ2_LCD_CS 88 | ||
36 | |||
37 | /* MISC GPIOs */ | ||
38 | #define GPIO0_ZIPITZ2_AC_DETECT 0 | ||
39 | #define GPIO37_ZIPITZ2_HEADSET_DETECT 37 | ||
40 | |||
41 | #endif | ||
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c index fa527b258d61..9b9046185b00 100644 --- a/arch/arm/mach-pxa/littleton.c +++ b/arch/arm/mach-pxa/littleton.c | |||
@@ -41,7 +41,6 @@ | |||
41 | 41 | ||
42 | #include <mach/pxa300.h> | 42 | #include <mach/pxa300.h> |
43 | #include <mach/pxafb.h> | 43 | #include <mach/pxafb.h> |
44 | #include <mach/ssp.h> | ||
45 | #include <mach/mmc.h> | 44 | #include <mach/mmc.h> |
46 | #include <mach/pxa2xx_spi.h> | 45 | #include <mach/pxa2xx_spi.h> |
47 | #include <mach/pxa27x_keypad.h> | 46 | #include <mach/pxa27x_keypad.h> |
@@ -272,7 +271,7 @@ static inline void littleton_init_keypad(void) {} | |||
272 | 271 | ||
273 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) | 272 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) |
274 | static struct pxamci_platform_data littleton_mci_platform_data = { | 273 | static struct pxamci_platform_data littleton_mci_platform_data = { |
275 | .detect_delay = 20, | 274 | .detect_delay_ms = 200, |
276 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 275 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
277 | .gpio_card_detect = GPIO_MMC1_CARD_DETECT, | 276 | .gpio_card_detect = GPIO_MMC1_CARD_DETECT, |
278 | .gpio_card_ro = -1, | 277 | .gpio_card_ro = -1, |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 63d65a2a0387..330c3282856e 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -478,7 +478,7 @@ static void lubbock_mci_exit(struct device *dev, void *data) | |||
478 | 478 | ||
479 | static struct pxamci_platform_data lubbock_mci_platform_data = { | 479 | static struct pxamci_platform_data lubbock_mci_platform_data = { |
480 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 480 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
481 | .detect_delay = 1, | 481 | .detect_delay_ms = 10, |
482 | .init = lubbock_mci_init, | 482 | .init = lubbock_mci_init, |
483 | .get_ro = lubbock_mci_get_ro, | 483 | .get_ro = lubbock_mci_get_ro, |
484 | .exit = lubbock_mci_exit, | 484 | .exit = lubbock_mci_exit, |
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c index cf6b720c055f..1d1419b73457 100644 --- a/arch/arm/mach-pxa/mfp-pxa2xx.c +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c | |||
@@ -81,6 +81,7 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c) | |||
81 | PGSR(bank) &= ~mask; | 81 | PGSR(bank) &= ~mask; |
82 | is_out = 1; | 82 | is_out = 1; |
83 | break; | 83 | break; |
84 | case MFP_LPM_INPUT: | ||
84 | case MFP_LPM_DEFAULT: | 85 | case MFP_LPM_DEFAULT: |
85 | break; | 86 | break; |
86 | default: | 87 | default: |
@@ -178,8 +179,17 @@ int gpio_set_wake(unsigned int gpio, unsigned int on) | |||
178 | if (!d->valid) | 179 | if (!d->valid) |
179 | return -EINVAL; | 180 | return -EINVAL; |
180 | 181 | ||
181 | if (d->keypad_gpio) | 182 | /* Allow keypad GPIOs to wakeup system when |
182 | return -EINVAL; | 183 | * configured as generic GPIOs. |
184 | */ | ||
185 | if (d->keypad_gpio && (MFP_AF(d->config) == 0) && | ||
186 | (d->config & MFP_LPM_CAN_WAKEUP)) { | ||
187 | if (on) | ||
188 | PKWR |= d->mask; | ||
189 | else | ||
190 | PKWR &= ~d->mask; | ||
191 | return 0; | ||
192 | } | ||
183 | 193 | ||
184 | mux_taken = (PWER & d->mux_mask) & (~d->mask); | 194 | mux_taken = (PWER & d->mux_mask) & (~d->mask); |
185 | if (on && mux_taken) | 195 | if (on && mux_taken) |
@@ -239,21 +249,25 @@ static int pxa27x_pkwr_gpio[] = { | |||
239 | int keypad_set_wake(unsigned int on) | 249 | int keypad_set_wake(unsigned int on) |
240 | { | 250 | { |
241 | unsigned int i, gpio, mask = 0; | 251 | unsigned int i, gpio, mask = 0; |
242 | 252 | struct gpio_desc *d; | |
243 | if (!on) { | ||
244 | PKWR = 0; | ||
245 | return 0; | ||
246 | } | ||
247 | 253 | ||
248 | for (i = 0; i < ARRAY_SIZE(pxa27x_pkwr_gpio); i++) { | 254 | for (i = 0; i < ARRAY_SIZE(pxa27x_pkwr_gpio); i++) { |
249 | 255 | ||
250 | gpio = pxa27x_pkwr_gpio[i]; | 256 | gpio = pxa27x_pkwr_gpio[i]; |
257 | d = &gpio_desc[gpio]; | ||
251 | 258 | ||
252 | if (gpio_desc[gpio].config & MFP_LPM_CAN_WAKEUP) | 259 | /* skip if configured as generic GPIO */ |
260 | if (MFP_AF(d->config) == 0) | ||
261 | continue; | ||
262 | |||
263 | if (d->config & MFP_LPM_CAN_WAKEUP) | ||
253 | mask |= gpio_desc[gpio].mask; | 264 | mask |= gpio_desc[gpio].mask; |
254 | } | 265 | } |
255 | 266 | ||
256 | PKWR = mask; | 267 | if (on) |
268 | PKWR |= mask; | ||
269 | else | ||
270 | PKWR &= ~mask; | ||
257 | return 0; | 271 | return 0; |
258 | } | 272 | } |
259 | 273 | ||
@@ -328,6 +342,17 @@ static int pxa2xx_mfp_suspend(struct sys_device *d, pm_message_t state) | |||
328 | { | 342 | { |
329 | int i; | 343 | int i; |
330 | 344 | ||
345 | /* set corresponding PGSR bit of those marked MFP_LPM_KEEP_OUTPUT */ | ||
346 | for (i = 0; i < pxa_last_gpio; i++) { | ||
347 | if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && | ||
348 | (GPDR(i) & GPIO_bit(i))) { | ||
349 | if (GPLR(i) & GPIO_bit(i)) | ||
350 | PGSR(i) |= GPIO_bit(i); | ||
351 | else | ||
352 | PGSR(i) &= ~GPIO_bit(i); | ||
353 | } | ||
354 | } | ||
355 | |||
331 | for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { | 356 | for (i = 0; i <= gpio_to_bank(pxa_last_gpio); i++) { |
332 | 357 | ||
333 | saved_gafr[0][i] = GAFR_L(i); | 358 | saved_gafr[0][i] = GAFR_L(i); |
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c index 7a50ed8fce94..d60db87dde08 100644 --- a/arch/arm/mach-pxa/mioa701.c +++ b/arch/arm/mach-pxa/mioa701.c | |||
@@ -426,6 +426,7 @@ struct gpio_vbus_mach_info gpio_vbus_data = { | |||
426 | * to give the card a chance to fully insert/eject. | 426 | * to give the card a chance to fully insert/eject. |
427 | */ | 427 | */ |
428 | static struct pxamci_platform_data mioa701_mci_info = { | 428 | static struct pxamci_platform_data mioa701_mci_info = { |
429 | .detect_delay_ms = 250, | ||
429 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 430 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
430 | .gpio_card_detect = GPIO15_SDIO_INSERT, | 431 | .gpio_card_detect = GPIO15_SDIO_INSERT, |
431 | .gpio_card_ro = GPIO78_SDIO_RO, | 432 | .gpio_card_ro = GPIO78_SDIO_RO, |
@@ -791,7 +792,6 @@ static void __init mioa701_machine_init(void) | |||
791 | mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); | 792 | mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); |
792 | bootstrap_init(); | 793 | bootstrap_init(); |
793 | set_pxa_fb_info(&mioa701_pxafb_info); | 794 | set_pxa_fb_info(&mioa701_pxafb_info); |
794 | mioa701_mci_info.detect_delay = msecs_to_jiffies(250); | ||
795 | pxa_set_mci_info(&mioa701_mci_info); | 795 | pxa_set_mci_info(&mioa701_mci_info); |
796 | pxa_set_keypad_info(&mioa701_keypad_info); | 796 | pxa_set_keypad_info(&mioa701_keypad_info); |
797 | wm97xx_bat_set_pdata(&mioa701_battery_data); | 797 | wm97xx_bat_set_pdata(&mioa701_battery_data); |
diff --git a/arch/arm/mach-pxa/mxm8x10.c b/arch/arm/mach-pxa/mxm8x10.c index 8c9c6f0d56bb..462167ac05f9 100644 --- a/arch/arm/mach-pxa/mxm8x10.c +++ b/arch/arm/mach-pxa/mxm8x10.c | |||
@@ -325,7 +325,7 @@ static mfp_cfg_t mfp_cfg[] __initdata = { | |||
325 | #if defined(CONFIG_MMC) | 325 | #if defined(CONFIG_MMC) |
326 | static struct pxamci_platform_data mxm_8x10_mci_platform_data = { | 326 | static struct pxamci_platform_data mxm_8x10_mci_platform_data = { |
327 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 327 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
328 | .detect_delay = 1, | 328 | .detect_delay_ms = 10, |
329 | .gpio_card_detect = MXM_8X10_SD_nCD, | 329 | .gpio_card_detect = MXM_8X10_SD_nCD, |
330 | .gpio_card_ro = MXM_8X10_SD_WP, | 330 | .gpio_card_ro = MXM_8X10_SD_WP, |
331 | .gpio_power = -1 | 331 | .gpio_power = -1 |
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c index f70c75b38769..1963819dba98 100644 --- a/arch/arm/mach-pxa/palmld.c +++ b/arch/arm/mach-pxa/palmld.c | |||
@@ -168,7 +168,7 @@ static struct pxamci_platform_data palmld_mci_platform_data = { | |||
168 | .gpio_card_detect = GPIO_NR_PALMLD_SD_DETECT_N, | 168 | .gpio_card_detect = GPIO_NR_PALMLD_SD_DETECT_N, |
169 | .gpio_card_ro = GPIO_NR_PALMLD_SD_READONLY, | 169 | .gpio_card_ro = GPIO_NR_PALMLD_SD_READONLY, |
170 | .gpio_power = GPIO_NR_PALMLD_SD_POWER, | 170 | .gpio_power = GPIO_NR_PALMLD_SD_POWER, |
171 | .detect_delay = 20, | 171 | .detect_delay_ms = 200, |
172 | }; | 172 | }; |
173 | 173 | ||
174 | /****************************************************************************** | 174 | /****************************************************************************** |
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index d902a813aae3..5305a3993e69 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c | |||
@@ -110,7 +110,7 @@ static struct pxamci_platform_data palmt5_mci_platform_data = { | |||
110 | .gpio_card_detect = GPIO_NR_PALMT5_SD_DETECT_N, | 110 | .gpio_card_detect = GPIO_NR_PALMT5_SD_DETECT_N, |
111 | .gpio_card_ro = GPIO_NR_PALMT5_SD_READONLY, | 111 | .gpio_card_ro = GPIO_NR_PALMT5_SD_READONLY, |
112 | .gpio_power = GPIO_NR_PALMT5_SD_POWER, | 112 | .gpio_power = GPIO_NR_PALMT5_SD_POWER, |
113 | .detect_delay = 20, | 113 | .detect_delay_ms = 200, |
114 | }; | 114 | }; |
115 | 115 | ||
116 | /****************************************************************************** | 116 | /****************************************************************************** |
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index 717d7a638675..033b567e50bb 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c | |||
@@ -121,7 +121,7 @@ static struct pxamci_platform_data palmtc_mci_platform_data = { | |||
121 | .gpio_power = GPIO_NR_PALMTC_SD_POWER, | 121 | .gpio_power = GPIO_NR_PALMTC_SD_POWER, |
122 | .gpio_card_ro = GPIO_NR_PALMTC_SD_READONLY, | 122 | .gpio_card_ro = GPIO_NR_PALMTC_SD_READONLY, |
123 | .gpio_card_detect = GPIO_NR_PALMTC_SD_DETECT_N, | 123 | .gpio_card_detect = GPIO_NR_PALMTC_SD_DETECT_N, |
124 | .detect_delay = 20, | 124 | .detect_delay_ms = 200, |
125 | }; | 125 | }; |
126 | 126 | ||
127 | /****************************************************************************** | 127 | /****************************************************************************** |
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c index 007b58c11f8d..ecc1a401598e 100644 --- a/arch/arm/mach-pxa/palmtx.c +++ b/arch/arm/mach-pxa/palmtx.c | |||
@@ -170,7 +170,7 @@ static struct pxamci_platform_data palmtx_mci_platform_data = { | |||
170 | .gpio_card_detect = GPIO_NR_PALMTX_SD_DETECT_N, | 170 | .gpio_card_detect = GPIO_NR_PALMTX_SD_DETECT_N, |
171 | .gpio_card_ro = GPIO_NR_PALMTX_SD_READONLY, | 171 | .gpio_card_ro = GPIO_NR_PALMTX_SD_READONLY, |
172 | .gpio_power = GPIO_NR_PALMTX_SD_POWER, | 172 | .gpio_power = GPIO_NR_PALMTX_SD_POWER, |
173 | .detect_delay = 20, | 173 | .detect_delay_ms = 200, |
174 | }; | 174 | }; |
175 | 175 | ||
176 | /****************************************************************************** | 176 | /****************************************************************************** |
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c index 9d0ecea1760c..f56ae1008759 100644 --- a/arch/arm/mach-pxa/pcm990-baseboard.c +++ b/arch/arm/mach-pxa/pcm990-baseboard.c | |||
@@ -326,7 +326,7 @@ static void pcm990_mci_exit(struct device *dev, void *data) | |||
326 | #define MSECS_PER_JIFFY (1000/HZ) | 326 | #define MSECS_PER_JIFFY (1000/HZ) |
327 | 327 | ||
328 | static struct pxamci_platform_data pcm990_mci_platform_data = { | 328 | static struct pxamci_platform_data pcm990_mci_platform_data = { |
329 | .detect_delay = 250 / MSECS_PER_JIFFY, | 329 | .detect_delay_ms = 250, |
330 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 330 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
331 | .init = pcm990_mci_init, | 331 | .init = pcm990_mci_init, |
332 | .setpower = pcm990_mci_setpower, | 332 | .setpower = pcm990_mci_setpower, |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index d58a52415d75..f4abdaafdac4 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -40,13 +40,12 @@ | |||
40 | #include <mach/pxa25x.h> | 40 | #include <mach/pxa25x.h> |
41 | #include <mach/mmc.h> | 41 | #include <mach/mmc.h> |
42 | #include <mach/udc.h> | 42 | #include <mach/udc.h> |
43 | #include <plat/i2c.h> | ||
44 | #include <mach/irda.h> | 43 | #include <mach/irda.h> |
45 | #include <mach/poodle.h> | 44 | #include <mach/poodle.h> |
46 | #include <mach/pxafb.h> | 45 | #include <mach/pxafb.h> |
47 | #include <mach/sharpsl.h> | 46 | #include <mach/sharpsl.h> |
48 | #include <mach/ssp.h> | ||
49 | #include <mach/pxa2xx_spi.h> | 47 | #include <mach/pxa2xx_spi.h> |
48 | #include <plat/i2c.h> | ||
50 | 49 | ||
51 | #include <asm/hardware/scoop.h> | 50 | #include <asm/hardware/scoop.h> |
52 | #include <asm/hardware/locomo.h> | 51 | #include <asm/hardware/locomo.h> |
@@ -277,6 +276,7 @@ static void poodle_mci_exit(struct device *dev, void *data) | |||
277 | } | 276 | } |
278 | 277 | ||
279 | static struct pxamci_platform_data poodle_mci_platform_data = { | 278 | static struct pxamci_platform_data poodle_mci_platform_data = { |
279 | .detect_delay_ms = 250, | ||
280 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 280 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
281 | .init = poodle_mci_init, | 281 | .init = poodle_mci_init, |
282 | .setpower = poodle_mci_setpower, | 282 | .setpower = poodle_mci_setpower, |
@@ -450,7 +450,6 @@ static void __init poodle_init(void) | |||
450 | set_pxa_fb_parent(&poodle_locomo_device.dev); | 450 | set_pxa_fb_parent(&poodle_locomo_device.dev); |
451 | set_pxa_fb_info(&poodle_fb_info); | 451 | set_pxa_fb_info(&poodle_fb_info); |
452 | pxa_set_udc_info(&udc_info); | 452 | pxa_set_udc_info(&udc_info); |
453 | poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
454 | pxa_set_mci_info(&poodle_mci_platform_data); | 453 | pxa_set_mci_info(&poodle_mci_platform_data); |
455 | pxa_set_ficp_info(&poodle_ficp_platform_data); | 454 | pxa_set_ficp_info(&poodle_ficp_platform_data); |
456 | pxa_set_i2c_info(NULL); | 455 | pxa_set_i2c_info(NULL); |
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 4d7c03e72504..f544e58e1536 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <mach/ohci.h> | 29 | #include <mach/ohci.h> |
30 | #include <mach/pm.h> | 30 | #include <mach/pm.h> |
31 | #include <mach/dma.h> | 31 | #include <mach/dma.h> |
32 | #include <mach/ssp.h> | ||
33 | #include <mach/regs-intc.h> | 32 | #include <mach/regs-intc.h> |
34 | #include <plat/i2c.h> | 33 | #include <plat/i2c.h> |
35 | 34 | ||
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 44bb675e47f1..d4b61b3f08f3 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
@@ -714,7 +714,7 @@ static void raumfeld_mci_exit(struct device *dev, void *data) | |||
714 | static struct pxamci_platform_data raumfeld_mci_platform_data = { | 714 | static struct pxamci_platform_data raumfeld_mci_platform_data = { |
715 | .init = raumfeld_mci_init, | 715 | .init = raumfeld_mci_init, |
716 | .exit = raumfeld_mci_exit, | 716 | .exit = raumfeld_mci_exit, |
717 | .detect_delay = 20, | 717 | .detect_delay_ms = 200, |
718 | .gpio_card_detect = -1, | 718 | .gpio_card_detect = -1, |
719 | .gpio_card_ro = -1, | 719 | .gpio_card_ro = -1, |
720 | .gpio_power = -1, | 720 | .gpio_power = -1, |
@@ -983,7 +983,7 @@ static void __init raumfeld_common_init(void) | |||
983 | int i; | 983 | int i; |
984 | 984 | ||
985 | for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++) | 985 | for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++) |
986 | if (!strcmp(gpio_keys_button[i].desc, "on/off button")) | 986 | if (!strcmp(gpio_keys_button[i].desc, "on_off button")) |
987 | gpio_keys_button[i].active_low = 1; | 987 | gpio_keys_button[i].active_low = 1; |
988 | } | 988 | } |
989 | 989 | ||
@@ -1009,8 +1009,7 @@ static void __init raumfeld_common_init(void) | |||
1009 | gpio_direction_output(GPIO_W2W_PDN, 0); | 1009 | gpio_direction_output(GPIO_W2W_PDN, 0); |
1010 | 1010 | ||
1011 | /* this can be used to switch off the device */ | 1011 | /* this can be used to switch off the device */ |
1012 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, | 1012 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown"); |
1013 | "supply shutdown"); | ||
1014 | if (ret < 0) | 1013 | if (ret < 0) |
1015 | pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); | 1014 | pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); |
1016 | else | 1015 | else |
diff --git a/arch/arm/mach-pxa/sharpsl.h b/arch/arm/mach-pxa/sharpsl.h index 1439785d3979..0cc1203c5bef 100644 --- a/arch/arm/mach-pxa/sharpsl.h +++ b/arch/arm/mach-pxa/sharpsl.h | |||
@@ -10,29 +10,6 @@ | |||
10 | #include <mach/sharpsl_pm.h> | 10 | #include <mach/sharpsl_pm.h> |
11 | 11 | ||
12 | /* | 12 | /* |
13 | * SharpSL SSP Driver | ||
14 | */ | ||
15 | struct corgissp_machinfo { | ||
16 | int port; | ||
17 | int cs_lcdcon; | ||
18 | int cs_ads7846; | ||
19 | int cs_max1111; | ||
20 | int clk_lcdcon; | ||
21 | int clk_ads7846; | ||
22 | int clk_max1111; | ||
23 | }; | ||
24 | |||
25 | void corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo); | ||
26 | |||
27 | |||
28 | /* | ||
29 | * SharpSL/Corgi LCD Driver | ||
30 | */ | ||
31 | void corgi_lcdtg_suspend(void); | ||
32 | void corgi_lcdtg_hw_init(int mode); | ||
33 | |||
34 | |||
35 | /* | ||
36 | * SharpSL Battery/PM Driver | 13 | * SharpSL Battery/PM Driver |
37 | */ | 14 | */ |
38 | #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x)) | 15 | #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x)) |
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c index 463d874bb867..cb4767251f3c 100644 --- a/arch/arm/mach-pxa/sharpsl_pm.c +++ b/arch/arm/mach-pxa/sharpsl_pm.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <mach/pm.h> | 29 | #include <mach/pm.h> |
30 | #include <mach/pxa2xx-regs.h> | 30 | #include <mach/pxa2xx-regs.h> |
31 | #include <mach/pxa2xx-gpio.h> | ||
32 | #include <mach/regs-rtc.h> | 31 | #include <mach/regs-rtc.h> |
33 | #include <mach/sharpsl.h> | 32 | #include <mach/sharpsl.h> |
34 | #include <mach/sharpsl_pm.h> | 33 | #include <mach/sharpsl_pm.h> |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 19b5109d9808..4d2413ed0ffa 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -86,6 +86,7 @@ static unsigned long spitz_pin_config[] __initdata = { | |||
86 | 86 | ||
87 | /* GPIOs */ | 87 | /* GPIOs */ |
88 | GPIO9_GPIO, /* SPITZ_GPIO_nSD_DETECT */ | 88 | GPIO9_GPIO, /* SPITZ_GPIO_nSD_DETECT */ |
89 | GPIO16_GPIO, /* SPITZ_GPIO_SYNC */ | ||
89 | GPIO81_GPIO, /* SPITZ_GPIO_nSD_WP */ | 90 | GPIO81_GPIO, /* SPITZ_GPIO_nSD_WP */ |
90 | GPIO41_GPIO, /* SPITZ_GPIO_USB_CONNECT */ | 91 | GPIO41_GPIO, /* SPITZ_GPIO_USB_CONNECT */ |
91 | GPIO37_GPIO, /* SPITZ_GPIO_USB_HOST */ | 92 | GPIO37_GPIO, /* SPITZ_GPIO_USB_HOST */ |
@@ -119,7 +120,8 @@ static unsigned long spitz_pin_config[] __initdata = { | |||
119 | GPIO117_I2C_SCL, | 120 | GPIO117_I2C_SCL, |
120 | GPIO118_I2C_SDA, | 121 | GPIO118_I2C_SDA, |
121 | 122 | ||
122 | GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, | 123 | GPIO0_GPIO | WAKEUP_ON_EDGE_RISE, /* SPITZ_GPIO_KEY_INT */ |
124 | GPIO1_GPIO | WAKEUP_ON_EDGE_FALL, /* SPITZ_GPIO_RESET */ | ||
123 | }; | 125 | }; |
124 | 126 | ||
125 | /* | 127 | /* |
@@ -363,7 +365,7 @@ static struct gpio_keys_button spitz_gpio_keys[] = { | |||
363 | .type = EV_PWR, | 365 | .type = EV_PWR, |
364 | .code = KEY_SUSPEND, | 366 | .code = KEY_SUSPEND, |
365 | .gpio = SPITZ_GPIO_ON_KEY, | 367 | .gpio = SPITZ_GPIO_ON_KEY, |
366 | .desc = "On/Off", | 368 | .desc = "On Off", |
367 | .wakeup = 1, | 369 | .wakeup = 1, |
368 | }, | 370 | }, |
369 | /* Two buttons detecting the lid state */ | 371 | /* Two buttons detecting the lid state */ |
@@ -537,6 +539,7 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd) | |||
537 | } | 539 | } |
538 | 540 | ||
539 | static struct pxamci_platform_data spitz_mci_platform_data = { | 541 | static struct pxamci_platform_data spitz_mci_platform_data = { |
542 | .detect_delay_ms = 250, | ||
540 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 543 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
541 | .setpower = spitz_mci_setpower, | 544 | .setpower = spitz_mci_setpower, |
542 | .gpio_card_detect = SPITZ_GPIO_nSD_DETECT, | 545 | .gpio_card_detect = SPITZ_GPIO_nSD_DETECT, |
@@ -757,7 +760,6 @@ static void __init common_init(void) | |||
757 | spitz_init_spi(); | 760 | spitz_init_spi(); |
758 | 761 | ||
759 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 762 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
760 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
761 | pxa_set_mci_info(&spitz_mci_platform_data); | 763 | pxa_set_mci_info(&spitz_mci_platform_data); |
762 | pxa_set_ohci_info(&spitz_ohci_platform_data); | 764 | pxa_set_ohci_info(&spitz_ohci_platform_data); |
763 | pxa_set_ficp_info(&spitz_ficp_platform_data); | 765 | pxa_set_ficp_info(&spitz_ficp_platform_data); |
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index fc5a70c40358..4209ddf6da61 100644 --- a/arch/arm/mach-pxa/spitz_pm.c +++ b/arch/arm/mach-pxa/spitz_pm.c | |||
@@ -24,9 +24,10 @@ | |||
24 | 24 | ||
25 | #include <mach/sharpsl.h> | 25 | #include <mach/sharpsl.h> |
26 | #include <mach/spitz.h> | 26 | #include <mach/spitz.h> |
27 | #include <mach/pxa2xx-regs.h> | 27 | #include <mach/pxa27x.h> |
28 | #include <mach/pxa2xx-gpio.h> | 28 | |
29 | #include "sharpsl.h" | 29 | #include "sharpsl.h" |
30 | #include "generic.h" | ||
30 | 31 | ||
31 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ | 32 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ |
32 | #define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ | 33 | #define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ |
@@ -37,10 +38,17 @@ | |||
37 | 38 | ||
38 | static int spitz_last_ac_status; | 39 | static int spitz_last_ac_status; |
39 | 40 | ||
41 | static struct gpio spitz_charger_gpios[] = { | ||
42 | { SPITZ_GPIO_KEY_INT, GPIOF_IN, "Keyboard Interrupt" }, | ||
43 | { SPITZ_GPIO_SYNC, GPIOF_IN, "Sync" }, | ||
44 | { SPITZ_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" }, | ||
45 | { SPITZ_GPIO_JK_B, GPIOF_OUT_INIT_LOW, "JK B" }, | ||
46 | { SPITZ_GPIO_CHRG_ON, GPIOF_OUT_INIT_LOW, "Charger On" }, | ||
47 | }; | ||
48 | |||
40 | static void spitz_charger_init(void) | 49 | static void spitz_charger_init(void) |
41 | { | 50 | { |
42 | pxa_gpio_mode(SPITZ_GPIO_KEY_INT | GPIO_IN); | 51 | gpio_request_array(ARRAY_AND_SIZE(spitz_charger_gpios)); |
43 | pxa_gpio_mode(SPITZ_GPIO_SYNC | GPIO_IN); | ||
44 | } | 52 | } |
45 | 53 | ||
46 | static void spitz_measure_temp(int on) | 54 | static void spitz_measure_temp(int on) |
@@ -76,6 +84,11 @@ static void spitz_discharge1(int on) | |||
76 | gpio_set_value(SPITZ_GPIO_LED_GREEN, on); | 84 | gpio_set_value(SPITZ_GPIO_LED_GREEN, on); |
77 | } | 85 | } |
78 | 86 | ||
87 | static unsigned long gpio18_config[] = { | ||
88 | GPIO18_RDY, | ||
89 | GPIO18_GPIO, | ||
90 | }; | ||
91 | |||
79 | static void spitz_presuspend(void) | 92 | static void spitz_presuspend(void) |
80 | { | 93 | { |
81 | spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); | 94 | spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); |
@@ -97,7 +110,9 @@ static void spitz_presuspend(void) | |||
97 | PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT; | 110 | PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT; |
98 | PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0); | 111 | PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0); |
99 | 112 | ||
100 | pxa_gpio_mode(GPIO18_RDY|GPIO_OUT | GPIO_DFLT_HIGH); | 113 | pxa2xx_mfp_config(&gpio18_config[0], 1); |
114 | gpio_request_one(18, GPIOF_OUT_INIT_HIGH, "Unknown"); | ||
115 | gpio_free(18); | ||
101 | 116 | ||
102 | PRER = GPIO_bit(SPITZ_GPIO_KEY_INT); | 117 | PRER = GPIO_bit(SPITZ_GPIO_KEY_INT); |
103 | PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); | 118 | PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET); |
@@ -114,8 +129,7 @@ static void spitz_presuspend(void) | |||
114 | 129 | ||
115 | static void spitz_postsuspend(void) | 130 | static void spitz_postsuspend(void) |
116 | { | 131 | { |
117 | pxa_gpio_mode(GPIO18_RDY_MD); | 132 | pxa2xx_mfp_config(&gpio18_config[1], 1); |
118 | pxa_gpio_mode(10 | GPIO_IN); | ||
119 | } | 133 | } |
120 | 134 | ||
121 | static int spitz_should_wakeup(unsigned int resume_on_alarm) | 135 | static int spitz_should_wakeup(unsigned int resume_on_alarm) |
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c deleted file mode 100644 index a81d6dbf662d..000000000000 --- a/arch/arm/mach-pxa/ssp.c +++ /dev/null | |||
@@ -1,510 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/ssp.c | ||
3 | * | ||
4 | * based on linux/arch/arm/mach-sa1100/ssp.c by Russell King | ||
5 | * | ||
6 | * Copyright (C) 2003 Russell King. | ||
7 | * Copyright (C) 2003 Wolfson Microelectronics PLC | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * PXA2xx SSP driver. This provides the generic core for simple | ||
14 | * IO-based SSP applications and allows easy port setup for DMA access. | ||
15 | * | ||
16 | * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com> | ||
17 | */ | ||
18 | |||
19 | #include <linux/module.h> | ||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/sched.h> | ||
22 | #include <linux/slab.h> | ||
23 | #include <linux/errno.h> | ||
24 | #include <linux/interrupt.h> | ||
25 | #include <linux/ioport.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/mutex.h> | ||
28 | #include <linux/clk.h> | ||
29 | #include <linux/err.h> | ||
30 | #include <linux/platform_device.h> | ||
31 | #include <linux/io.h> | ||
32 | |||
33 | #include <asm/irq.h> | ||
34 | #include <mach/hardware.h> | ||
35 | #include <mach/ssp.h> | ||
36 | #include <mach/regs-ssp.h> | ||
37 | |||
38 | #ifdef CONFIG_PXA_SSP_LEGACY | ||
39 | |||
40 | #define TIMEOUT 100000 | ||
41 | |||
42 | static irqreturn_t ssp_interrupt(int irq, void *dev_id) | ||
43 | { | ||
44 | struct ssp_dev *dev = dev_id; | ||
45 | struct ssp_device *ssp = dev->ssp; | ||
46 | unsigned int status; | ||
47 | |||
48 | status = __raw_readl(ssp->mmio_base + SSSR); | ||
49 | __raw_writel(status, ssp->mmio_base + SSSR); | ||
50 | |||
51 | if (status & SSSR_ROR) | ||
52 | printk(KERN_WARNING "SSP(%d): receiver overrun\n", dev->port); | ||
53 | |||
54 | if (status & SSSR_TUR) | ||
55 | printk(KERN_WARNING "SSP(%d): transmitter underrun\n", dev->port); | ||
56 | |||
57 | if (status & SSSR_BCE) | ||
58 | printk(KERN_WARNING "SSP(%d): bit count error\n", dev->port); | ||
59 | |||
60 | return IRQ_HANDLED; | ||
61 | } | ||
62 | |||
63 | /** | ||
64 | * ssp_write_word - write a word to the SSP port | ||
65 | * @data: 32-bit, MSB justified data to write. | ||
66 | * | ||
67 | * Wait for a free entry in the SSP transmit FIFO, and write a data | ||
68 | * word to the SSP port. | ||
69 | * | ||
70 | * The caller is expected to perform the necessary locking. | ||
71 | * | ||
72 | * Returns: | ||
73 | * %-ETIMEDOUT timeout occurred | ||
74 | * 0 success | ||
75 | */ | ||
76 | int ssp_write_word(struct ssp_dev *dev, u32 data) | ||
77 | { | ||
78 | struct ssp_device *ssp = dev->ssp; | ||
79 | int timeout = TIMEOUT; | ||
80 | |||
81 | while (!(__raw_readl(ssp->mmio_base + SSSR) & SSSR_TNF)) { | ||
82 | if (!--timeout) | ||
83 | return -ETIMEDOUT; | ||
84 | cpu_relax(); | ||
85 | } | ||
86 | |||
87 | __raw_writel(data, ssp->mmio_base + SSDR); | ||
88 | |||
89 | return 0; | ||
90 | } | ||
91 | |||
92 | /** | ||
93 | * ssp_read_word - read a word from the SSP port | ||
94 | * | ||
95 | * Wait for a data word in the SSP receive FIFO, and return the | ||
96 | * received data. Data is LSB justified. | ||
97 | * | ||
98 | * Note: Currently, if data is not expected to be received, this | ||
99 | * function will wait for ever. | ||
100 | * | ||
101 | * The caller is expected to perform the necessary locking. | ||
102 | * | ||
103 | * Returns: | ||
104 | * %-ETIMEDOUT timeout occurred | ||
105 | * 32-bit data success | ||
106 | */ | ||
107 | int ssp_read_word(struct ssp_dev *dev, u32 *data) | ||
108 | { | ||
109 | struct ssp_device *ssp = dev->ssp; | ||
110 | int timeout = TIMEOUT; | ||
111 | |||
112 | while (!(__raw_readl(ssp->mmio_base + SSSR) & SSSR_RNE)) { | ||
113 | if (!--timeout) | ||
114 | return -ETIMEDOUT; | ||
115 | cpu_relax(); | ||
116 | } | ||
117 | |||
118 | *data = __raw_readl(ssp->mmio_base + SSDR); | ||
119 | return 0; | ||
120 | } | ||
121 | |||
122 | /** | ||
123 | * ssp_flush - flush the transmit and receive FIFOs | ||
124 | * | ||
125 | * Wait for the SSP to idle, and ensure that the receive FIFO | ||
126 | * is empty. | ||
127 | * | ||
128 | * The caller is expected to perform the necessary locking. | ||
129 | */ | ||
130 | int ssp_flush(struct ssp_dev *dev) | ||
131 | { | ||
132 | struct ssp_device *ssp = dev->ssp; | ||
133 | int timeout = TIMEOUT * 2; | ||
134 | |||
135 | /* ensure TX FIFO is empty instead of not full */ | ||
136 | if (cpu_is_pxa3xx()) { | ||
137 | while (__raw_readl(ssp->mmio_base + SSSR) & 0xf00) { | ||
138 | if (!--timeout) | ||
139 | return -ETIMEDOUT; | ||
140 | cpu_relax(); | ||
141 | } | ||
142 | timeout = TIMEOUT * 2; | ||
143 | } | ||
144 | |||
145 | do { | ||
146 | while (__raw_readl(ssp->mmio_base + SSSR) & SSSR_RNE) { | ||
147 | if (!--timeout) | ||
148 | return -ETIMEDOUT; | ||
149 | (void)__raw_readl(ssp->mmio_base + SSDR); | ||
150 | } | ||
151 | if (!--timeout) | ||
152 | return -ETIMEDOUT; | ||
153 | } while (__raw_readl(ssp->mmio_base + SSSR) & SSSR_BSY); | ||
154 | |||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | /** | ||
159 | * ssp_enable - enable the SSP port | ||
160 | * | ||
161 | * Turn on the SSP port. | ||
162 | */ | ||
163 | void ssp_enable(struct ssp_dev *dev) | ||
164 | { | ||
165 | struct ssp_device *ssp = dev->ssp; | ||
166 | uint32_t sscr0; | ||
167 | |||
168 | sscr0 = __raw_readl(ssp->mmio_base + SSCR0); | ||
169 | sscr0 |= SSCR0_SSE; | ||
170 | __raw_writel(sscr0, ssp->mmio_base + SSCR0); | ||
171 | } | ||
172 | |||
173 | /** | ||
174 | * ssp_disable - shut down the SSP port | ||
175 | * | ||
176 | * Turn off the SSP port, optionally powering it down. | ||
177 | */ | ||
178 | void ssp_disable(struct ssp_dev *dev) | ||
179 | { | ||
180 | struct ssp_device *ssp = dev->ssp; | ||
181 | uint32_t sscr0; | ||
182 | |||
183 | sscr0 = __raw_readl(ssp->mmio_base + SSCR0); | ||
184 | sscr0 &= ~SSCR0_SSE; | ||
185 | __raw_writel(sscr0, ssp->mmio_base + SSCR0); | ||
186 | } | ||
187 | |||
188 | /** | ||
189 | * ssp_save_state - save the SSP configuration | ||
190 | * @ssp: pointer to structure to save SSP configuration | ||
191 | * | ||
192 | * Save the configured SSP state for suspend. | ||
193 | */ | ||
194 | void ssp_save_state(struct ssp_dev *dev, struct ssp_state *state) | ||
195 | { | ||
196 | struct ssp_device *ssp = dev->ssp; | ||
197 | |||
198 | state->cr0 = __raw_readl(ssp->mmio_base + SSCR0); | ||
199 | state->cr1 = __raw_readl(ssp->mmio_base + SSCR1); | ||
200 | state->to = __raw_readl(ssp->mmio_base + SSTO); | ||
201 | state->psp = __raw_readl(ssp->mmio_base + SSPSP); | ||
202 | |||
203 | ssp_disable(dev); | ||
204 | } | ||
205 | |||
206 | /** | ||
207 | * ssp_restore_state - restore a previously saved SSP configuration | ||
208 | * @ssp: pointer to configuration saved by ssp_save_state | ||
209 | * | ||
210 | * Restore the SSP configuration saved previously by ssp_save_state. | ||
211 | */ | ||
212 | void ssp_restore_state(struct ssp_dev *dev, struct ssp_state *state) | ||
213 | { | ||
214 | struct ssp_device *ssp = dev->ssp; | ||
215 | uint32_t sssr = SSSR_ROR | SSSR_TUR | SSSR_BCE; | ||
216 | |||
217 | __raw_writel(sssr, ssp->mmio_base + SSSR); | ||
218 | |||
219 | __raw_writel(state->cr0 & ~SSCR0_SSE, ssp->mmio_base + SSCR0); | ||
220 | __raw_writel(state->cr1, ssp->mmio_base + SSCR1); | ||
221 | __raw_writel(state->to, ssp->mmio_base + SSTO); | ||
222 | __raw_writel(state->psp, ssp->mmio_base + SSPSP); | ||
223 | __raw_writel(state->cr0, ssp->mmio_base + SSCR0); | ||
224 | } | ||
225 | |||
226 | /** | ||
227 | * ssp_config - configure SSP port settings | ||
228 | * @mode: port operating mode | ||
229 | * @flags: port config flags | ||
230 | * @psp_flags: port PSP config flags | ||
231 | * @speed: port speed | ||
232 | * | ||
233 | * Port MUST be disabled by ssp_disable before making any config changes. | ||
234 | */ | ||
235 | int ssp_config(struct ssp_dev *dev, u32 mode, u32 flags, u32 psp_flags, u32 speed) | ||
236 | { | ||
237 | struct ssp_device *ssp = dev->ssp; | ||
238 | |||
239 | dev->mode = mode; | ||
240 | dev->flags = flags; | ||
241 | dev->psp_flags = psp_flags; | ||
242 | dev->speed = speed; | ||
243 | |||
244 | /* set up port type, speed, port settings */ | ||
245 | __raw_writel((dev->speed | dev->mode), ssp->mmio_base + SSCR0); | ||
246 | __raw_writel(dev->flags, ssp->mmio_base + SSCR1); | ||
247 | __raw_writel(dev->psp_flags, ssp->mmio_base + SSPSP); | ||
248 | |||
249 | return 0; | ||
250 | } | ||
251 | |||
252 | /** | ||
253 | * ssp_init - setup the SSP port | ||
254 | * | ||
255 | * initialise and claim resources for the SSP port. | ||
256 | * | ||
257 | * Returns: | ||
258 | * %-ENODEV if the SSP port is unavailable | ||
259 | * %-EBUSY if the resources are already in use | ||
260 | * %0 on success | ||
261 | */ | ||
262 | int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags) | ||
263 | { | ||
264 | struct ssp_device *ssp; | ||
265 | int ret; | ||
266 | |||
267 | ssp = ssp_request(port, "SSP"); | ||
268 | if (ssp == NULL) | ||
269 | return -ENODEV; | ||
270 | |||
271 | dev->ssp = ssp; | ||
272 | dev->port = port; | ||
273 | |||
274 | /* do we need to get irq */ | ||
275 | if (!(init_flags & SSP_NO_IRQ)) { | ||
276 | ret = request_irq(ssp->irq, ssp_interrupt, | ||
277 | 0, "SSP", dev); | ||
278 | if (ret) | ||
279 | goto out_region; | ||
280 | dev->irq = ssp->irq; | ||
281 | } else | ||
282 | dev->irq = NO_IRQ; | ||
283 | |||
284 | /* turn on SSP port clock */ | ||
285 | clk_enable(ssp->clk); | ||
286 | return 0; | ||
287 | |||
288 | out_region: | ||
289 | ssp_free(ssp); | ||
290 | return ret; | ||
291 | } | ||
292 | |||
293 | /** | ||
294 | * ssp_exit - undo the effects of ssp_init | ||
295 | * | ||
296 | * release and free resources for the SSP port. | ||
297 | */ | ||
298 | void ssp_exit(struct ssp_dev *dev) | ||
299 | { | ||
300 | struct ssp_device *ssp = dev->ssp; | ||
301 | |||
302 | ssp_disable(dev); | ||
303 | if (dev->irq != NO_IRQ) | ||
304 | free_irq(dev->irq, dev); | ||
305 | clk_disable(ssp->clk); | ||
306 | ssp_free(ssp); | ||
307 | } | ||
308 | #endif /* CONFIG_PXA_SSP_LEGACY */ | ||
309 | |||
310 | static DEFINE_MUTEX(ssp_lock); | ||
311 | static LIST_HEAD(ssp_list); | ||
312 | |||
313 | struct ssp_device *ssp_request(int port, const char *label) | ||
314 | { | ||
315 | struct ssp_device *ssp = NULL; | ||
316 | |||
317 | mutex_lock(&ssp_lock); | ||
318 | |||
319 | list_for_each_entry(ssp, &ssp_list, node) { | ||
320 | if (ssp->port_id == port && ssp->use_count == 0) { | ||
321 | ssp->use_count++; | ||
322 | ssp->label = label; | ||
323 | break; | ||
324 | } | ||
325 | } | ||
326 | |||
327 | mutex_unlock(&ssp_lock); | ||
328 | |||
329 | if (&ssp->node == &ssp_list) | ||
330 | return NULL; | ||
331 | |||
332 | return ssp; | ||
333 | } | ||
334 | EXPORT_SYMBOL(ssp_request); | ||
335 | |||
336 | void ssp_free(struct ssp_device *ssp) | ||
337 | { | ||
338 | mutex_lock(&ssp_lock); | ||
339 | if (ssp->use_count) { | ||
340 | ssp->use_count--; | ||
341 | ssp->label = NULL; | ||
342 | } else | ||
343 | dev_err(&ssp->pdev->dev, "device already free\n"); | ||
344 | mutex_unlock(&ssp_lock); | ||
345 | } | ||
346 | EXPORT_SYMBOL(ssp_free); | ||
347 | |||
348 | static int __devinit ssp_probe(struct platform_device *pdev) | ||
349 | { | ||
350 | const struct platform_device_id *id = platform_get_device_id(pdev); | ||
351 | struct resource *res; | ||
352 | struct ssp_device *ssp; | ||
353 | int ret = 0; | ||
354 | |||
355 | ssp = kzalloc(sizeof(struct ssp_device), GFP_KERNEL); | ||
356 | if (ssp == NULL) { | ||
357 | dev_err(&pdev->dev, "failed to allocate memory"); | ||
358 | return -ENOMEM; | ||
359 | } | ||
360 | ssp->pdev = pdev; | ||
361 | |||
362 | ssp->clk = clk_get(&pdev->dev, NULL); | ||
363 | if (IS_ERR(ssp->clk)) { | ||
364 | ret = PTR_ERR(ssp->clk); | ||
365 | goto err_free; | ||
366 | } | ||
367 | |||
368 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
369 | if (res == NULL) { | ||
370 | dev_err(&pdev->dev, "no memory resource defined\n"); | ||
371 | ret = -ENODEV; | ||
372 | goto err_free_clk; | ||
373 | } | ||
374 | |||
375 | res = request_mem_region(res->start, res->end - res->start + 1, | ||
376 | pdev->name); | ||
377 | if (res == NULL) { | ||
378 | dev_err(&pdev->dev, "failed to request memory resource\n"); | ||
379 | ret = -EBUSY; | ||
380 | goto err_free_clk; | ||
381 | } | ||
382 | |||
383 | ssp->phys_base = res->start; | ||
384 | |||
385 | ssp->mmio_base = ioremap(res->start, res->end - res->start + 1); | ||
386 | if (ssp->mmio_base == NULL) { | ||
387 | dev_err(&pdev->dev, "failed to ioremap() registers\n"); | ||
388 | ret = -ENODEV; | ||
389 | goto err_free_mem; | ||
390 | } | ||
391 | |||
392 | ssp->irq = platform_get_irq(pdev, 0); | ||
393 | if (ssp->irq < 0) { | ||
394 | dev_err(&pdev->dev, "no IRQ resource defined\n"); | ||
395 | ret = -ENODEV; | ||
396 | goto err_free_io; | ||
397 | } | ||
398 | |||
399 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); | ||
400 | if (res == NULL) { | ||
401 | dev_err(&pdev->dev, "no SSP RX DRCMR defined\n"); | ||
402 | ret = -ENODEV; | ||
403 | goto err_free_io; | ||
404 | } | ||
405 | ssp->drcmr_rx = res->start; | ||
406 | |||
407 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); | ||
408 | if (res == NULL) { | ||
409 | dev_err(&pdev->dev, "no SSP TX DRCMR defined\n"); | ||
410 | ret = -ENODEV; | ||
411 | goto err_free_io; | ||
412 | } | ||
413 | ssp->drcmr_tx = res->start; | ||
414 | |||
415 | /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id | ||
416 | * starts from 0, do a translation here | ||
417 | */ | ||
418 | ssp->port_id = pdev->id + 1; | ||
419 | ssp->use_count = 0; | ||
420 | ssp->type = (int)id->driver_data; | ||
421 | |||
422 | mutex_lock(&ssp_lock); | ||
423 | list_add(&ssp->node, &ssp_list); | ||
424 | mutex_unlock(&ssp_lock); | ||
425 | |||
426 | platform_set_drvdata(pdev, ssp); | ||
427 | return 0; | ||
428 | |||
429 | err_free_io: | ||
430 | iounmap(ssp->mmio_base); | ||
431 | err_free_mem: | ||
432 | release_mem_region(res->start, res->end - res->start + 1); | ||
433 | err_free_clk: | ||
434 | clk_put(ssp->clk); | ||
435 | err_free: | ||
436 | kfree(ssp); | ||
437 | return ret; | ||
438 | } | ||
439 | |||
440 | static int __devexit ssp_remove(struct platform_device *pdev) | ||
441 | { | ||
442 | struct resource *res; | ||
443 | struct ssp_device *ssp; | ||
444 | |||
445 | ssp = platform_get_drvdata(pdev); | ||
446 | if (ssp == NULL) | ||
447 | return -ENODEV; | ||
448 | |||
449 | iounmap(ssp->mmio_base); | ||
450 | |||
451 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
452 | release_mem_region(res->start, res->end - res->start + 1); | ||
453 | |||
454 | clk_put(ssp->clk); | ||
455 | |||
456 | mutex_lock(&ssp_lock); | ||
457 | list_del(&ssp->node); | ||
458 | mutex_unlock(&ssp_lock); | ||
459 | |||
460 | kfree(ssp); | ||
461 | return 0; | ||
462 | } | ||
463 | |||
464 | static const struct platform_device_id ssp_id_table[] = { | ||
465 | { "pxa25x-ssp", PXA25x_SSP }, | ||
466 | { "pxa25x-nssp", PXA25x_NSSP }, | ||
467 | { "pxa27x-ssp", PXA27x_SSP }, | ||
468 | { }, | ||
469 | }; | ||
470 | |||
471 | static struct platform_driver ssp_driver = { | ||
472 | .probe = ssp_probe, | ||
473 | .remove = __devexit_p(ssp_remove), | ||
474 | .driver = { | ||
475 | .owner = THIS_MODULE, | ||
476 | .name = "pxa2xx-ssp", | ||
477 | }, | ||
478 | .id_table = ssp_id_table, | ||
479 | }; | ||
480 | |||
481 | static int __init pxa_ssp_init(void) | ||
482 | { | ||
483 | return platform_driver_register(&ssp_driver); | ||
484 | } | ||
485 | |||
486 | static void __exit pxa_ssp_exit(void) | ||
487 | { | ||
488 | platform_driver_unregister(&ssp_driver); | ||
489 | } | ||
490 | |||
491 | arch_initcall(pxa_ssp_init); | ||
492 | module_exit(pxa_ssp_exit); | ||
493 | |||
494 | #ifdef CONFIG_PXA_SSP_LEGACY | ||
495 | EXPORT_SYMBOL(ssp_write_word); | ||
496 | EXPORT_SYMBOL(ssp_read_word); | ||
497 | EXPORT_SYMBOL(ssp_flush); | ||
498 | EXPORT_SYMBOL(ssp_enable); | ||
499 | EXPORT_SYMBOL(ssp_disable); | ||
500 | EXPORT_SYMBOL(ssp_save_state); | ||
501 | EXPORT_SYMBOL(ssp_restore_state); | ||
502 | EXPORT_SYMBOL(ssp_init); | ||
503 | EXPORT_SYMBOL(ssp_exit); | ||
504 | EXPORT_SYMBOL(ssp_config); | ||
505 | #endif | ||
506 | |||
507 | MODULE_DESCRIPTION("PXA SSP driver"); | ||
508 | MODULE_AUTHOR("Liam Girdwood"); | ||
509 | MODULE_LICENSE("GPL"); | ||
510 | |||
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c index 2041eb1d90ba..af40d2a12d37 100644 --- a/arch/arm/mach-pxa/stargate2.c +++ b/arch/arm/mach-pxa/stargate2.c | |||
@@ -464,8 +464,6 @@ static struct platform_device smc91x_device = { | |||
464 | 464 | ||
465 | 465 | ||
466 | 466 | ||
467 | static struct pxamci_platform_data stargate2_mci_platform_data; | ||
468 | |||
469 | /* | 467 | /* |
470 | * The card detect interrupt isn't debounced so we delay it by 250ms | 468 | * The card detect interrupt isn't debounced so we delay it by 250ms |
471 | * to give the card a chance to fully insert / eject. | 469 | * to give the card a chance to fully insert / eject. |
@@ -489,8 +487,6 @@ static int stargate2_mci_init(struct device *dev, | |||
489 | goto free_power_en; | 487 | goto free_power_en; |
490 | } | 488 | } |
491 | gpio_direction_input(SG2_GPIO_nSD_DETECT); | 489 | gpio_direction_input(SG2_GPIO_nSD_DETECT); |
492 | /* Delay to allow for full insertion */ | ||
493 | stargate2_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
494 | 490 | ||
495 | err = request_irq(IRQ_GPIO(SG2_GPIO_nSD_DETECT), | 491 | err = request_irq(IRQ_GPIO(SG2_GPIO_nSD_DETECT), |
496 | stargate2_detect_int, | 492 | stargate2_detect_int, |
@@ -529,6 +525,7 @@ static void stargate2_mci_exit(struct device *dev, void *data) | |||
529 | } | 525 | } |
530 | 526 | ||
531 | static struct pxamci_platform_data stargate2_mci_platform_data = { | 527 | static struct pxamci_platform_data stargate2_mci_platform_data = { |
528 | .detect_delay_ms = 250, | ||
532 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 529 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
533 | .init = stargate2_mci_init, | 530 | .init = stargate2_mci_init, |
534 | .setpower = stargate2_mci_setpower, | 531 | .setpower = stargate2_mci_setpower, |
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index ad552791c4ce..7512b822c6ca 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -275,6 +275,7 @@ static void tosa_mci_exit(struct device *dev, void *data) | |||
275 | } | 275 | } |
276 | 276 | ||
277 | static struct pxamci_platform_data tosa_mci_platform_data = { | 277 | static struct pxamci_platform_data tosa_mci_platform_data = { |
278 | .detect_delay_ms = 250, | ||
278 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 279 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
279 | .init = tosa_mci_init, | 280 | .init = tosa_mci_init, |
280 | .exit = tosa_mci_exit, | 281 | .exit = tosa_mci_exit, |
@@ -926,7 +927,6 @@ static void __init tosa_init(void) | |||
926 | dummy = gpiochip_reserve(TOSA_SCOOP_JC_GPIO_BASE, 12); | 927 | dummy = gpiochip_reserve(TOSA_SCOOP_JC_GPIO_BASE, 12); |
927 | dummy = gpiochip_reserve(TOSA_TC6393XB_GPIO_BASE, 16); | 928 | dummy = gpiochip_reserve(TOSA_TC6393XB_GPIO_BASE, 16); |
928 | 929 | ||
929 | tosa_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
930 | pxa_set_mci_info(&tosa_mci_platform_data); | 930 | pxa_set_mci_info(&tosa_mci_platform_data); |
931 | pxa_set_udc_info(&udc_info); | 931 | pxa_set_udc_info(&udc_info); |
932 | pxa_set_ficp_info(&tosa_ficp_platform_data); | 932 | pxa_set_ficp_info(&tosa_ficp_platform_data); |
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index 797f2544d0ce..69689112eae7 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c | |||
@@ -349,7 +349,7 @@ static void trizeps4_mci_exit(struct device *dev, void *data) | |||
349 | 349 | ||
350 | static struct pxamci_platform_data trizeps4_mci_platform_data = { | 350 | static struct pxamci_platform_data trizeps4_mci_platform_data = { |
351 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 351 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
352 | .detect_delay = 1, | 352 | .detect_delay_ms= 10, |
353 | .init = trizeps4_mci_init, | 353 | .init = trizeps4_mci_init, |
354 | .exit = trizeps4_mci_exit, | 354 | .exit = trizeps4_mci_exit, |
355 | .get_ro = NULL, /* write-protection not supported */ | 355 | .get_ro = NULL, /* write-protection not supported */ |
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index 9e0c5c3988a1..e90114a7e246 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/pm.h> | 34 | #include <linux/pm.h> |
35 | #include <linux/sched.h> | 35 | #include <linux/sched.h> |
36 | #include <linux/gpio.h> | 36 | #include <linux/gpio.h> |
37 | #include <linux/jiffies.h> | ||
37 | #include <linux/i2c-gpio.h> | 38 | #include <linux/i2c-gpio.h> |
38 | #include <linux/serial_8250.h> | 39 | #include <linux/serial_8250.h> |
39 | #include <linux/smc91x.h> | 40 | #include <linux/smc91x.h> |
@@ -454,7 +455,7 @@ static struct i2c_gpio_platform_data i2c_bus_data = { | |||
454 | .sda_pin = VIPER_RTC_I2C_SDA_GPIO, | 455 | .sda_pin = VIPER_RTC_I2C_SDA_GPIO, |
455 | .scl_pin = VIPER_RTC_I2C_SCL_GPIO, | 456 | .scl_pin = VIPER_RTC_I2C_SCL_GPIO, |
456 | .udelay = 10, | 457 | .udelay = 10, |
457 | .timeout = 100, | 458 | .timeout = HZ, |
458 | }; | 459 | }; |
459 | 460 | ||
460 | static struct platform_device i2c_bus_device = { | 461 | static struct platform_device i2c_bus_device = { |
@@ -779,7 +780,7 @@ static void __init viper_tpm_init(void) | |||
779 | .sda_pin = VIPER_TPM_I2C_SDA_GPIO, | 780 | .sda_pin = VIPER_TPM_I2C_SDA_GPIO, |
780 | .scl_pin = VIPER_TPM_I2C_SCL_GPIO, | 781 | .scl_pin = VIPER_TPM_I2C_SCL_GPIO, |
781 | .udelay = 10, | 782 | .udelay = 10, |
782 | .timeout = 100, | 783 | .timeout = HZ, |
783 | }; | 784 | }; |
784 | char *errstr; | 785 | char *errstr; |
785 | 786 | ||
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c new file mode 100644 index 000000000000..9884fa978f16 --- /dev/null +++ b/arch/arm/mach-pxa/vpac270.c | |||
@@ -0,0 +1,615 @@ | |||
1 | /* | ||
2 | * Hardware definitions for Voipac PXA270 | ||
3 | * | ||
4 | * Copyright (C) 2010 | ||
5 | * Marek Vasut <marek.vasut@gmail.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/platform_device.h> | ||
14 | #include <linux/delay.h> | ||
15 | #include <linux/irq.h> | ||
16 | #include <linux/gpio_keys.h> | ||
17 | #include <linux/input.h> | ||
18 | #include <linux/gpio.h> | ||
19 | #include <linux/sysdev.h> | ||
20 | #include <linux/usb/gpio_vbus.h> | ||
21 | #include <linux/mtd/mtd.h> | ||
22 | #include <linux/mtd/partitions.h> | ||
23 | #include <linux/mtd/physmap.h> | ||
24 | #include <linux/mtd/onenand.h> | ||
25 | #include <linux/dm9000.h> | ||
26 | #include <linux/ucb1400.h> | ||
27 | #include <linux/ata_platform.h> | ||
28 | |||
29 | #include <asm/mach-types.h> | ||
30 | #include <asm/mach/arch.h> | ||
31 | |||
32 | #include <mach/pxa27x.h> | ||
33 | #include <mach/audio.h> | ||
34 | #include <mach/vpac270.h> | ||
35 | #include <mach/mmc.h> | ||
36 | #include <mach/pxafb.h> | ||
37 | #include <mach/ohci.h> | ||
38 | #include <mach/pxa27x-udc.h> | ||
39 | #include <mach/udc.h> | ||
40 | |||
41 | #include <plat/i2c.h> | ||
42 | |||
43 | #include "generic.h" | ||
44 | #include "devices.h" | ||
45 | |||
46 | /****************************************************************************** | ||
47 | * Pin configuration | ||
48 | ******************************************************************************/ | ||
49 | static unsigned long vpac270_pin_config[] __initdata = { | ||
50 | /* MMC */ | ||
51 | GPIO32_MMC_CLK, | ||
52 | GPIO92_MMC_DAT_0, | ||
53 | GPIO109_MMC_DAT_1, | ||
54 | GPIO110_MMC_DAT_2, | ||
55 | GPIO111_MMC_DAT_3, | ||
56 | GPIO112_MMC_CMD, | ||
57 | GPIO53_GPIO, /* SD detect */ | ||
58 | GPIO52_GPIO, /* SD r/o switch */ | ||
59 | |||
60 | /* GPIO KEYS */ | ||
61 | GPIO1_GPIO, /* USER BTN */ | ||
62 | |||
63 | /* LEDs */ | ||
64 | GPIO15_GPIO, /* orange led */ | ||
65 | |||
66 | /* FFUART */ | ||
67 | GPIO34_FFUART_RXD, | ||
68 | GPIO39_FFUART_TXD, | ||
69 | GPIO27_FFUART_RTS, | ||
70 | GPIO100_FFUART_CTS, | ||
71 | GPIO33_FFUART_DSR, | ||
72 | GPIO40_FFUART_DTR, | ||
73 | GPIO10_FFUART_DCD, | ||
74 | GPIO38_FFUART_RI, | ||
75 | |||
76 | /* LCD */ | ||
77 | GPIO58_LCD_LDD_0, | ||
78 | GPIO59_LCD_LDD_1, | ||
79 | GPIO60_LCD_LDD_2, | ||
80 | GPIO61_LCD_LDD_3, | ||
81 | GPIO62_LCD_LDD_4, | ||
82 | GPIO63_LCD_LDD_5, | ||
83 | GPIO64_LCD_LDD_6, | ||
84 | GPIO65_LCD_LDD_7, | ||
85 | GPIO66_LCD_LDD_8, | ||
86 | GPIO67_LCD_LDD_9, | ||
87 | GPIO68_LCD_LDD_10, | ||
88 | GPIO69_LCD_LDD_11, | ||
89 | GPIO70_LCD_LDD_12, | ||
90 | GPIO71_LCD_LDD_13, | ||
91 | GPIO72_LCD_LDD_14, | ||
92 | GPIO73_LCD_LDD_15, | ||
93 | GPIO86_LCD_LDD_16, | ||
94 | GPIO87_LCD_LDD_17, | ||
95 | GPIO74_LCD_FCLK, | ||
96 | GPIO75_LCD_LCLK, | ||
97 | GPIO76_LCD_PCLK, | ||
98 | GPIO77_LCD_BIAS, | ||
99 | |||
100 | /* PCMCIA */ | ||
101 | GPIO48_nPOE, | ||
102 | GPIO49_nPWE, | ||
103 | GPIO50_nPIOR, | ||
104 | GPIO51_nPIOW, | ||
105 | GPIO85_nPCE_1, | ||
106 | GPIO54_nPCE_2, | ||
107 | GPIO55_nPREG, | ||
108 | GPIO57_nIOIS16, | ||
109 | GPIO56_nPWAIT, | ||
110 | GPIO104_PSKTSEL, | ||
111 | GPIO84_GPIO, /* PCMCIA CD */ | ||
112 | GPIO35_GPIO, /* PCMCIA RDY */ | ||
113 | GPIO107_GPIO, /* PCMCIA PPEN */ | ||
114 | GPIO11_GPIO, /* PCMCIA RESET */ | ||
115 | GPIO17_GPIO, /* CF CD */ | ||
116 | GPIO12_GPIO, /* CF RDY */ | ||
117 | GPIO16_GPIO, /* CF RESET */ | ||
118 | |||
119 | /* UHC */ | ||
120 | GPIO88_USBH1_PWR, | ||
121 | GPIO89_USBH1_PEN, | ||
122 | GPIO119_USBH2_PWR, | ||
123 | GPIO120_USBH2_PEN, | ||
124 | |||
125 | /* UDC */ | ||
126 | GPIO41_GPIO, | ||
127 | |||
128 | /* Ethernet */ | ||
129 | GPIO114_GPIO, /* IRQ */ | ||
130 | |||
131 | /* AC97 */ | ||
132 | GPIO28_AC97_BITCLK, | ||
133 | GPIO29_AC97_SDATA_IN_0, | ||
134 | GPIO30_AC97_SDATA_OUT, | ||
135 | GPIO31_AC97_SYNC, | ||
136 | GPIO95_AC97_nRESET, | ||
137 | GPIO98_AC97_SYSCLK, | ||
138 | GPIO113_GPIO, /* TS IRQ */ | ||
139 | |||
140 | /* I2C */ | ||
141 | GPIO117_I2C_SCL, | ||
142 | GPIO118_I2C_SDA, | ||
143 | |||
144 | /* IDE */ | ||
145 | GPIO36_GPIO, /* IDE IRQ */ | ||
146 | GPIO80_DREQ_1, | ||
147 | }; | ||
148 | |||
149 | /****************************************************************************** | ||
150 | * NOR Flash | ||
151 | ******************************************************************************/ | ||
152 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | ||
153 | static struct mtd_partition vpac270_nor_partitions[] = { | ||
154 | { | ||
155 | .name = "Flash", | ||
156 | .offset = 0x00000000, | ||
157 | .size = MTDPART_SIZ_FULL, | ||
158 | } | ||
159 | }; | ||
160 | |||
161 | static struct physmap_flash_data vpac270_flash_data[] = { | ||
162 | { | ||
163 | .width = 2, /* bankwidth in bytes */ | ||
164 | .parts = vpac270_nor_partitions, | ||
165 | .nr_parts = ARRAY_SIZE(vpac270_nor_partitions) | ||
166 | } | ||
167 | }; | ||
168 | |||
169 | static struct resource vpac270_flash_resource = { | ||
170 | .start = PXA_CS0_PHYS, | ||
171 | .end = PXA_CS0_PHYS + SZ_64M - 1, | ||
172 | .flags = IORESOURCE_MEM, | ||
173 | }; | ||
174 | |||
175 | static struct platform_device vpac270_flash = { | ||
176 | .name = "physmap-flash", | ||
177 | .id = 0, | ||
178 | .resource = &vpac270_flash_resource, | ||
179 | .num_resources = 1, | ||
180 | .dev = { | ||
181 | .platform_data = vpac270_flash_data, | ||
182 | }, | ||
183 | }; | ||
184 | static void __init vpac270_nor_init(void) | ||
185 | { | ||
186 | platform_device_register(&vpac270_flash); | ||
187 | } | ||
188 | #else | ||
189 | static inline void vpac270_nor_init(void) {} | ||
190 | #endif | ||
191 | |||
192 | /****************************************************************************** | ||
193 | * OneNAND Flash | ||
194 | ******************************************************************************/ | ||
195 | #if defined(CONFIG_MTD_ONENAND) || defined(CONFIG_MTD_ONENAND_MODULE) | ||
196 | static struct mtd_partition vpac270_onenand_partitions[] = { | ||
197 | { | ||
198 | .name = "Flash", | ||
199 | .offset = 0x00000000, | ||
200 | .size = MTDPART_SIZ_FULL, | ||
201 | } | ||
202 | }; | ||
203 | |||
204 | static struct onenand_platform_data vpac270_onenand_info = { | ||
205 | .parts = vpac270_onenand_partitions, | ||
206 | .nr_parts = ARRAY_SIZE(vpac270_onenand_partitions), | ||
207 | }; | ||
208 | |||
209 | static struct resource vpac270_onenand_resources[] = { | ||
210 | [0] = { | ||
211 | .start = PXA_CS0_PHYS, | ||
212 | .end = PXA_CS0_PHYS + SZ_1M, | ||
213 | .flags = IORESOURCE_MEM, | ||
214 | }, | ||
215 | }; | ||
216 | |||
217 | static struct platform_device vpac270_onenand = { | ||
218 | .name = "onenand-flash", | ||
219 | .id = -1, | ||
220 | .resource = vpac270_onenand_resources, | ||
221 | .num_resources = ARRAY_SIZE(vpac270_onenand_resources), | ||
222 | .dev = { | ||
223 | .platform_data = &vpac270_onenand_info, | ||
224 | }, | ||
225 | }; | ||
226 | |||
227 | static void __init vpac270_onenand_init(void) | ||
228 | { | ||
229 | platform_device_register(&vpac270_onenand); | ||
230 | } | ||
231 | #else | ||
232 | static void __init vpac270_onenand_init(void) {} | ||
233 | #endif | ||
234 | |||
235 | /****************************************************************************** | ||
236 | * SD/MMC card controller | ||
237 | ******************************************************************************/ | ||
238 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) | ||
239 | static struct pxamci_platform_data vpac270_mci_platform_data = { | ||
240 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
241 | .gpio_card_detect = GPIO53_VPAC270_SD_DETECT_N, | ||
242 | .gpio_card_ro = GPIO52_VPAC270_SD_READONLY, | ||
243 | .detect_delay_ms = 200, | ||
244 | }; | ||
245 | |||
246 | static void __init vpac270_mmc_init(void) | ||
247 | { | ||
248 | pxa_set_mci_info(&vpac270_mci_platform_data); | ||
249 | } | ||
250 | #else | ||
251 | static inline void vpac270_mmc_init(void) {} | ||
252 | #endif | ||
253 | |||
254 | /****************************************************************************** | ||
255 | * GPIO keys | ||
256 | ******************************************************************************/ | ||
257 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
258 | static struct gpio_keys_button vpac270_pxa_buttons[] = { | ||
259 | {KEY_POWER, GPIO1_VPAC270_USER_BTN, 0, "USER BTN"}, | ||
260 | }; | ||
261 | |||
262 | static struct gpio_keys_platform_data vpac270_pxa_keys_data = { | ||
263 | .buttons = vpac270_pxa_buttons, | ||
264 | .nbuttons = ARRAY_SIZE(vpac270_pxa_buttons), | ||
265 | }; | ||
266 | |||
267 | static struct platform_device vpac270_pxa_keys = { | ||
268 | .name = "gpio-keys", | ||
269 | .id = -1, | ||
270 | .dev = { | ||
271 | .platform_data = &vpac270_pxa_keys_data, | ||
272 | }, | ||
273 | }; | ||
274 | |||
275 | static void __init vpac270_keys_init(void) | ||
276 | { | ||
277 | platform_device_register(&vpac270_pxa_keys); | ||
278 | } | ||
279 | #else | ||
280 | static inline void vpac270_keys_init(void) {} | ||
281 | #endif | ||
282 | |||
283 | /****************************************************************************** | ||
284 | * LED | ||
285 | ******************************************************************************/ | ||
286 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | ||
287 | struct gpio_led vpac270_gpio_leds[] = { | ||
288 | { | ||
289 | .name = "vpac270:orange:user", | ||
290 | .default_trigger = "none", | ||
291 | .gpio = GPIO15_VPAC270_LED_ORANGE, | ||
292 | .active_low = 1, | ||
293 | } | ||
294 | }; | ||
295 | |||
296 | static struct gpio_led_platform_data vpac270_gpio_led_info = { | ||
297 | .leds = vpac270_gpio_leds, | ||
298 | .num_leds = ARRAY_SIZE(vpac270_gpio_leds), | ||
299 | }; | ||
300 | |||
301 | static struct platform_device vpac270_leds = { | ||
302 | .name = "leds-gpio", | ||
303 | .id = -1, | ||
304 | .dev = { | ||
305 | .platform_data = &vpac270_gpio_led_info, | ||
306 | } | ||
307 | }; | ||
308 | |||
309 | static void __init vpac270_leds_init(void) | ||
310 | { | ||
311 | platform_device_register(&vpac270_leds); | ||
312 | } | ||
313 | #else | ||
314 | static inline void vpac270_leds_init(void) {} | ||
315 | #endif | ||
316 | |||
317 | /****************************************************************************** | ||
318 | * USB Host | ||
319 | ******************************************************************************/ | ||
320 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | ||
321 | static int vpac270_ohci_init(struct device *dev) | ||
322 | { | ||
323 | UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; | ||
324 | return 0; | ||
325 | } | ||
326 | |||
327 | static struct pxaohci_platform_data vpac270_ohci_info = { | ||
328 | .port_mode = PMM_PERPORT_MODE, | ||
329 | .flags = ENABLE_PORT1 | ENABLE_PORT2 | | ||
330 | POWER_CONTROL_LOW | POWER_SENSE_LOW, | ||
331 | .init = vpac270_ohci_init, | ||
332 | }; | ||
333 | |||
334 | static void __init vpac270_uhc_init(void) | ||
335 | { | ||
336 | pxa_set_ohci_info(&vpac270_ohci_info); | ||
337 | } | ||
338 | #else | ||
339 | static inline void vpac270_uhc_init(void) {} | ||
340 | #endif | ||
341 | |||
342 | /****************************************************************************** | ||
343 | * USB Gadget | ||
344 | ******************************************************************************/ | ||
345 | #if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE) | ||
346 | static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = { | ||
347 | .gpio_vbus = GPIO41_VPAC270_UDC_DETECT, | ||
348 | .gpio_pullup = -1, | ||
349 | }; | ||
350 | |||
351 | static struct platform_device vpac270_gpio_vbus = { | ||
352 | .name = "gpio-vbus", | ||
353 | .id = -1, | ||
354 | .dev = { | ||
355 | .platform_data = &vpac270_gpio_vbus_info, | ||
356 | }, | ||
357 | }; | ||
358 | |||
359 | static void vpac270_udc_command(int cmd) | ||
360 | { | ||
361 | if (cmd == PXA2XX_UDC_CMD_CONNECT) | ||
362 | UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE; | ||
363 | else if (cmd == PXA2XX_UDC_CMD_DISCONNECT) | ||
364 | UP2OCR = UP2OCR_HXOE; | ||
365 | } | ||
366 | |||
367 | static struct pxa2xx_udc_mach_info vpac270_udc_info __initdata = { | ||
368 | .udc_command = vpac270_udc_command, | ||
369 | .gpio_pullup = -1, | ||
370 | }; | ||
371 | |||
372 | static void __init vpac270_udc_init(void) | ||
373 | { | ||
374 | pxa_set_udc_info(&vpac270_udc_info); | ||
375 | platform_device_register(&vpac270_gpio_vbus); | ||
376 | } | ||
377 | #else | ||
378 | static inline void vpac270_udc_init(void) {} | ||
379 | #endif | ||
380 | |||
381 | /****************************************************************************** | ||
382 | * Ethernet | ||
383 | ******************************************************************************/ | ||
384 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
385 | static struct resource vpac270_dm9000_resources[] = { | ||
386 | [0] = { | ||
387 | .start = PXA_CS2_PHYS + 0x300, | ||
388 | .end = PXA_CS2_PHYS + 0x303, | ||
389 | .flags = IORESOURCE_MEM, | ||
390 | }, | ||
391 | [1] = { | ||
392 | .start = PXA_CS2_PHYS + 0x304, | ||
393 | .end = PXA_CS2_PHYS + 0x343, | ||
394 | .flags = IORESOURCE_MEM, | ||
395 | }, | ||
396 | [2] = { | ||
397 | .start = IRQ_GPIO(GPIO114_VPAC270_ETH_IRQ), | ||
398 | .end = IRQ_GPIO(GPIO114_VPAC270_ETH_IRQ), | ||
399 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | ||
400 | }, | ||
401 | }; | ||
402 | |||
403 | static struct dm9000_plat_data vpac270_dm9000_platdata = { | ||
404 | .flags = DM9000_PLATF_32BITONLY, | ||
405 | }; | ||
406 | |||
407 | static struct platform_device vpac270_dm9000_device = { | ||
408 | .name = "dm9000", | ||
409 | .id = -1, | ||
410 | .num_resources = ARRAY_SIZE(vpac270_dm9000_resources), | ||
411 | .resource = vpac270_dm9000_resources, | ||
412 | .dev = { | ||
413 | .platform_data = &vpac270_dm9000_platdata, | ||
414 | } | ||
415 | }; | ||
416 | |||
417 | static void __init vpac270_eth_init(void) | ||
418 | { | ||
419 | platform_device_register(&vpac270_dm9000_device); | ||
420 | } | ||
421 | #else | ||
422 | static inline void vpac270_eth_init(void) {} | ||
423 | #endif | ||
424 | |||
425 | /****************************************************************************** | ||
426 | * Audio and Touchscreen | ||
427 | ******************************************************************************/ | ||
428 | #if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ | ||
429 | defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) | ||
430 | static pxa2xx_audio_ops_t vpac270_ac97_pdata = { | ||
431 | .reset_gpio = 95, | ||
432 | }; | ||
433 | |||
434 | static struct ucb1400_pdata vpac270_ucb1400_pdata = { | ||
435 | .irq = IRQ_GPIO(GPIO113_VPAC270_TS_IRQ), | ||
436 | }; | ||
437 | |||
438 | static struct platform_device vpac270_ucb1400_device = { | ||
439 | .name = "ucb1400_core", | ||
440 | .id = -1, | ||
441 | .dev = { | ||
442 | .platform_data = &vpac270_ucb1400_pdata, | ||
443 | }, | ||
444 | }; | ||
445 | |||
446 | static void __init vpac270_ts_init(void) | ||
447 | { | ||
448 | pxa_set_ac97_info(&vpac270_ac97_pdata); | ||
449 | platform_device_register(&vpac270_ucb1400_device); | ||
450 | } | ||
451 | #else | ||
452 | static inline void vpac270_ts_init(void) {} | ||
453 | #endif | ||
454 | |||
455 | /****************************************************************************** | ||
456 | * RTC | ||
457 | ******************************************************************************/ | ||
458 | #if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE) | ||
459 | static struct i2c_board_info __initdata vpac270_i2c_devs[] = { | ||
460 | { | ||
461 | I2C_BOARD_INFO("ds1339", 0x68), | ||
462 | }, | ||
463 | }; | ||
464 | |||
465 | static void __init vpac270_rtc_init(void) | ||
466 | { | ||
467 | pxa_set_i2c_info(NULL); | ||
468 | i2c_register_board_info(0, ARRAY_AND_SIZE(vpac270_i2c_devs)); | ||
469 | } | ||
470 | #else | ||
471 | static inline void vpac270_rtc_init(void) {} | ||
472 | #endif | ||
473 | |||
474 | /****************************************************************************** | ||
475 | * Framebuffer | ||
476 | ******************************************************************************/ | ||
477 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) | ||
478 | static struct pxafb_mode_info vpac270_lcd_modes[] = { | ||
479 | { | ||
480 | .pixclock = 57692, | ||
481 | .xres = 640, | ||
482 | .yres = 480, | ||
483 | .bpp = 32, | ||
484 | .depth = 18, | ||
485 | |||
486 | .left_margin = 144, | ||
487 | .right_margin = 32, | ||
488 | .upper_margin = 13, | ||
489 | .lower_margin = 30, | ||
490 | |||
491 | .hsync_len = 32, | ||
492 | .vsync_len = 2, | ||
493 | |||
494 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
495 | }, | ||
496 | }; | ||
497 | |||
498 | static struct pxafb_mach_info vpac270_lcd_screen = { | ||
499 | .modes = vpac270_lcd_modes, | ||
500 | .num_modes = ARRAY_SIZE(vpac270_lcd_modes), | ||
501 | .lcd_conn = LCD_COLOR_TFT_18BPP, | ||
502 | }; | ||
503 | |||
504 | static void vpac270_lcd_power(int on, struct fb_var_screeninfo *info) | ||
505 | { | ||
506 | gpio_set_value(GPIO81_VPAC270_BKL_ON, on); | ||
507 | } | ||
508 | |||
509 | static void __init vpac270_lcd_init(void) | ||
510 | { | ||
511 | int ret; | ||
512 | |||
513 | ret = gpio_request(GPIO81_VPAC270_BKL_ON, "BKL-ON"); | ||
514 | if (ret) { | ||
515 | pr_err("Requesting BKL-ON GPIO failed!\n"); | ||
516 | goto err; | ||
517 | } | ||
518 | |||
519 | ret = gpio_direction_output(GPIO81_VPAC270_BKL_ON, 1); | ||
520 | if (ret) { | ||
521 | pr_err("Setting BKL-ON GPIO direction failed!\n"); | ||
522 | goto err2; | ||
523 | } | ||
524 | |||
525 | vpac270_lcd_screen.pxafb_lcd_power = vpac270_lcd_power; | ||
526 | set_pxa_fb_info(&vpac270_lcd_screen); | ||
527 | return; | ||
528 | |||
529 | err2: | ||
530 | gpio_free(GPIO81_VPAC270_BKL_ON); | ||
531 | err: | ||
532 | return; | ||
533 | } | ||
534 | #else | ||
535 | static inline void vpac270_lcd_init(void) {} | ||
536 | #endif | ||
537 | |||
538 | /****************************************************************************** | ||
539 | * PATA IDE | ||
540 | ******************************************************************************/ | ||
541 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
542 | static struct pata_platform_info vpac270_pata_pdata = { | ||
543 | .ioport_shift = 1, | ||
544 | .irq_flags = IRQF_TRIGGER_RISING, | ||
545 | }; | ||
546 | |||
547 | static struct resource vpac270_ide_resources[] = { | ||
548 | [0] = { /* I/O Base address */ | ||
549 | .start = PXA_CS3_PHYS + 0x120, | ||
550 | .end = PXA_CS3_PHYS + 0x13f, | ||
551 | .flags = IORESOURCE_MEM | ||
552 | }, | ||
553 | [1] = { /* CTL Base address */ | ||
554 | .start = PXA_CS3_PHYS + 0x15c, | ||
555 | .end = PXA_CS3_PHYS + 0x15f, | ||
556 | .flags = IORESOURCE_MEM | ||
557 | }, | ||
558 | [2] = { /* IDE IRQ pin */ | ||
559 | .start = gpio_to_irq(GPIO36_VPAC270_IDE_IRQ), | ||
560 | .end = gpio_to_irq(GPIO36_VPAC270_IDE_IRQ), | ||
561 | .flags = IORESOURCE_IRQ | ||
562 | } | ||
563 | }; | ||
564 | |||
565 | static struct platform_device vpac270_ide_device = { | ||
566 | .name = "pata_platform", | ||
567 | .num_resources = ARRAY_SIZE(vpac270_ide_resources), | ||
568 | .resource = vpac270_ide_resources, | ||
569 | .dev = { | ||
570 | .platform_data = &vpac270_pata_pdata, | ||
571 | } | ||
572 | }; | ||
573 | |||
574 | static void __init vpac270_ide_init(void) | ||
575 | { | ||
576 | platform_device_register(&vpac270_ide_device); | ||
577 | } | ||
578 | #else | ||
579 | static inline void vpac270_ide_init(void) {} | ||
580 | #endif | ||
581 | |||
582 | /****************************************************************************** | ||
583 | * Machine init | ||
584 | ******************************************************************************/ | ||
585 | static void __init vpac270_init(void) | ||
586 | { | ||
587 | pxa2xx_mfp_config(ARRAY_AND_SIZE(vpac270_pin_config)); | ||
588 | |||
589 | pxa_set_ffuart_info(NULL); | ||
590 | pxa_set_btuart_info(NULL); | ||
591 | pxa_set_stuart_info(NULL); | ||
592 | |||
593 | vpac270_lcd_init(); | ||
594 | vpac270_mmc_init(); | ||
595 | vpac270_nor_init(); | ||
596 | vpac270_onenand_init(); | ||
597 | vpac270_leds_init(); | ||
598 | vpac270_keys_init(); | ||
599 | vpac270_uhc_init(); | ||
600 | vpac270_udc_init(); | ||
601 | vpac270_eth_init(); | ||
602 | vpac270_ts_init(); | ||
603 | vpac270_rtc_init(); | ||
604 | vpac270_ide_init(); | ||
605 | } | ||
606 | |||
607 | MACHINE_START(VPAC270, "Voipac PXA270") | ||
608 | .phys_io = 0x40000000, | ||
609 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
610 | .boot_params = 0xa0000100, | ||
611 | .map_io = pxa_map_io, | ||
612 | .init_irq = pxa27x_init_irq, | ||
613 | .timer = &pxa_timer, | ||
614 | .init_machine = vpac270_init | ||
615 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c new file mode 100644 index 000000000000..f5d1ae3db3a4 --- /dev/null +++ b/arch/arm/mach-pxa/z2.c | |||
@@ -0,0 +1,609 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/z2.c | ||
3 | * | ||
4 | * Support for the Zipit Z2 Handheld device. | ||
5 | * | ||
6 | * Author: Ken McGuire | ||
7 | * Created: Jan 25, 2009 | ||
8 | * Based on mainstone.c as modified for the Zipit Z2. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include <linux/platform_device.h> | ||
16 | #include <linux/mtd/mtd.h> | ||
17 | #include <linux/mtd/partitions.h> | ||
18 | #include <linux/pwm_backlight.h> | ||
19 | #include <linux/dma-mapping.h> | ||
20 | #include <linux/spi/spi.h> | ||
21 | #include <linux/spi/libertas_spi.h> | ||
22 | #include <linux/spi/lms283gf05.h> | ||
23 | #include <linux/power_supply.h> | ||
24 | #include <linux/mtd/physmap.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <linux/gpio_keys.h> | ||
27 | #include <linux/delay.h> | ||
28 | |||
29 | #include <asm/mach-types.h> | ||
30 | #include <asm/mach/arch.h> | ||
31 | |||
32 | #include <mach/pxa27x.h> | ||
33 | #include <mach/mfp-pxa27x.h> | ||
34 | #include <mach/z2.h> | ||
35 | #include <mach/pxafb.h> | ||
36 | #include <mach/mmc.h> | ||
37 | #include <mach/pxa27x_keypad.h> | ||
38 | #include <mach/pxa2xx_spi.h> | ||
39 | |||
40 | #include <plat/i2c.h> | ||
41 | |||
42 | #include "generic.h" | ||
43 | #include "devices.h" | ||
44 | |||
45 | /****************************************************************************** | ||
46 | * Pin configuration | ||
47 | ******************************************************************************/ | ||
48 | static unsigned long z2_pin_config[] = { | ||
49 | |||
50 | /* LCD - 16bpp Active TFT */ | ||
51 | GPIO58_LCD_LDD_0, | ||
52 | GPIO59_LCD_LDD_1, | ||
53 | GPIO60_LCD_LDD_2, | ||
54 | GPIO61_LCD_LDD_3, | ||
55 | GPIO62_LCD_LDD_4, | ||
56 | GPIO63_LCD_LDD_5, | ||
57 | GPIO64_LCD_LDD_6, | ||
58 | GPIO65_LCD_LDD_7, | ||
59 | GPIO66_LCD_LDD_8, | ||
60 | GPIO67_LCD_LDD_9, | ||
61 | GPIO68_LCD_LDD_10, | ||
62 | GPIO69_LCD_LDD_11, | ||
63 | GPIO70_LCD_LDD_12, | ||
64 | GPIO71_LCD_LDD_13, | ||
65 | GPIO72_LCD_LDD_14, | ||
66 | GPIO73_LCD_LDD_15, | ||
67 | GPIO74_LCD_FCLK, | ||
68 | GPIO75_LCD_LCLK, | ||
69 | GPIO76_LCD_PCLK, | ||
70 | GPIO77_LCD_BIAS, | ||
71 | GPIO19_GPIO, /* LCD reset */ | ||
72 | GPIO88_GPIO, /* LCD chipselect */ | ||
73 | |||
74 | /* PWM */ | ||
75 | GPIO115_PWM1_OUT, /* Keypad Backlight */ | ||
76 | GPIO11_PWM2_OUT, /* LCD Backlight */ | ||
77 | |||
78 | /* MMC */ | ||
79 | GPIO32_MMC_CLK, | ||
80 | GPIO112_MMC_CMD, | ||
81 | GPIO92_MMC_DAT_0, | ||
82 | GPIO109_MMC_DAT_1, | ||
83 | GPIO110_MMC_DAT_2, | ||
84 | GPIO111_MMC_DAT_3, | ||
85 | GPIO96_GPIO, /* SD detect */ | ||
86 | |||
87 | /* STUART */ | ||
88 | GPIO46_STUART_RXD, | ||
89 | GPIO47_STUART_TXD, | ||
90 | |||
91 | /* Keypad */ | ||
92 | GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, | ||
93 | GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, | ||
94 | GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, | ||
95 | GPIO34_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, | ||
96 | GPIO38_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, | ||
97 | GPIO16_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, | ||
98 | GPIO17_KP_MKIN_6 | WAKEUP_ON_LEVEL_HIGH, | ||
99 | GPIO103_KP_MKOUT_0, | ||
100 | GPIO104_KP_MKOUT_1, | ||
101 | GPIO105_KP_MKOUT_2, | ||
102 | GPIO106_KP_MKOUT_3, | ||
103 | GPIO107_KP_MKOUT_4, | ||
104 | GPIO108_KP_MKOUT_5, | ||
105 | GPIO35_KP_MKOUT_6, | ||
106 | GPIO41_KP_MKOUT_7, | ||
107 | |||
108 | /* I2C */ | ||
109 | GPIO117_I2C_SCL, | ||
110 | GPIO118_I2C_SDA, | ||
111 | |||
112 | /* SSP1 */ | ||
113 | GPIO23_SSP1_SCLK, /* SSP1_SCK */ | ||
114 | GPIO25_SSP1_TXD, /* SSP1_TXD */ | ||
115 | GPIO26_SSP1_RXD, /* SSP1_RXD */ | ||
116 | |||
117 | /* SSP2 */ | ||
118 | GPIO22_SSP2_SCLK, /* SSP2_SCK */ | ||
119 | GPIO13_SSP2_TXD, /* SSP2_TXD */ | ||
120 | GPIO40_SSP2_RXD, /* SSP2_RXD */ | ||
121 | |||
122 | /* LEDs */ | ||
123 | GPIO10_GPIO, /* WiFi LED */ | ||
124 | GPIO83_GPIO, /* Charging LED */ | ||
125 | GPIO85_GPIO, /* Charged LED */ | ||
126 | |||
127 | /* I2S */ | ||
128 | GPIO28_I2S_BITCLK_OUT, | ||
129 | GPIO29_I2S_SDATA_IN, | ||
130 | GPIO30_I2S_SDATA_OUT, | ||
131 | GPIO31_I2S_SYNC, | ||
132 | GPIO113_I2S_SYSCLK, | ||
133 | |||
134 | /* MISC */ | ||
135 | GPIO0_GPIO, /* AC power detect */ | ||
136 | GPIO1_GPIO, /* Power button */ | ||
137 | GPIO37_GPIO, /* Headphone detect */ | ||
138 | GPIO98_GPIO, /* Lid switch */ | ||
139 | GPIO14_GPIO, /* WiFi Reset */ | ||
140 | GPIO15_GPIO, /* WiFi Power */ | ||
141 | GPIO24_GPIO, /* WiFi CS */ | ||
142 | GPIO36_GPIO, /* WiFi IRQ */ | ||
143 | GPIO88_GPIO, /* LCD CS */ | ||
144 | }; | ||
145 | |||
146 | /****************************************************************************** | ||
147 | * NOR Flash | ||
148 | ******************************************************************************/ | ||
149 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | ||
150 | static struct resource z2_flash_resource = { | ||
151 | .start = PXA_CS0_PHYS, | ||
152 | .end = PXA_CS0_PHYS + SZ_8M - 1, | ||
153 | .flags = IORESOURCE_MEM, | ||
154 | }; | ||
155 | |||
156 | static struct mtd_partition z2_flash_parts[] = { | ||
157 | { | ||
158 | .name = "U-Boot Bootloader", | ||
159 | .offset = 0x0, | ||
160 | .size = 0x20000, | ||
161 | }, | ||
162 | { | ||
163 | .name = "Linux Kernel", | ||
164 | .offset = 0x20000, | ||
165 | .size = 0x220000, | ||
166 | }, | ||
167 | { | ||
168 | .name = "Filesystem", | ||
169 | .offset = 0x240000, | ||
170 | .size = 0x5b0000, | ||
171 | }, | ||
172 | { | ||
173 | .name = "U-Boot Environment", | ||
174 | .offset = 0x7f0000, | ||
175 | .size = MTDPART_SIZ_FULL, | ||
176 | }, | ||
177 | }; | ||
178 | |||
179 | static struct physmap_flash_data z2_flash_data = { | ||
180 | .width = 2, | ||
181 | .parts = z2_flash_parts, | ||
182 | .nr_parts = ARRAY_SIZE(z2_flash_parts), | ||
183 | }; | ||
184 | |||
185 | static struct platform_device z2_flash = { | ||
186 | .name = "physmap-flash", | ||
187 | .id = -1, | ||
188 | .resource = &z2_flash_resource, | ||
189 | .num_resources = 1, | ||
190 | .dev = { | ||
191 | .platform_data = &z2_flash_data, | ||
192 | }, | ||
193 | }; | ||
194 | |||
195 | static void __init z2_nor_init(void) | ||
196 | { | ||
197 | platform_device_register(&z2_flash); | ||
198 | } | ||
199 | #else | ||
200 | static inline void z2_nor_init(void) {} | ||
201 | #endif | ||
202 | |||
203 | /****************************************************************************** | ||
204 | * Backlight | ||
205 | ******************************************************************************/ | ||
206 | #if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE) | ||
207 | static struct platform_pwm_backlight_data z2_backlight_data[] = { | ||
208 | [0] = { | ||
209 | /* Keypad Backlight */ | ||
210 | .pwm_id = 1, | ||
211 | .max_brightness = 1023, | ||
212 | .dft_brightness = 512, | ||
213 | .pwm_period_ns = 1260320, | ||
214 | }, | ||
215 | [1] = { | ||
216 | /* LCD Backlight */ | ||
217 | .pwm_id = 2, | ||
218 | .max_brightness = 1023, | ||
219 | .dft_brightness = 512, | ||
220 | .pwm_period_ns = 1260320, | ||
221 | }, | ||
222 | }; | ||
223 | |||
224 | static struct platform_device z2_backlight_devices[2] = { | ||
225 | { | ||
226 | .name = "pwm-backlight", | ||
227 | .id = 0, | ||
228 | .dev = { | ||
229 | .platform_data = &z2_backlight_data[1], | ||
230 | }, | ||
231 | }, | ||
232 | { | ||
233 | .name = "pwm-backlight", | ||
234 | .id = 1, | ||
235 | .dev = { | ||
236 | .platform_data = &z2_backlight_data[0], | ||
237 | }, | ||
238 | }, | ||
239 | }; | ||
240 | static void __init z2_pwm_init(void) | ||
241 | { | ||
242 | platform_device_register(&z2_backlight_devices[0]); | ||
243 | platform_device_register(&z2_backlight_devices[1]); | ||
244 | } | ||
245 | #else | ||
246 | static inline void z2_pwm_init(void) {} | ||
247 | #endif | ||
248 | |||
249 | /****************************************************************************** | ||
250 | * Framebuffer | ||
251 | ******************************************************************************/ | ||
252 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) | ||
253 | static struct pxafb_mode_info z2_lcd_modes[] = { | ||
254 | { | ||
255 | .pixclock = 192000, | ||
256 | .xres = 240, | ||
257 | .yres = 320, | ||
258 | .bpp = 16, | ||
259 | |||
260 | .left_margin = 4, | ||
261 | .right_margin = 8, | ||
262 | .upper_margin = 4, | ||
263 | .lower_margin = 8, | ||
264 | |||
265 | .hsync_len = 4, | ||
266 | .vsync_len = 4, | ||
267 | }, | ||
268 | }; | ||
269 | |||
270 | static struct pxafb_mach_info z2_lcd_screen = { | ||
271 | .modes = z2_lcd_modes, | ||
272 | .num_modes = ARRAY_SIZE(z2_lcd_modes), | ||
273 | .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_BIAS_ACTIVE_LOW | | ||
274 | LCD_ALTERNATE_MAPPING, | ||
275 | }; | ||
276 | |||
277 | static void __init z2_lcd_init(void) | ||
278 | { | ||
279 | set_pxa_fb_info(&z2_lcd_screen); | ||
280 | } | ||
281 | #else | ||
282 | static inline void z2_lcd_init(void) {} | ||
283 | #endif | ||
284 | |||
285 | /****************************************************************************** | ||
286 | * SD/MMC card controller | ||
287 | ******************************************************************************/ | ||
288 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) | ||
289 | static struct pxamci_platform_data z2_mci_platform_data = { | ||
290 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
291 | .gpio_card_detect = GPIO96_ZIPITZ2_SD_DETECT, | ||
292 | .gpio_power = -1, | ||
293 | .gpio_card_ro = -1, | ||
294 | .detect_delay_ms = 200, | ||
295 | }; | ||
296 | |||
297 | static void __init z2_mmc_init(void) | ||
298 | { | ||
299 | pxa_set_mci_info(&z2_mci_platform_data); | ||
300 | } | ||
301 | #else | ||
302 | static inline void z2_mmc_init(void) {} | ||
303 | #endif | ||
304 | |||
305 | /****************************************************************************** | ||
306 | * LEDs | ||
307 | ******************************************************************************/ | ||
308 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | ||
309 | struct gpio_led z2_gpio_leds[] = { | ||
310 | { | ||
311 | .name = "z2:green:wifi", | ||
312 | .default_trigger = "none", | ||
313 | .gpio = GPIO10_ZIPITZ2_LED_WIFI, | ||
314 | .active_low = 1, | ||
315 | }, { | ||
316 | .name = "z2:green:charged", | ||
317 | .default_trigger = "none", | ||
318 | .gpio = GPIO85_ZIPITZ2_LED_CHARGED, | ||
319 | .active_low = 1, | ||
320 | }, { | ||
321 | .name = "z2:amber:charging", | ||
322 | .default_trigger = "none", | ||
323 | .gpio = GPIO83_ZIPITZ2_LED_CHARGING, | ||
324 | .active_low = 1, | ||
325 | }, | ||
326 | }; | ||
327 | |||
328 | static struct gpio_led_platform_data z2_gpio_led_info = { | ||
329 | .leds = z2_gpio_leds, | ||
330 | .num_leds = ARRAY_SIZE(z2_gpio_leds), | ||
331 | }; | ||
332 | |||
333 | static struct platform_device z2_leds = { | ||
334 | .name = "leds-gpio", | ||
335 | .id = -1, | ||
336 | .dev = { | ||
337 | .platform_data = &z2_gpio_led_info, | ||
338 | } | ||
339 | }; | ||
340 | |||
341 | static void __init z2_leds_init(void) | ||
342 | { | ||
343 | platform_device_register(&z2_leds); | ||
344 | } | ||
345 | #else | ||
346 | static inline void z2_leds_init(void) {} | ||
347 | #endif | ||
348 | |||
349 | /****************************************************************************** | ||
350 | * GPIO keyboard | ||
351 | ******************************************************************************/ | ||
352 | #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) | ||
353 | static unsigned int z2_matrix_keys[] = { | ||
354 | KEY(0, 0, KEY_OPTION), | ||
355 | KEY(1, 0, KEY_UP), | ||
356 | KEY(2, 0, KEY_DOWN), | ||
357 | KEY(3, 0, KEY_LEFT), | ||
358 | KEY(4, 0, KEY_RIGHT), | ||
359 | KEY(5, 0, KEY_END), | ||
360 | KEY(6, 0, KEY_KPPLUS), | ||
361 | |||
362 | KEY(0, 1, KEY_HOME), | ||
363 | KEY(1, 1, KEY_Q), | ||
364 | KEY(2, 1, KEY_I), | ||
365 | KEY(3, 1, KEY_G), | ||
366 | KEY(4, 1, KEY_X), | ||
367 | KEY(5, 1, KEY_ENTER), | ||
368 | KEY(6, 1, KEY_KPMINUS), | ||
369 | |||
370 | KEY(0, 2, KEY_PAGEUP), | ||
371 | KEY(1, 2, KEY_W), | ||
372 | KEY(2, 2, KEY_O), | ||
373 | KEY(3, 2, KEY_H), | ||
374 | KEY(4, 2, KEY_C), | ||
375 | KEY(5, 2, KEY_LEFTALT), | ||
376 | |||
377 | KEY(0, 3, KEY_PAGEDOWN), | ||
378 | KEY(1, 3, KEY_E), | ||
379 | KEY(2, 3, KEY_P), | ||
380 | KEY(3, 3, KEY_J), | ||
381 | KEY(4, 3, KEY_V), | ||
382 | KEY(5, 3, KEY_LEFTSHIFT), | ||
383 | |||
384 | KEY(0, 4, KEY_ESC), | ||
385 | KEY(1, 4, KEY_R), | ||
386 | KEY(2, 4, KEY_A), | ||
387 | KEY(3, 4, KEY_K), | ||
388 | KEY(4, 4, KEY_B), | ||
389 | KEY(5, 4, KEY_LEFTCTRL), | ||
390 | |||
391 | KEY(0, 5, KEY_TAB), | ||
392 | KEY(1, 5, KEY_T), | ||
393 | KEY(2, 5, KEY_S), | ||
394 | KEY(3, 5, KEY_L), | ||
395 | KEY(4, 5, KEY_N), | ||
396 | KEY(5, 5, KEY_SPACE), | ||
397 | |||
398 | KEY(0, 6, KEY_STOPCD), | ||
399 | KEY(1, 6, KEY_Y), | ||
400 | KEY(2, 6, KEY_D), | ||
401 | KEY(3, 6, KEY_BACKSPACE), | ||
402 | KEY(4, 6, KEY_M), | ||
403 | KEY(5, 6, KEY_COMMA), | ||
404 | |||
405 | KEY(0, 7, KEY_PLAYCD), | ||
406 | KEY(1, 7, KEY_U), | ||
407 | KEY(2, 7, KEY_F), | ||
408 | KEY(3, 7, KEY_Z), | ||
409 | KEY(4, 7, KEY_SEMICOLON), | ||
410 | KEY(5, 7, KEY_DOT), | ||
411 | }; | ||
412 | |||
413 | static struct pxa27x_keypad_platform_data z2_keypad_platform_data = { | ||
414 | .matrix_key_rows = 7, | ||
415 | .matrix_key_cols = 8, | ||
416 | .matrix_key_map = z2_matrix_keys, | ||
417 | .matrix_key_map_size = ARRAY_SIZE(z2_matrix_keys), | ||
418 | |||
419 | .debounce_interval = 30, | ||
420 | }; | ||
421 | |||
422 | static void __init z2_mkp_init(void) | ||
423 | { | ||
424 | pxa_set_keypad_info(&z2_keypad_platform_data); | ||
425 | } | ||
426 | #else | ||
427 | static inline void z2_mkp_init(void) {} | ||
428 | #endif | ||
429 | |||
430 | /****************************************************************************** | ||
431 | * GPIO keys | ||
432 | ******************************************************************************/ | ||
433 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
434 | static struct gpio_keys_button z2_pxa_buttons[] = { | ||
435 | {KEY_POWER, GPIO1_ZIPITZ2_POWER_BUTTON, 0, "Power Button" }, | ||
436 | {KEY_CLOSE, GPIO98_ZIPITZ2_LID_BUTTON, 0, "Lid Button" }, | ||
437 | }; | ||
438 | |||
439 | static struct gpio_keys_platform_data z2_pxa_keys_data = { | ||
440 | .buttons = z2_pxa_buttons, | ||
441 | .nbuttons = ARRAY_SIZE(z2_pxa_buttons), | ||
442 | }; | ||
443 | |||
444 | static struct platform_device z2_pxa_keys = { | ||
445 | .name = "gpio-keys", | ||
446 | .id = -1, | ||
447 | .dev = { | ||
448 | .platform_data = &z2_pxa_keys_data, | ||
449 | }, | ||
450 | }; | ||
451 | |||
452 | static void __init z2_keys_init(void) | ||
453 | { | ||
454 | platform_device_register(&z2_pxa_keys); | ||
455 | } | ||
456 | #else | ||
457 | static inline void z2_keys_init(void) {} | ||
458 | #endif | ||
459 | |||
460 | /****************************************************************************** | ||
461 | * SSP Devices - WiFi and LCD control | ||
462 | ******************************************************************************/ | ||
463 | #if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) | ||
464 | /* WiFi */ | ||
465 | static int z2_lbs_spi_setup(struct spi_device *spi) | ||
466 | { | ||
467 | int ret = 0; | ||
468 | |||
469 | ret = gpio_request(GPIO15_ZIPITZ2_WIFI_POWER, "WiFi Power"); | ||
470 | if (ret) | ||
471 | goto err; | ||
472 | |||
473 | ret = gpio_direction_output(GPIO15_ZIPITZ2_WIFI_POWER, 1); | ||
474 | if (ret) | ||
475 | goto err2; | ||
476 | |||
477 | ret = gpio_request(GPIO14_ZIPITZ2_WIFI_RESET, "WiFi Reset"); | ||
478 | if (ret) | ||
479 | goto err2; | ||
480 | |||
481 | ret = gpio_direction_output(GPIO14_ZIPITZ2_WIFI_RESET, 0); | ||
482 | if (ret) | ||
483 | goto err3; | ||
484 | |||
485 | /* Reset the card */ | ||
486 | mdelay(180); | ||
487 | gpio_set_value(GPIO14_ZIPITZ2_WIFI_RESET, 1); | ||
488 | mdelay(20); | ||
489 | |||
490 | spi->bits_per_word = 16; | ||
491 | spi->mode = SPI_MODE_2, | ||
492 | |||
493 | spi_setup(spi); | ||
494 | |||
495 | return 0; | ||
496 | |||
497 | err3: | ||
498 | gpio_free(GPIO14_ZIPITZ2_WIFI_RESET); | ||
499 | err2: | ||
500 | gpio_free(GPIO15_ZIPITZ2_WIFI_POWER); | ||
501 | err: | ||
502 | return ret; | ||
503 | }; | ||
504 | |||
505 | static int z2_lbs_spi_teardown(struct spi_device *spi) | ||
506 | { | ||
507 | gpio_set_value(GPIO14_ZIPITZ2_WIFI_RESET, 0); | ||
508 | gpio_set_value(GPIO15_ZIPITZ2_WIFI_POWER, 0); | ||
509 | gpio_free(GPIO14_ZIPITZ2_WIFI_RESET); | ||
510 | gpio_free(GPIO15_ZIPITZ2_WIFI_POWER); | ||
511 | return 0; | ||
512 | |||
513 | }; | ||
514 | |||
515 | static struct pxa2xx_spi_chip z2_lbs_chip_info = { | ||
516 | .rx_threshold = 8, | ||
517 | .tx_threshold = 8, | ||
518 | .timeout = 1000, | ||
519 | .gpio_cs = GPIO24_ZIPITZ2_WIFI_CS, | ||
520 | }; | ||
521 | |||
522 | static struct libertas_spi_platform_data z2_lbs_pdata = { | ||
523 | .use_dummy_writes = 1, | ||
524 | .setup = z2_lbs_spi_setup, | ||
525 | .teardown = z2_lbs_spi_teardown, | ||
526 | }; | ||
527 | |||
528 | /* LCD */ | ||
529 | static struct pxa2xx_spi_chip lms283_chip_info = { | ||
530 | .rx_threshold = 1, | ||
531 | .tx_threshold = 1, | ||
532 | .timeout = 64, | ||
533 | .gpio_cs = GPIO88_ZIPITZ2_LCD_CS, | ||
534 | }; | ||
535 | |||
536 | static const struct lms283gf05_pdata lms283_pdata = { | ||
537 | .reset_gpio = GPIO19_ZIPITZ2_LCD_RESET, | ||
538 | }; | ||
539 | |||
540 | static struct spi_board_info spi_board_info[] __initdata = { | ||
541 | { | ||
542 | .modalias = "libertas_spi", | ||
543 | .platform_data = &z2_lbs_pdata, | ||
544 | .controller_data = &z2_lbs_chip_info, | ||
545 | .irq = gpio_to_irq(GPIO36_ZIPITZ2_WIFI_IRQ), | ||
546 | .max_speed_hz = 13000000, | ||
547 | .bus_num = 1, | ||
548 | .chip_select = 0, | ||
549 | }, | ||
550 | { | ||
551 | .modalias = "lms283gf05", | ||
552 | .controller_data = &lms283_chip_info, | ||
553 | .platform_data = &lms283_pdata, | ||
554 | .max_speed_hz = 400000, | ||
555 | .bus_num = 2, | ||
556 | .chip_select = 0, | ||
557 | }, | ||
558 | }; | ||
559 | |||
560 | static struct pxa2xx_spi_master pxa_ssp1_master_info = { | ||
561 | .clock_enable = CKEN_SSP, | ||
562 | .num_chipselect = 1, | ||
563 | .enable_dma = 1, | ||
564 | }; | ||
565 | |||
566 | static struct pxa2xx_spi_master pxa_ssp2_master_info = { | ||
567 | .clock_enable = CKEN_SSP2, | ||
568 | .num_chipselect = 1, | ||
569 | }; | ||
570 | |||
571 | static void __init z2_spi_init(void) | ||
572 | { | ||
573 | pxa2xx_set_spi_info(1, &pxa_ssp1_master_info); | ||
574 | pxa2xx_set_spi_info(2, &pxa_ssp2_master_info); | ||
575 | spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); | ||
576 | } | ||
577 | #else | ||
578 | static inline void z2_spi_init(void) {} | ||
579 | #endif | ||
580 | |||
581 | /****************************************************************************** | ||
582 | * Machine init | ||
583 | ******************************************************************************/ | ||
584 | static void __init z2_init(void) | ||
585 | { | ||
586 | pxa2xx_mfp_config(ARRAY_AND_SIZE(z2_pin_config)); | ||
587 | |||
588 | z2_lcd_init(); | ||
589 | z2_mmc_init(); | ||
590 | z2_mkp_init(); | ||
591 | |||
592 | pxa_set_i2c_info(NULL); | ||
593 | |||
594 | z2_spi_init(); | ||
595 | z2_nor_init(); | ||
596 | z2_pwm_init(); | ||
597 | z2_leds_init(); | ||
598 | z2_keys_init(); | ||
599 | } | ||
600 | |||
601 | MACHINE_START(ZIPIT2, "Zipit Z2") | ||
602 | .phys_io = 0x40000000, | ||
603 | .boot_params = 0xa0000100, | ||
604 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
605 | .map_io = pxa_map_io, | ||
606 | .init_irq = pxa27x_init_irq, | ||
607 | .timer = &pxa_timer, | ||
608 | .init_machine = z2_init, | ||
609 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c index 39896d883584..3680f6a90623 100644 --- a/arch/arm/mach-pxa/zeus.c +++ b/arch/arm/mach-pxa/zeus.c | |||
@@ -644,7 +644,7 @@ static struct pxafb_mach_info zeus_fb_info = { | |||
644 | 644 | ||
645 | static struct pxamci_platform_data zeus_mci_platform_data = { | 645 | static struct pxamci_platform_data zeus_mci_platform_data = { |
646 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 646 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
647 | .detect_delay = HZ/4, | 647 | .detect_delay_ms = 250, |
648 | .gpio_card_detect = ZEUS_MMC_CD_GPIO, | 648 | .gpio_card_detect = ZEUS_MMC_CD_GPIO, |
649 | .gpio_card_ro = ZEUS_MMC_WP_GPIO, | 649 | .gpio_card_ro = ZEUS_MMC_WP_GPIO, |
650 | .gpio_card_ro_invert = 1, | 650 | .gpio_card_ro_invert = 1, |
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c index 2b4043c04d0c..c479cbecf784 100644 --- a/arch/arm/mach-pxa/zylonite.c +++ b/arch/arm/mach-pxa/zylonite.c | |||
@@ -218,7 +218,7 @@ static inline void zylonite_init_lcd(void) {} | |||
218 | 218 | ||
219 | #if defined(CONFIG_MMC) | 219 | #if defined(CONFIG_MMC) |
220 | static struct pxamci_platform_data zylonite_mci_platform_data = { | 220 | static struct pxamci_platform_data zylonite_mci_platform_data = { |
221 | .detect_delay = 20, | 221 | .detect_delay_ms= 200, |
222 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 222 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
223 | .gpio_card_detect = EXT_GPIO(0), | 223 | .gpio_card_detect = EXT_GPIO(0), |
224 | .gpio_card_ro = EXT_GPIO(2), | 224 | .gpio_card_ro = EXT_GPIO(2), |
@@ -226,7 +226,7 @@ static struct pxamci_platform_data zylonite_mci_platform_data = { | |||
226 | }; | 226 | }; |
227 | 227 | ||
228 | static struct pxamci_platform_data zylonite_mci2_platform_data = { | 228 | static struct pxamci_platform_data zylonite_mci2_platform_data = { |
229 | .detect_delay = 20, | 229 | .detect_delay_ms= 200, |
230 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 230 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
231 | .gpio_card_detect = EXT_GPIO(1), | 231 | .gpio_card_detect = EXT_GPIO(1), |
232 | .gpio_card_ro = EXT_GPIO(3), | 232 | .gpio_card_ro = EXT_GPIO(3), |
@@ -234,7 +234,7 @@ static struct pxamci_platform_data zylonite_mci2_platform_data = { | |||
234 | }; | 234 | }; |
235 | 235 | ||
236 | static struct pxamci_platform_data zylonite_mci3_platform_data = { | 236 | static struct pxamci_platform_data zylonite_mci3_platform_data = { |
237 | .detect_delay = 20, | 237 | .detect_delay_ms= 200, |
238 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 238 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
239 | .gpio_card_detect = EXT_GPIO(30), | 239 | .gpio_card_detect = EXT_GPIO(30), |
240 | .gpio_card_ro = EXT_GPIO(31), | 240 | .gpio_card_ro = EXT_GPIO(31), |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index d3022dabb4aa..3e62aae2225a 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -771,7 +771,7 @@ config CACHE_L2X0 | |||
771 | 771 | ||
772 | config CACHE_TAUROS2 | 772 | config CACHE_TAUROS2 |
773 | bool "Enable the Tauros2 L2 cache controller" | 773 | bool "Enable the Tauros2 L2 cache controller" |
774 | depends on ARCH_DOVE | 774 | depends on (ARCH_DOVE || ARCH_MMP) |
775 | default y | 775 | default y |
776 | select OUTER_CACHE | 776 | select OUTER_CACHE |
777 | help | 777 | help |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 83db12a68d56..0ed29bfeba1c 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -86,9 +86,6 @@ void show_mem(void) | |||
86 | printk("Mem-info:\n"); | 86 | printk("Mem-info:\n"); |
87 | show_free_areas(); | 87 | show_free_areas(); |
88 | for_each_online_node(node) { | 88 | for_each_online_node(node) { |
89 | pg_data_t *n = NODE_DATA(node); | ||
90 | struct page *map = pgdat_page_nr(n, 0) - n->node_start_pfn; | ||
91 | |||
92 | for_each_nodebank (i,mi,node) { | 89 | for_each_nodebank (i,mi,node) { |
93 | struct membank *bank = &mi->bank[i]; | 90 | struct membank *bank = &mi->bank[i]; |
94 | unsigned int pfn1, pfn2; | 91 | unsigned int pfn1, pfn2; |
@@ -97,8 +94,8 @@ void show_mem(void) | |||
97 | pfn1 = bank_pfn_start(bank); | 94 | pfn1 = bank_pfn_start(bank); |
98 | pfn2 = bank_pfn_end(bank); | 95 | pfn2 = bank_pfn_end(bank); |
99 | 96 | ||
100 | page = map + pfn1; | 97 | page = pfn_to_page(pfn1); |
101 | end = map + pfn2; | 98 | end = pfn_to_page(pfn2 - 1) + 1; |
102 | 99 | ||
103 | do { | 100 | do { |
104 | total++; | 101 | total++; |
@@ -603,9 +600,6 @@ void __init mem_init(void) | |||
603 | reserved_pages = free_pages = 0; | 600 | reserved_pages = free_pages = 0; |
604 | 601 | ||
605 | for_each_online_node(node) { | 602 | for_each_online_node(node) { |
606 | pg_data_t *n = NODE_DATA(node); | ||
607 | struct page *map = pgdat_page_nr(n, 0) - n->node_start_pfn; | ||
608 | |||
609 | for_each_nodebank(i, &meminfo, node) { | 603 | for_each_nodebank(i, &meminfo, node) { |
610 | struct membank *bank = &meminfo.bank[i]; | 604 | struct membank *bank = &meminfo.bank[i]; |
611 | unsigned int pfn1, pfn2; | 605 | unsigned int pfn1, pfn2; |
@@ -614,8 +608,8 @@ void __init mem_init(void) | |||
614 | pfn1 = bank_pfn_start(bank); | 608 | pfn1 = bank_pfn_start(bank); |
615 | pfn2 = bank_pfn_end(bank); | 609 | pfn2 = bank_pfn_end(bank); |
616 | 610 | ||
617 | page = map + pfn1; | 611 | page = pfn_to_page(pfn1); |
618 | end = map + pfn2; | 612 | end = pfn_to_page(pfn2 - 1) + 1; |
619 | 613 | ||
620 | do { | 614 | do { |
621 | if (PageReserved(page)) | 615 | if (PageReserved(page)) |
diff --git a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h b/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h index 07be8ad7ec37..7c4870bd5a21 100644 --- a/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h +++ b/arch/arm/plat-mxc/include/mach/dma-mx1-mx2.h | |||
@@ -31,7 +31,13 @@ | |||
31 | #define DMA_MODE_WRITE 1 | 31 | #define DMA_MODE_WRITE 1 |
32 | #define DMA_MODE_MASK 1 | 32 | #define DMA_MODE_MASK 1 |
33 | 33 | ||
34 | #define DMA_BASE IO_ADDRESS(DMA_BASE_ADDR) | 34 | #define MX1_DMA_REG(offset) MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR + (offset)) |
35 | |||
36 | /* DMA Interrupt Mask Register */ | ||
37 | #define MX1_DMA_DIMR MX1_DMA_REG(0x08) | ||
38 | |||
39 | /* Channel Control Register */ | ||
40 | #define MX1_DMA_CCR(x) MX1_DMA_REG(0x8c + ((x) << 6)) | ||
35 | 41 | ||
36 | #define IMX_DMA_MEMSIZE_32 (0 << 4) | 42 | #define IMX_DMA_MEMSIZE_32 (0 << 4) |
37 | #define IMX_DMA_MEMSIZE_8 (1 << 4) | 43 | #define IMX_DMA_MEMSIZE_8 (1 << 4) |
diff --git a/arch/arm/plat-pxa/Kconfig b/arch/arm/plat-pxa/Kconfig index b158e98038ed..da53395a17c6 100644 --- a/arch/arm/plat-pxa/Kconfig +++ b/arch/arm/plat-pxa/Kconfig | |||
@@ -1,3 +1,8 @@ | |||
1 | if PLAT_PXA | 1 | if PLAT_PXA |
2 | 2 | ||
3 | config PXA_SSP | ||
4 | tristate | ||
5 | help | ||
6 | Enable support for PXA2xx SSP ports | ||
7 | |||
3 | endif | 8 | endif |
diff --git a/arch/arm/plat-pxa/Makefile b/arch/arm/plat-pxa/Makefile index 0264bfb0ca4f..4aacdd12c9cc 100644 --- a/arch/arm/plat-pxa/Makefile +++ b/arch/arm/plat-pxa/Makefile | |||
@@ -9,3 +9,4 @@ obj-$(CONFIG_PXA3xx) += mfp.o | |||
9 | obj-$(CONFIG_ARCH_MMP) += mfp.o | 9 | obj-$(CONFIG_ARCH_MMP) += mfp.o |
10 | 10 | ||
11 | obj-$(CONFIG_HAVE_PWM) += pwm.o | 11 | obj-$(CONFIG_HAVE_PWM) += pwm.o |
12 | obj-$(CONFIG_PXA_SSP) += ssp.o | ||
diff --git a/arch/arm/plat-pxa/include/plat/mfp.h b/arch/arm/plat-pxa/include/plat/mfp.h index 857a6839071c..9e604c80618f 100644 --- a/arch/arm/plat-pxa/include/plat/mfp.h +++ b/arch/arm/plat-pxa/include/plat/mfp.h | |||
@@ -316,6 +316,13 @@ enum { | |||
316 | MFP_PIN_PMIC_INT, | 316 | MFP_PIN_PMIC_INT, |
317 | MFP_PIN_RDY, | 317 | MFP_PIN_RDY, |
318 | 318 | ||
319 | /* additional pins on MMP2 */ | ||
320 | MFP_PIN_TWSI1_SCL, | ||
321 | MFP_PIN_TWSI1_SDA, | ||
322 | MFP_PIN_TWSI4_SCL, | ||
323 | MFP_PIN_TWSI4_SDA, | ||
324 | MFP_PIN_CLK_REQ, | ||
325 | |||
319 | MFP_PIN_MAX, | 326 | MFP_PIN_MAX, |
320 | }; | 327 | }; |
321 | 328 | ||
diff --git a/arch/arm/mach-pxa/include/mach/regs-ssp.h b/arch/arm/plat-pxa/include/plat/ssp.h index 6a2ed35acd59..fe43150690ed 100644 --- a/arch/arm/mach-pxa/include/mach/regs-ssp.h +++ b/arch/arm/plat-pxa/include/plat/ssp.h | |||
@@ -1,5 +1,26 @@ | |||
1 | #ifndef __ASM_ARCH_REGS_SSP_H | 1 | /* |
2 | #define __ASM_ARCH_REGS_SSP_H | 2 | * ssp.h |
3 | * | ||
4 | * Copyright (C) 2003 Russell King, All Rights Reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This driver supports the following PXA CPU/SSP ports:- | ||
11 | * | ||
12 | * PXA250 SSP | ||
13 | * PXA255 SSP, NSSP | ||
14 | * PXA26x SSP, NSSP, ASSP | ||
15 | * PXA27x SSP1, SSP2, SSP3 | ||
16 | * PXA3xx SSP1, SSP2, SSP3, SSP4 | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_SSP_H | ||
20 | #define __ASM_ARCH_SSP_H | ||
21 | |||
22 | #include <linux/list.h> | ||
23 | #include <linux/io.h> | ||
3 | 24 | ||
4 | /* | 25 | /* |
5 | * SSP Serial Port Registers | 26 | * SSP Serial Port Registers |
@@ -19,10 +40,7 @@ | |||
19 | #define SSRSA (0x34) /* SSP Rx Timeslot Active */ | 40 | #define SSRSA (0x34) /* SSP Rx Timeslot Active */ |
20 | #define SSTSS (0x38) /* SSP Timeslot Status */ | 41 | #define SSTSS (0x38) /* SSP Timeslot Status */ |
21 | #define SSACD (0x3C) /* SSP Audio Clock Divider */ | 42 | #define SSACD (0x3C) /* SSP Audio Clock Divider */ |
22 | |||
23 | #if defined(CONFIG_PXA3xx) | ||
24 | #define SSACDD (0x40) /* SSP Audio Clock Dither Divider */ | 43 | #define SSACDD (0x40) /* SSP Audio Clock Dither Divider */ |
25 | #endif | ||
26 | 44 | ||
27 | /* Common PXA2xx bits first */ | 45 | /* Common PXA2xx bits first */ |
28 | #define SSCR0_DSS (0x0000000f) /* Data Size Select (mask) */ | 46 | #define SSCR0_DSS (0x0000000f) /* Data Size Select (mask) */ |
@@ -33,29 +51,19 @@ | |||
33 | #define SSCR0_National (0x2 << 4) /* National Microwire */ | 51 | #define SSCR0_National (0x2 << 4) /* National Microwire */ |
34 | #define SSCR0_ECS (1 << 6) /* External clock select */ | 52 | #define SSCR0_ECS (1 << 6) /* External clock select */ |
35 | #define SSCR0_SSE (1 << 7) /* Synchronous Serial Port Enable */ | 53 | #define SSCR0_SSE (1 << 7) /* Synchronous Serial Port Enable */ |
54 | #define SSCR0_SCR(x) ((x) << 8) /* Serial Clock Rate (mask) */ | ||
36 | 55 | ||
37 | #if defined(CONFIG_PXA25x) | 56 | /* PXA27x, PXA3xx */ |
38 | #define SSCR0_SCR (0x0000ff00) /* Serial Clock Rate (mask) */ | ||
39 | #define SSCR0_SerClkDiv(x) ((((x) - 2)/2) << 8) /* Divisor [2..512] */ | ||
40 | #elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) | ||
41 | #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */ | ||
42 | #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */ | ||
43 | #endif | ||
44 | |||
45 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) | ||
46 | #define SSCR0_EDSS (1 << 20) /* Extended data size select */ | 57 | #define SSCR0_EDSS (1 << 20) /* Extended data size select */ |
47 | #define SSCR0_NCS (1 << 21) /* Network clock select */ | 58 | #define SSCR0_NCS (1 << 21) /* Network clock select */ |
48 | #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */ | 59 | #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */ |
49 | #define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */ | 60 | #define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */ |
50 | #define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */ | 61 | #define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */ |
51 | #define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */ | 62 | #define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */ |
63 | #define SSCR0_FPCKE (1 << 29) /* FIFO packing enable */ | ||
52 | #define SSCR0_ACS (1 << 30) /* Audio clock select */ | 64 | #define SSCR0_ACS (1 << 30) /* Audio clock select */ |
53 | #define SSCR0_MOD (1 << 31) /* Mode (normal or network) */ | 65 | #define SSCR0_MOD (1 << 31) /* Mode (normal or network) */ |
54 | #endif | ||
55 | 66 | ||
56 | #if defined(CONFIG_PXA3xx) | ||
57 | #define SSCR0_FPCKE (1 << 29) /* FIFO packing enable */ | ||
58 | #endif | ||
59 | 67 | ||
60 | #define SSCR1_RIE (1 << 0) /* Receive FIFO Interrupt Enable */ | 68 | #define SSCR1_RIE (1 << 0) /* Receive FIFO Interrupt Enable */ |
61 | #define SSCR1_TIE (1 << 1) /* Transmit FIFO Interrupt Enable */ | 69 | #define SSCR1_TIE (1 << 1) /* Transmit FIFO Interrupt Enable */ |
@@ -75,10 +83,6 @@ | |||
75 | #define SSSR_RFS (1 << 6) /* Receive FIFO Service Request */ | 83 | #define SSSR_RFS (1 << 6) /* Receive FIFO Service Request */ |
76 | #define SSSR_ROR (1 << 7) /* Receive FIFO Overrun */ | 84 | #define SSSR_ROR (1 << 7) /* Receive FIFO Overrun */ |
77 | 85 | ||
78 | #define SSCR0_TIM (1 << 23) /* Transmit FIFO Under Run Interrupt Mask */ | ||
79 | #define SSCR0_RIM (1 << 22) /* Receive FIFO Over Run interrupt Mask */ | ||
80 | #define SSCR0_NCS (1 << 21) /* Network Clock Select */ | ||
81 | #define SSCR0_EDSS (1 << 20) /* Extended Data Size Select */ | ||
82 | 86 | ||
83 | /* extra bits in PXA255, PXA26x and PXA27x SSP ports */ | 87 | /* extra bits in PXA255, PXA26x and PXA27x SSP ports */ |
84 | #define SSCR0_TISSP (1 << 4) /* TI Sync Serial Protocol */ | 88 | #define SSCR0_TISSP (1 << 4) /* TI Sync Serial Protocol */ |
@@ -108,27 +112,75 @@ | |||
108 | #define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */ | 112 | #define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */ |
109 | #define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */ | 113 | #define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */ |
110 | 114 | ||
111 | #if defined(CONFIG_PXA3xx) | ||
112 | #define SSPSP_EDMYSTOP(x) ((x) << 28) /* Extended Dummy Stop */ | ||
113 | #define SSPSP_EDMYSTRT(x) ((x) << 26) /* Extended Dummy Start */ | ||
114 | #endif | ||
115 | 115 | ||
116 | #define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */ | ||
117 | #define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */ | ||
118 | #define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */ | ||
119 | #define SSPSP_SFRMDLY(x) ((x) << 9) /* Serial Frame Delay */ | ||
120 | #define SSPSP_DMYSTRT(x) ((x) << 7) /* Dummy Start */ | ||
121 | #define SSPSP_STRTDLY(x) ((x) << 4) /* Start Delay */ | ||
122 | #define SSPSP_ETDS (1 << 3) /* End of Transfer data State */ | ||
123 | #define SSPSP_SFRMP (1 << 2) /* Serial Frame Polarity */ | ||
124 | #define SSPSP_SCMODE(x) ((x) << 0) /* Serial Bit Rate Clock Mode */ | 116 | #define SSPSP_SCMODE(x) ((x) << 0) /* Serial Bit Rate Clock Mode */ |
117 | #define SSPSP_SFRMP (1 << 2) /* Serial Frame Polarity */ | ||
118 | #define SSPSP_ETDS (1 << 3) /* End of Transfer data State */ | ||
119 | #define SSPSP_STRTDLY(x) ((x) << 4) /* Start Delay */ | ||
120 | #define SSPSP_DMYSTRT(x) ((x) << 7) /* Dummy Start */ | ||
121 | #define SSPSP_SFRMDLY(x) ((x) << 9) /* Serial Frame Delay */ | ||
122 | #define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */ | ||
123 | #define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */ | ||
124 | #define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */ | ||
125 | |||
126 | /* PXA3xx */ | ||
127 | #define SSPSP_EDMYSTRT(x) ((x) << 26) /* Extended Dummy Start */ | ||
128 | #define SSPSP_EDMYSTOP(x) ((x) << 28) /* Extended Dummy Stop */ | ||
129 | #define SSPSP_TIMING_MASK (0x7f8001f0) | ||
125 | 130 | ||
126 | #define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass */ | 131 | #define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass */ |
127 | #define SSACD_ACPS(x) ((x) << 4) /* Audio clock PLL select */ | 132 | #define SSACD_ACPS(x) ((x) << 4) /* Audio clock PLL select */ |
128 | #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ | 133 | #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ |
129 | #if defined(CONFIG_PXA3xx) | ||
130 | #define SSACD_SCDX8 (1 << 7) /* SYSCLK division ratio select */ | 134 | #define SSACD_SCDX8 (1 << 7) /* SYSCLK division ratio select */ |
131 | #endif | ||
132 | |||
133 | 135 | ||
134 | #endif /* __ASM_ARCH_REGS_SSP_H */ | 136 | enum pxa_ssp_type { |
137 | SSP_UNDEFINED = 0, | ||
138 | PXA25x_SSP, /* pxa 210, 250, 255, 26x */ | ||
139 | PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */ | ||
140 | PXA27x_SSP, | ||
141 | PXA168_SSP, | ||
142 | }; | ||
143 | |||
144 | struct ssp_device { | ||
145 | struct platform_device *pdev; | ||
146 | struct list_head node; | ||
147 | |||
148 | struct clk *clk; | ||
149 | void __iomem *mmio_base; | ||
150 | unsigned long phys_base; | ||
151 | |||
152 | const char *label; | ||
153 | int port_id; | ||
154 | int type; | ||
155 | int use_count; | ||
156 | int irq; | ||
157 | int drcmr_rx; | ||
158 | int drcmr_tx; | ||
159 | }; | ||
160 | |||
161 | /** | ||
162 | * pxa_ssp_write_reg - Write to a SSP register | ||
163 | * | ||
164 | * @dev: SSP device to access | ||
165 | * @reg: Register to write to | ||
166 | * @val: Value to be written. | ||
167 | */ | ||
168 | static inline void pxa_ssp_write_reg(struct ssp_device *dev, u32 reg, u32 val) | ||
169 | { | ||
170 | __raw_writel(val, dev->mmio_base + reg); | ||
171 | } | ||
172 | |||
173 | /** | ||
174 | * pxa_ssp_read_reg - Read from a SSP register | ||
175 | * | ||
176 | * @dev: SSP device to access | ||
177 | * @reg: Register to read from | ||
178 | */ | ||
179 | static inline u32 pxa_ssp_read_reg(struct ssp_device *dev, u32 reg) | ||
180 | { | ||
181 | return __raw_readl(dev->mmio_base + reg); | ||
182 | } | ||
183 | |||
184 | struct ssp_device *pxa_ssp_request(int port, const char *label); | ||
185 | void pxa_ssp_free(struct ssp_device *); | ||
186 | #endif /* __ASM_ARCH_SSP_H */ | ||
diff --git a/arch/arm/plat-pxa/mfp.c b/arch/arm/plat-pxa/mfp.c index be58f9fe65b0..b77e018d36c1 100644 --- a/arch/arm/plat-pxa/mfp.c +++ b/arch/arm/plat-pxa/mfp.c | |||
@@ -110,6 +110,7 @@ static const unsigned long mfpr_lpm[] = { | |||
110 | MFPR_LPM_PULL_LOW, | 110 | MFPR_LPM_PULL_LOW, |
111 | MFPR_LPM_PULL_HIGH, | 111 | MFPR_LPM_PULL_HIGH, |
112 | MFPR_LPM_FLOAT, | 112 | MFPR_LPM_FLOAT, |
113 | MFPR_LPM_INPUT, | ||
113 | }; | 114 | }; |
114 | 115 | ||
115 | /* mapping of MFP_PULL_* definitions to MFPR_PULL_* register bits */ | 116 | /* mapping of MFP_PULL_* definitions to MFPR_PULL_* register bits */ |
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c new file mode 100644 index 000000000000..c6357e554aba --- /dev/null +++ b/arch/arm/plat-pxa/ssp.c | |||
@@ -0,0 +1,224 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/ssp.c | ||
3 | * | ||
4 | * based on linux/arch/arm/mach-sa1100/ssp.c by Russell King | ||
5 | * | ||
6 | * Copyright (C) 2003 Russell King. | ||
7 | * Copyright (C) 2003 Wolfson Microelectronics PLC | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * PXA2xx SSP driver. This provides the generic core for simple | ||
14 | * IO-based SSP applications and allows easy port setup for DMA access. | ||
15 | * | ||
16 | * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com> | ||
17 | */ | ||
18 | |||
19 | #include <linux/module.h> | ||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/sched.h> | ||
22 | #include <linux/slab.h> | ||
23 | #include <linux/errno.h> | ||
24 | #include <linux/interrupt.h> | ||
25 | #include <linux/ioport.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/mutex.h> | ||
28 | #include <linux/clk.h> | ||
29 | #include <linux/err.h> | ||
30 | #include <linux/platform_device.h> | ||
31 | #include <linux/io.h> | ||
32 | |||
33 | #include <asm/irq.h> | ||
34 | #include <mach/hardware.h> | ||
35 | #include <plat/ssp.h> | ||
36 | |||
37 | static DEFINE_MUTEX(ssp_lock); | ||
38 | static LIST_HEAD(ssp_list); | ||
39 | |||
40 | struct ssp_device *pxa_ssp_request(int port, const char *label) | ||
41 | { | ||
42 | struct ssp_device *ssp = NULL; | ||
43 | |||
44 | mutex_lock(&ssp_lock); | ||
45 | |||
46 | list_for_each_entry(ssp, &ssp_list, node) { | ||
47 | if (ssp->port_id == port && ssp->use_count == 0) { | ||
48 | ssp->use_count++; | ||
49 | ssp->label = label; | ||
50 | break; | ||
51 | } | ||
52 | } | ||
53 | |||
54 | mutex_unlock(&ssp_lock); | ||
55 | |||
56 | if (&ssp->node == &ssp_list) | ||
57 | return NULL; | ||
58 | |||
59 | return ssp; | ||
60 | } | ||
61 | EXPORT_SYMBOL(pxa_ssp_request); | ||
62 | |||
63 | void pxa_ssp_free(struct ssp_device *ssp) | ||
64 | { | ||
65 | mutex_lock(&ssp_lock); | ||
66 | if (ssp->use_count) { | ||
67 | ssp->use_count--; | ||
68 | ssp->label = NULL; | ||
69 | } else | ||
70 | dev_err(&ssp->pdev->dev, "device already free\n"); | ||
71 | mutex_unlock(&ssp_lock); | ||
72 | } | ||
73 | EXPORT_SYMBOL(pxa_ssp_free); | ||
74 | |||
75 | static int __devinit pxa_ssp_probe(struct platform_device *pdev) | ||
76 | { | ||
77 | const struct platform_device_id *id = platform_get_device_id(pdev); | ||
78 | struct resource *res; | ||
79 | struct ssp_device *ssp; | ||
80 | int ret = 0; | ||
81 | |||
82 | ssp = kzalloc(sizeof(struct ssp_device), GFP_KERNEL); | ||
83 | if (ssp == NULL) { | ||
84 | dev_err(&pdev->dev, "failed to allocate memory"); | ||
85 | return -ENOMEM; | ||
86 | } | ||
87 | ssp->pdev = pdev; | ||
88 | |||
89 | ssp->clk = clk_get(&pdev->dev, NULL); | ||
90 | if (IS_ERR(ssp->clk)) { | ||
91 | ret = PTR_ERR(ssp->clk); | ||
92 | goto err_free; | ||
93 | } | ||
94 | |||
95 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); | ||
96 | if (res == NULL) { | ||
97 | dev_err(&pdev->dev, "no SSP RX DRCMR defined\n"); | ||
98 | ret = -ENODEV; | ||
99 | goto err_free_clk; | ||
100 | } | ||
101 | ssp->drcmr_rx = res->start; | ||
102 | |||
103 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); | ||
104 | if (res == NULL) { | ||
105 | dev_err(&pdev->dev, "no SSP TX DRCMR defined\n"); | ||
106 | ret = -ENODEV; | ||
107 | goto err_free_clk; | ||
108 | } | ||
109 | ssp->drcmr_tx = res->start; | ||
110 | |||
111 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
112 | if (res == NULL) { | ||
113 | dev_err(&pdev->dev, "no memory resource defined\n"); | ||
114 | ret = -ENODEV; | ||
115 | goto err_free_clk; | ||
116 | } | ||
117 | |||
118 | res = request_mem_region(res->start, resource_size(res), | ||
119 | pdev->name); | ||
120 | if (res == NULL) { | ||
121 | dev_err(&pdev->dev, "failed to request memory resource\n"); | ||
122 | ret = -EBUSY; | ||
123 | goto err_free_clk; | ||
124 | } | ||
125 | |||
126 | ssp->phys_base = res->start; | ||
127 | |||
128 | ssp->mmio_base = ioremap(res->start, resource_size(res)); | ||
129 | if (ssp->mmio_base == NULL) { | ||
130 | dev_err(&pdev->dev, "failed to ioremap() registers\n"); | ||
131 | ret = -ENODEV; | ||
132 | goto err_free_mem; | ||
133 | } | ||
134 | |||
135 | ssp->irq = platform_get_irq(pdev, 0); | ||
136 | if (ssp->irq < 0) { | ||
137 | dev_err(&pdev->dev, "no IRQ resource defined\n"); | ||
138 | ret = -ENODEV; | ||
139 | goto err_free_io; | ||
140 | } | ||
141 | |||
142 | /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id | ||
143 | * starts from 0, do a translation here | ||
144 | */ | ||
145 | ssp->port_id = pdev->id + 1; | ||
146 | ssp->use_count = 0; | ||
147 | ssp->type = (int)id->driver_data; | ||
148 | |||
149 | mutex_lock(&ssp_lock); | ||
150 | list_add(&ssp->node, &ssp_list); | ||
151 | mutex_unlock(&ssp_lock); | ||
152 | |||
153 | platform_set_drvdata(pdev, ssp); | ||
154 | return 0; | ||
155 | |||
156 | err_free_io: | ||
157 | iounmap(ssp->mmio_base); | ||
158 | err_free_mem: | ||
159 | release_mem_region(res->start, resource_size(res)); | ||
160 | err_free_clk: | ||
161 | clk_put(ssp->clk); | ||
162 | err_free: | ||
163 | kfree(ssp); | ||
164 | return ret; | ||
165 | } | ||
166 | |||
167 | static int __devexit pxa_ssp_remove(struct platform_device *pdev) | ||
168 | { | ||
169 | struct resource *res; | ||
170 | struct ssp_device *ssp; | ||
171 | |||
172 | ssp = platform_get_drvdata(pdev); | ||
173 | if (ssp == NULL) | ||
174 | return -ENODEV; | ||
175 | |||
176 | iounmap(ssp->mmio_base); | ||
177 | |||
178 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
179 | release_mem_region(res->start, resource_size(res)); | ||
180 | |||
181 | clk_put(ssp->clk); | ||
182 | |||
183 | mutex_lock(&ssp_lock); | ||
184 | list_del(&ssp->node); | ||
185 | mutex_unlock(&ssp_lock); | ||
186 | |||
187 | kfree(ssp); | ||
188 | return 0; | ||
189 | } | ||
190 | |||
191 | static const struct platform_device_id ssp_id_table[] = { | ||
192 | { "pxa25x-ssp", PXA25x_SSP }, | ||
193 | { "pxa25x-nssp", PXA25x_NSSP }, | ||
194 | { "pxa27x-ssp", PXA27x_SSP }, | ||
195 | { "pxa168-ssp", PXA168_SSP }, | ||
196 | { }, | ||
197 | }; | ||
198 | |||
199 | static struct platform_driver pxa_ssp_driver = { | ||
200 | .probe = pxa_ssp_probe, | ||
201 | .remove = __devexit_p(pxa_ssp_remove), | ||
202 | .driver = { | ||
203 | .owner = THIS_MODULE, | ||
204 | .name = "pxa2xx-ssp", | ||
205 | }, | ||
206 | .id_table = ssp_id_table, | ||
207 | }; | ||
208 | |||
209 | static int __init pxa_ssp_init(void) | ||
210 | { | ||
211 | return platform_driver_register(&pxa_ssp_driver); | ||
212 | } | ||
213 | |||
214 | static void __exit pxa_ssp_exit(void) | ||
215 | { | ||
216 | platform_driver_unregister(&pxa_ssp_driver); | ||
217 | } | ||
218 | |||
219 | arch_initcall(pxa_ssp_init); | ||
220 | module_exit(pxa_ssp_exit); | ||
221 | |||
222 | MODULE_DESCRIPTION("PXA SSP driver"); | ||
223 | MODULE_AUTHOR("Liam Girdwood"); | ||
224 | MODULE_LICENSE("GPL"); | ||