]> err.no Git - linux-2.6/commitdiff
Merge branches 'omap1-upstream' and 'omap2-upstream' into devel
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Fri, 12 Oct 2007 22:44:30 +0000 (23:44 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 12 Oct 2007 22:44:35 +0000 (23:44 +0100)
52 files changed:
arch/arm/configs/omap_h2_1610_defconfig
arch/arm/configs/omap_osk_5912_defconfig [new file with mode: 0644]
arch/arm/mach-omap1/Kconfig
arch/arm/mach-omap1/Makefile
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmtt.c [new file with mode: 0644]
arch/arm/mach-omap1/board-palmz71.c [new file with mode: 0644]
arch/arm/mach-omap1/board-sx1.c [new file with mode: 0644]
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/clock.c
arch/arm/mach-omap1/clock.h
arch/arm/mach-omap1/mux.c
arch/arm/mach-omap1/pm.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-2430sdp.c [new file with mode: 0644]
arch/arm/mach-omap2/board-apollon.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/gpmc.c
arch/arm/mach-omap2/id.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/irq.c
arch/arm/mach-omap2/memory.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/usb-tusb6010.c [new file with mode: 0644]
arch/arm/plat-omap/Kconfig
arch/arm/plat-omap/Makefile
arch/arm/plat-omap/debug-devices.c [new file with mode: 0644]
arch/arm/plat-omap/dma.c
include/asm-arm/arch-omap/blizzard.h [new file with mode: 0644]
include/asm-arm/arch-omap/board-2430sdp.h [new file with mode: 0644]
include/asm-arm/arch-omap/board-palmte.h [new file with mode: 0644]
include/asm-arm/arch-omap/board-palmtt.h [new file with mode: 0644]
include/asm-arm/arch-omap/board-palmz71.h [new file with mode: 0644]
include/asm-arm/arch-omap/board-sx1.h [new file with mode: 0644]
include/asm-arm/arch-omap/board.h
include/asm-arm/arch-omap/dma.h
include/asm-arm/arch-omap/eac.h [new file with mode: 0644]
include/asm-arm/arch-omap/gpmc.h
include/asm-arm/arch-omap/hardware.h
include/asm-arm/arch-omap/io.h
include/asm-arm/arch-omap/menelaus.h
include/asm-arm/arch-omap/mmc.h [new file with mode: 0644]
include/asm-arm/arch-omap/mux.h
include/asm-arm/arch-omap/omap24xx.h
include/asm-arm/arch-omap/onenand.h [new file with mode: 0644]

index b0efd4ca993561437c70058477627efad7845cce..b8a78ab49cdd494fb3b860af9197f3c9a2540fe4 100644 (file)
@@ -1,41 +1,58 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Thu Jun 29 15:25:18 2006
+# Linux kernel version: 2.6.23-rc6
+# Mon Sep 17 14:21:45 2007
 #
 CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
-# Code maturity level options
+# General setup
 #
 CONFIG_EXPERIMENTAL=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
 CONFIG_LOCALVERSION=""
 CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
 CONFIG_HOTPLUG=y
@@ -44,27 +61,30 @@ CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 # CONFIG_KMOD is not set
-
-#
-# Block layer
-#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
 # CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
 
 #
 # IO Schedulers
@@ -86,7 +106,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91RM9200 is not set
+# CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_CO285 is not set
@@ -96,11 +116,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_NETX is not set
 # CONFIG_ARCH_H720X is not set
 # CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
 # CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_RPC is not set
@@ -108,6 +133,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
 
 #
@@ -124,6 +150,7 @@ CONFIG_ARCH_OMAP1=y
 CONFIG_OMAP_MUX=y
 # CONFIG_OMAP_MUX_DEBUG is not set
 CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MCBSP=y
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
@@ -161,6 +188,14 @@ CONFIG_OMAP_ARM_192MHZ=y
 # CONFIG_OMAP_ARM_60MHZ is not set
 # CONFIG_OMAP_ARM_30MHZ is not set
 
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
 #
 # Processor Type
 #
@@ -171,6 +206,8 @@ CONFIG_CPU_ABRT_EV5TJ=y
 CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_COPY_V4WB=y
 CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
 
 #
 # Processor Features
@@ -180,10 +217,13 @@ CONFIG_ARM_THUMB=y
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
 # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
 
 #
 # Bus support
 #
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
 
 #
 # PCCARD (PCMCIA/CardBus) support
@@ -193,10 +233,13 @@ CONFIG_ARM_THUMB=y
 #
 # Kernel Features
 #
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
 CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
 CONFIG_HZ=128
-# CONFIG_AEABI is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
 # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
@@ -206,6 +249,10 @@ CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
 # CONFIG_LEDS is not set
 CONFIG_ALIGNMENT_TRAP=y
 
@@ -216,6 +263,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
 # CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
 
 #
 # CPU Frequency scaling
@@ -251,7 +299,6 @@ CONFIG_FPE_NWFPE=y
 CONFIG_BINFMT_ELF=y
 CONFIG_BINFMT_AOUT=y
 # CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
 
 #
 # Power management options
@@ -259,7 +306,10 @@ CONFIG_BINFMT_AOUT=y
 CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
-# CONFIG_APM is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+# CONFIG_APM_EMULATION is not set
 
 #
 # Networking
@@ -269,12 +319,13 @@ CONFIG_NET=y
 #
 # Networking options
 #
-# CONFIG_NETDEBUG is not set
 CONFIG_PACKET=y
 # CONFIG_PACKET_MMAP is not set
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
@@ -295,29 +346,20 @@ CONFIG_IP_PNP_BOOTP=y
 # CONFIG_INET_TUNNEL is not set
 CONFIG_INET_XFRM_MODE_TRANSPORT=y
 CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
 # CONFIG_IPV6 is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
 # CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
 # CONFIG_TIPC is not set
 # CONFIG_ATM is not set
 # CONFIG_BRIDGE is not set
@@ -328,7 +370,6 @@ CONFIG_TCP_CONG_BIC=y
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -344,7 +385,17 @@ CONFIG_TCP_CONG_BIC=y
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
 # CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
 
 #
 # Device Drivers
@@ -357,29 +408,10 @@ CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 # CONFIG_FW_LOADER is not set
 # CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
 # CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
 # CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
 # CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -387,7 +419,7 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 # CONFIG_CDROM_PKTCDVD is not set
 CONFIG_ATA_OVER_ETH=m
 
@@ -396,6 +428,9 @@ CONFIG_ATA_OVER_ETH=m
 #
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -414,82 +449,42 @@ CONFIG_SCSI_PROC_FS=y
 # CONFIG_SCSI_MULTI_LUN is not set
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
 
 #
-# SCSI Transport Attributes
+# SCSI Transports
 #
 # CONFIG_SCSI_SPI_ATTRS is not set
 # CONFIG_SCSI_FC_ATTRS is not set
 # CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
 # CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
 # CONFIG_SCSI_DEBUG is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
+# CONFIG_ATA is not set
 # CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
 CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
-
-#
-# PHY device support
-#
 # CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
+# CONFIG_AX88796 is not set
 CONFIG_SMC91X=y
 # CONFIG_DM9000 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
 
 #
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
+# Wireless LAN
 #
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
 # CONFIG_WAN is not set
 CONFIG_PPP=y
 # CONFIG_PPP_MULTILINK is not set
@@ -500,24 +495,24 @@ CONFIG_PPP=y
 # CONFIG_PPP_BSDCOMP is not set
 # CONFIG_PPP_MPPE is not set
 # CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
 CONFIG_SLIP=y
 CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=y
 # CONFIG_SLIP_SMART is not set
 # CONFIG_SLIP_MODE_SLIP6 is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
 # CONFIG_ISDN is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
 
 #
 # Userland interfaces
@@ -537,8 +532,14 @@ CONFIG_INPUT_EVBUG=y
 # CONFIG_INPUT_KEYBOARD is not set
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
 CONFIG_INPUT_UINPUT=y
 
 #
@@ -574,15 +575,7 @@ CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
 # CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_NOWAYOUT=y
 
@@ -590,25 +583,12 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 # CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_OMAP_WATCHDOG is not set
 # CONFIG_HW_RANDOM is not set
 # CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
 # CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
 # CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
 # CONFIG_I2C is not set
 
 #
@@ -616,61 +596,70 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 #
 # CONFIG_SPI is not set
 # CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-
-#
-# Hardware Monitoring support
-#
+# CONFIG_W1 is not set
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
 # CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
 # CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
 
 #
-# Misc devices
-#
-
-#
-# LED devices
+# Multifunction device drivers
 #
+# CONFIG_MFD_SM501 is not set
 # CONFIG_NEW_LEDS is not set
 
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
 #
 # Multimedia devices
 #
 # CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
 
 #
-# Digital Video Broadcasting Devices
+# Graphics support
 #
-# CONFIG_DVB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
-# Graphics support
+# Display device support
 #
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
 CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
 # CONFIG_FB_CFB_FILLRECT is not set
 # CONFIG_FB_CFB_COPYAREA is not set
 # CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
 # CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
 # CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_OMAP is not set
 # CONFIG_FB_VIRTUAL is not set
 
 #
@@ -679,6 +668,7 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
@@ -691,15 +681,10 @@ CONFIG_FONT_8x16=y
 # CONFIG_FONT_SUN8x16 is not set
 # CONFIG_FONT_SUN12x22 is not set
 # CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
@@ -717,10 +702,10 @@ CONFIG_SOUND=y
 CONFIG_SOUND_PRIME=y
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
-
-#
-# USB support
-#
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+CONFIG_USB_SUPPORT=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
 # CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -734,17 +719,22 @@ CONFIG_USB_ARCH_HAS_OHCI=y
 # USB Gadget Support
 #
 # CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
 
 #
-# MMC/SD Card support
+# DMA Engine support
 #
-# CONFIG_MMC is not set
+# CONFIG_DMA_ENGINE is not set
 
 #
-# Real Time Clock
+# DMA Clients
+#
+
+#
+# DMA Devices
 #
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
 
 #
 # File systems
@@ -753,10 +743,12 @@ CONFIG_EXT2_FS=y
 # CONFIG_EXT2_FS_XATTR is not set
 # CONFIG_EXT2_FS_XIP is not set
 # CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
 # CONFIG_FS_POSIX_ACL is not set
 # CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_MINIX_FS is not set
 CONFIG_ROMFS_FS=y
@@ -787,6 +779,7 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437
 # Pseudo filesystems
 #
 CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
 CONFIG_SYSFS=y
 # CONFIG_TMPFS is not set
 # CONFIG_HUGETLB_PAGE is not set
@@ -825,6 +818,7 @@ CONFIG_LOCKD_V4=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
 CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_BIND34 is not set
 CONFIG_RPCSEC_GSS_KRB5=y
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 # CONFIG_SMB_FS is not set
@@ -832,7 +826,6 @@ CONFIG_RPCSEC_GSS_KRB5=y
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
 
 #
 # Partition Types
@@ -884,6 +877,11 @@ CONFIG_NLS_DEFAULT="iso8859-1"
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_UTF8 is not set
 
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
 #
 # Profiling support
 #
@@ -893,13 +891,14 @@ CONFIG_NLS_DEFAULT="iso8859-1"
 # Kernel hacking
 #
 # CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
 # CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
 # CONFIG_DEBUG_USER is not set
 
 #
@@ -907,12 +906,12 @@ CONFIG_FRAME_POINTER=y
 #
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
 CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_MANAGER=y
 # CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MD4 is not set
 CONFIG_CRYPTO_MD5=y
@@ -921,7 +920,14 @@ CONFIG_CRYPTO_MD5=y
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_WP512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_CRYPTD is not set
 CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set
 # CONFIG_CRYPTO_SERPENT is not set
@@ -935,17 +941,22 @@ CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
 # CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
+CONFIG_CRYPTO_HW=y
 
 #
 # Library routines
 #
+CONFIG_BITREVERSE=y
 # CONFIG_CRC_CCITT is not set
 # CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
 CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
 # CONFIG_LIBCRC32C is not set
 CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/arch/arm/configs/omap_osk_5912_defconfig b/arch/arm/configs/omap_osk_5912_defconfig
new file mode 100644 (file)
index 0000000..8c1f15c
--- /dev/null
@@ -0,0 +1,1073 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23-rc6
+# Mon Sep 17 14:15:05 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+CONFIG_ARCH_OMAP1=y
+# CONFIG_ARCH_OMAP2 is not set
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+# CONFIG_OMAP_DM_TIMER is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
+CONFIG_OMAP_SERIAL_WAKE=y
+
+#
+# OMAP Core Type
+#
+# CONFIG_ARCH_OMAP730 is not set
+# CONFIG_ARCH_OMAP15XX is not set
+CONFIG_ARCH_OMAP16XX=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_INNOVATOR is not set
+# CONFIG_MACH_OMAP_H2 is not set
+# CONFIG_MACH_OMAP_H3 is not set
+CONFIG_MACH_OMAP_OSK=y
+# CONFIG_OMAP_OSK_MISTRAL is not set
+# CONFIG_MACH_NOKIA770 is not set
+# CONFIG_MACH_OMAP_GENERIC is not set
+
+#
+# OMAP CPU Speed
+#
+# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
+# CONFIG_OMAP_ARM_216MHZ is not set
+CONFIG_OMAP_ARM_192MHZ=y
+# CONFIG_OMAP_ARM_168MHZ is not set
+# CONFIG_OMAP_ARM_120MHZ is not set
+# CONFIG_OMAP_ARM_60MHZ is not set
+# CONFIG_OMAP_ARM_30MHZ is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_OMAP_CF=y
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+# CONFIG_APM_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_OMAP_NOR=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_IDE=m
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDEPCI_PCIBUS_ORDER is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_NET_PCMCIA is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=y
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_OMAP=y
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_OMAP=m
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TPS65010=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_NEW_LEDS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_OMAP is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
index f6ecdd3a2478eeef2988a5c905986ab97a2e0cc5..79f0b1f8497be84a210e7330b4a87843c5eb14c1 100644 (file)
@@ -84,11 +84,39 @@ config MACH_OMAP_PALMTE
        bool "Palm Tungsten E"
        depends on ARCH_OMAP1 && ARCH_OMAP15XX
        help
-          Support for the Palm Tungsten E PDA. Currently only the LCD panel
-          is supported. To boot the kernel, you'll need a PalmOS compatible
-          bootloader; check out http://palmtelinux.sourceforge.net for more
-          information.
-          Say Y here if you have such a PDA, say NO otherwise.
+         Support for the Palm Tungsten E PDA.  To boot the kernel, you'll
+         need a PalmOS compatible bootloader; check out
+         http://palmtelinux.sourceforge.net/ for more information.
+         Say Y here if you have this PDA model, say N otherwise.
+
+config MACH_OMAP_PALMZ71
+       bool "Palm Zire71"
+       depends on ARCH_OMAP1 && ARCH_OMAP15XX
+       help
+        Support for the Palm Zire71 PDA. To boot the kernel,
+        you'll need a PalmOS compatible bootloader; check out
+        http://hackndev.com/palm/z71 for more informations.
+        Say Y here if you have such a PDA, say N otherwise.
+
+config MACH_OMAP_PALMTT
+       bool "Palm Tungsten|T"
+       depends on ARCH_OMAP1 && ARCH_OMAP15XX
+       help
+         Support for the Palm Tungsten|T PDA. To boot the kernel, you'll
+         need a PalmOS compatible bootloader (Garux); check out
+         http://www.hackndev.com/palm/tt/ for more information.
+         Say Y here if you have this PDA model, say N otherwise.
+
+config MACH_SX1
+       bool "Siemens SX1"
+       depends on ARCH_OMAP1 && ARCH_OMAP15XX
+       help
+         Support for the Siemens SX1 phone. To boot the kernel,
+         you'll need a SX1 compatible bootloader; check out
+         http://forum.oslik.ru and
+         http://www.handhelds.org/moin/moin.cgi/SiemensSX1
+         for more information.
+         Say Y here if you have such a phone, say NO otherwise.
 
 config MACH_NOKIA770
        bool "Nokia 770"
index a8b9a00cea224d79393e71e68d77144b83522a43..391b6f4827f6a82db99753003a6e4510daea3f17 100644 (file)
@@ -22,8 +22,11 @@ obj-$(CONFIG_MACH_OMAP_OSK)          += board-osk.o
 obj-$(CONFIG_MACH_OMAP_H3)             += board-h3.o
 obj-$(CONFIG_MACH_VOICEBLUE)           += board-voiceblue.o
 obj-$(CONFIG_MACH_OMAP_PALMTE)         += board-palmte.o
+obj-$(CONFIG_MACH_OMAP_PALMZ71)                += board-palmz71.o
+obj-$(CONFIG_MACH_OMAP_PALMTT)         += board-palmtt.o
 obj-$(CONFIG_MACH_NOKIA770)            += board-nokia770.o
 obj-$(CONFIG_MACH_AMS_DELTA)           += board-ams-delta.o
+obj-$(CONFIG_MACH_SX1)                 += board-sx1.o
 
 ifeq ($(CONFIG_ARCH_OMAP15XX),y)
 # Innovator-1510 FPGA
index 8437d065ada50530b8d686e9dd42c2486384889e..c73ca61e585ef6f49385e8fc377a7a6974e12082 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/input.h>
 #include <linux/platform_device.h>
 
 #include <asm/hardware.h>
@@ -23,6 +24,7 @@
 
 #include <asm/arch/board-ams-delta.h>
 #include <asm/arch/gpio.h>
+#include <asm/arch/keypad.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/usb.h>
 #include <asm/arch/board.h>
 static u8 ams_delta_latch1_reg;
 static u16 ams_delta_latch2_reg;
 
+static int ams_delta_keymap[] = {
+       KEY(0, 0, KEY_F1),              /* Advert    */
+
+       KEY(3, 0, KEY_COFFEE),          /* Games     */
+       KEY(2, 0, KEY_QUESTION),        /* Directory */
+       KEY(3, 2, KEY_CONNECT),         /* Internet  */
+       KEY(2, 1, KEY_SHOP),            /* Services  */
+       KEY(1, 1, KEY_PHONE),           /* VoiceMail */
+
+       KEY(1, 0, KEY_DELETE),          /* Delete    */
+       KEY(2, 2, KEY_PLAY),            /* Play      */
+       KEY(0, 1, KEY_PAGEUP),          /* Up        */
+       KEY(3, 1, KEY_PAGEDOWN),        /* Down      */
+       KEY(0, 2, KEY_EMAIL),           /* ReadEmail */
+       KEY(1, 2, KEY_STOP),            /* Stop      */
+
+       /* Numeric keypad portion */
+       KEY(7, 0, KEY_KP1),
+       KEY(6, 0, KEY_KP2),
+       KEY(5, 0, KEY_KP3),
+       KEY(7, 1, KEY_KP4),
+       KEY(6, 1, KEY_KP5),
+       KEY(5, 1, KEY_KP6),
+       KEY(7, 2, KEY_KP7),
+       KEY(6, 2, KEY_KP8),
+       KEY(5, 2, KEY_KP9),
+       KEY(6, 3, KEY_KP0),
+       KEY(7, 3, KEY_KPASTERISK),
+       KEY(5, 3, KEY_KPDOT),           /* # key     */
+       KEY(2, 7, KEY_NUMLOCK),         /* Mute      */
+       KEY(1, 7, KEY_KPMINUS),         /* Recall    */
+       KEY(1, 6, KEY_KPPLUS),          /* Redial    */
+       KEY(6, 7, KEY_KPSLASH),         /* Handsfree */
+       KEY(0, 6, KEY_ENTER),           /* Video     */
+
+       KEY(4, 7, KEY_CAMERA),          /* Photo     */
+
+       KEY(4, 0, KEY_F2),              /* Home      */
+       KEY(4, 1, KEY_F3),              /* Office    */
+       KEY(4, 2, KEY_F4),              /* Mobile    */
+       KEY(7, 7, KEY_F5),              /* SMS       */
+       KEY(5, 7, KEY_F6),              /* Email     */
+
+       /* QWERTY portion of keypad */
+       KEY(4, 3, KEY_Q),
+       KEY(3, 3, KEY_W),
+       KEY(2, 3, KEY_E),
+       KEY(1, 3, KEY_R),
+       KEY(0, 3, KEY_T),
+       KEY(7, 4, KEY_Y),
+       KEY(6, 4, KEY_U),
+       KEY(5, 4, KEY_I),
+       KEY(4, 4, KEY_O),
+       KEY(3, 4, KEY_P),
+
+       KEY(2, 4, KEY_A),
+       KEY(1, 4, KEY_S),
+       KEY(0, 4, KEY_D),
+       KEY(7, 5, KEY_F),
+       KEY(6, 5, KEY_G),
+       KEY(5, 5, KEY_H),
+       KEY(4, 5, KEY_J),
+       KEY(3, 5, KEY_K),
+       KEY(2, 5, KEY_L),
+
+       KEY(1, 5, KEY_Z),
+       KEY(0, 5, KEY_X),
+       KEY(7, 6, KEY_C),
+       KEY(6, 6, KEY_V),
+       KEY(5, 6, KEY_B),
+       KEY(4, 6, KEY_N),
+       KEY(3, 6, KEY_M),
+       KEY(2, 6, KEY_SPACE),
+
+       KEY(0, 7, KEY_LEFTSHIFT),       /* Vol up    */
+       KEY(3, 7, KEY_LEFTCTRL),        /* Vol down  */
+
+       0
+};
+
 void ams_delta_latch1_write(u8 mask, u8 value)
 {
        ams_delta_latch1_reg &= ~mask;
@@ -76,6 +158,10 @@ static struct map_desc ams_delta_io_desc[] __initdata = {
        }
 };
 
+static struct omap_lcd_config ams_delta_lcd_config __initdata = {
+       .ctrl_name      = "internal",
+};
+
 static struct omap_uart_config ams_delta_uart_config __initdata = {
        .enabled_uarts = 1,
 };
@@ -87,16 +173,50 @@ static struct omap_usb_config ams_delta_usb_config __initdata = {
 };
 
 static struct omap_board_config_kernel ams_delta_config[] = {
+       { OMAP_TAG_LCD,         &ams_delta_lcd_config },
        { OMAP_TAG_UART,        &ams_delta_uart_config },
        { OMAP_TAG_USB,         &ams_delta_usb_config },
 };
 
+static struct resource ams_delta_kp_resources[] = {
+       [0] = {
+               .start  = INT_KEYBOARD,
+               .end    = INT_KEYBOARD,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct omap_kp_platform_data ams_delta_kp_data = {
+       .rows           = 8,
+       .cols           = 8,
+       .keymap         = ams_delta_keymap,
+       .keymapsize     = ARRAY_SIZE(ams_delta_keymap),
+       .delay          = 9,
+};
+
+static struct platform_device ams_delta_kp_device = {
+       .name           = "omap-keypad",
+       .id             = -1,
+       .dev            = {
+               .platform_data = &ams_delta_kp_data,
+       },
+       .num_resources  = ARRAY_SIZE(ams_delta_kp_resources),
+       .resource       = ams_delta_kp_resources,
+};
+
+static struct platform_device ams_delta_lcd_device = {
+       .name   = "lcd_ams_delta",
+       .id     = -1,
+};
+
 static struct platform_device ams_delta_led_device = {
        .name   = "ams-delta-led",
        .id     = -1
 };
 
 static struct platform_device *ams_delta_devices[] __initdata = {
+       &ams_delta_kp_device,
+       &ams_delta_lcd_device,
        &ams_delta_led_device,
 };
 
index 48c8c9195dc3ed339ac26f403f48c59a86fc7733..d901dcbe8066e304fac56573d8046bc2e4771a8b 100644 (file)
@@ -139,6 +139,66 @@ static struct platform_device h2_nor_device = {
        .resource       = &h2_nor_resource,
 };
 
+#if 0  /* REVISIT: Enable when nand_platform_data is applied */
+
+static struct mtd_partition h2_nand_partitions[] = {
+#if 0
+       /* REVISIT:  enable these partitions if you make NAND BOOT
+        * work on your H2 (rev C or newer); published versions of
+        * x-load only support P2 and H3.
+        */
+       {
+               .name           = "xloader",
+               .offset         = 0,
+               .size           = 64 * 1024,
+               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
+       },
+       {
+               .name           = "bootloader",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = 256 * 1024,
+               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
+       },
+       {
+               .name           = "params",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = 192 * 1024,
+       },
+       {
+               .name           = "kernel",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = 2 * SZ_1M,
+       },
+#endif
+       {
+               .name           = "filesystem",
+               .size           = MTDPART_SIZ_FULL,
+               .offset         = MTDPART_OFS_APPEND,
+       },
+};
+
+/* dip switches control NAND chip access:  8 bit, 16 bit, or neither */
+static struct nand_platform_data h2_nand_data = {
+       .options        = NAND_SAMSUNG_LP_OPTIONS,
+       .parts          = h2_nand_partitions,
+       .nr_parts       = ARRAY_SIZE(h2_nand_partitions),
+};
+
+static struct resource h2_nand_resource = {
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device h2_nand_device = {
+       .name           = "omapnand",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &h2_nand_data,
+       },
+       .num_resources  = 1,
+       .resource       = &h2_nand_resource,
+};
+#endif
+
 static struct resource h2_smc91x_resources[] = {
        [0] = {
                .start  = OMAP1610_ETHR_START,          /* Physical */
@@ -218,11 +278,15 @@ static struct resource h2_irda_resources[] = {
                .flags  = IORESOURCE_IRQ,
        },
 };
+
+static u64 irda_dmamask = 0xffffffff;
+
 static struct platform_device h2_irda_device = {
        .name           = "omapirda",
        .id             = 0,
        .dev            = {
                .platform_data  = &h2_irda_data,
+               .dma_mask       = &irda_dmamask,
        },
        .num_resources  = ARRAY_SIZE(h2_irda_resources),
        .resource       = h2_irda_resources,
@@ -270,6 +334,7 @@ static struct platform_device h2_mcbsp1_device = {
 
 static struct platform_device *h2_devices[] __initdata = {
        &h2_nor_device,
+       //&h2_nand_device,
        &h2_smc91x_device,
        &h2_irda_device,
        &h2_kp_device,
@@ -333,6 +398,13 @@ static struct omap_board_config_kernel h2_config[] __initdata = {
        { OMAP_TAG_LCD,         &h2_lcd_config },
 };
 
+#define H2_NAND_RB_GPIO_PIN    62
+
+static int h2_nand_dev_ready(struct nand_platform_data *data)
+{
+       return omap_get_gpio_datain(H2_NAND_RB_GPIO_PIN);
+}
+
 static void __init h2_init(void)
 {
        /* Here we assume the NOR boot config:  NOR on CS3 (possibly swapped
@@ -347,6 +419,13 @@ static void __init h2_init(void)
        h2_nor_resource.end = h2_nor_resource.start = omap_cs3_phys();
        h2_nor_resource.end += SZ_32M - 1;
 
+#if 0  /* REVISIT: Enable when nand_platform_data is applied */
+       h2_nand_resource.end = h2_nand_resource.start = OMAP_CS2B_PHYS;
+       h2_nand_resource.end += SZ_4K - 1;
+       if (!(omap_request_gpio(H2_NAND_RB_GPIO_PIN)))
+               h2_nand_data.dev_ready = h2_nand_dev_ready;
+#endif
+
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
        omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
 
index 79d4ef4c54d4818918b216db9da312d24e14b0bf..4167f3480974a268e21a15abbdeabf434c70ddba 100644 (file)
@@ -44,6 +44,8 @@
 #include <asm/arch/keypad.h>
 #include <asm/arch/dma.h>
 #include <asm/arch/common.h>
+#include <asm/arch/mcbsp.h>
+#include <asm/arch/omap-alsa.h>
 
 extern int omap_gpio_init(void);
 
@@ -351,11 +353,14 @@ static struct resource h3_irda_resources[] = {
        },
 };
 
+static u64 irda_dmamask = 0xffffffff;
+
 static struct platform_device h3_irda_device = {
        .name           = "omapirda",
        .id             = 0,
        .dev            = {
                .platform_data  = &h3_irda_data,
+               .dma_mask       = &irda_dmamask,
        },
        .num_resources  = ARRAY_SIZE(h3_irda_resources),
        .resource       = h3_irda_resources,
@@ -366,6 +371,41 @@ static struct platform_device h3_lcd_device = {
        .id             = -1,
 };
 
+static struct omap_mcbsp_reg_cfg mcbsp_regs = {
+       .spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
+       .spcr1 = RINTM(3) | RRST,
+       .rcr2  = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) |
+                RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(1),
+       .rcr1  = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16),
+       .xcr2  = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) |
+                XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(1) | XFIG,
+       .xcr1  = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16),
+       .srgr1 = FWID(15),
+       .srgr2 = GSYNC | CLKSP | FSGM | FPER(31),
+
+       .pcr0  = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP,
+       //.pcr0 = CLKXP | CLKRP,        /* mcbsp: slave */
+};
+
+static struct omap_alsa_codec_config alsa_config = {
+       .name                   = "H3 TSC2101",
+       .mcbsp_regs_alsa        = &mcbsp_regs,
+       .codec_configure_dev    = NULL, // tsc2101_configure,
+       .codec_set_samplerate   = NULL, // tsc2101_set_samplerate,
+       .codec_clock_setup      = NULL, // tsc2101_clock_setup,
+       .codec_clock_on         = NULL, // tsc2101_clock_on,
+       .codec_clock_off        = NULL, // tsc2101_clock_off,
+       .get_default_samplerate = NULL, // tsc2101_get_default_samplerate,
+};
+
+static struct platform_device h3_mcbsp1_device = {
+       .name   = "omap_alsa_mcbsp",
+       .id     = 1,
+       .dev = {
+               .platform_data  = &alsa_config,
+       },
+};
+
 static struct platform_device *devices[] __initdata = {
        &nor_device,
        &nand_device,
@@ -374,6 +414,7 @@ static struct platform_device *devices[] __initdata = {
        &h3_irda_device,
        &h3_kp_device,
        &h3_lcd_device,
+       &h3_mcbsp1_device,
 };
 
 static struct omap_usb_config h3_usb_config __initdata = {
index 70014f751bc4baa7c70e06f15affa9e84a01d771..22db19a536478d3ad9f9a5ee1b96ad567f776ab2 100644 (file)
 #include <asm/arch/dsp_common.h>
 #include <asm/arch/aic23.h>
 #include <asm/arch/gpio.h>
+#include <asm/arch/omapfb.h>
+#include <asm/arch/lcd_mipid.h>
+
+#include "../plat-omap/dsp/dsp_common.h"
+
+#define ADS7846_PENDOWN_GPIO   15
 
 static void __init omap_nokia770_init_irq(void)
 {
@@ -91,9 +97,44 @@ static struct platform_device nokia770_kp_device = {
 };
 
 static struct platform_device *nokia770_devices[] __initdata = {
-        &nokia770_kp_device,
+       &nokia770_kp_device,
+};
+
+static void mipid_shutdown(struct mipid_platform_data *pdata)
+{
+       if (pdata->nreset_gpio != -1) {
+               printk(KERN_INFO "shutdown LCD\n");
+               omap_set_gpio_dataout(pdata->nreset_gpio, 0);
+               msleep(120);
+       }
+}
+
+static struct mipid_platform_data nokia770_mipid_platform_data = {
+       .shutdown = mipid_shutdown,
 };
 
+static void mipid_dev_init(void)
+{
+       const struct omap_lcd_config *conf;
+
+       conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
+       if (conf != NULL) {
+               nokia770_mipid_platform_data.nreset_gpio = conf->nreset_gpio;
+               nokia770_mipid_platform_data.data_lines = conf->data_lines;
+       }
+}
+
+static void ads7846_dev_init(void)
+{
+       if (omap_request_gpio(ADS7846_PENDOWN_GPIO) < 0)
+               printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
+}
+
+static int ads7846_get_pendown_state(void)
+{
+       return !omap_get_gpio_datain(ADS7846_PENDOWN_GPIO);
+}
+
 static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = {
        .x_max          = 0x0fff,
        .y_max          = 0x0fff,
@@ -101,14 +142,17 @@ static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata =
        .pressure_max   = 255,
        .debounce_max   = 10,
        .debounce_tol   = 3,
+       .debounce_rep   = 1,
+       .get_pendown_state      = ads7846_get_pendown_state,
 };
 
 static struct spi_board_info nokia770_spi_board_info[] __initdata = {
        [0] = {
-               .modalias               = "lcd_mipid",
+               .modalias       = "lcd_mipid",
                .bus_num        = 2,
                .chip_select    = 3,
                .max_speed_hz   = 12000000,
+               .platform_data  = &nokia770_mipid_platform_data,
        },
        [1] = {
                .modalias       = "ads7846",
@@ -153,6 +197,7 @@ static struct omap_board_config_kernel nokia770_config[] = {
        { OMAP_TAG_MMC,         &nokia770_mmc_config },
 };
 
+#if    defined(CONFIG_OMAP_DSP)
 /*
  * audio power control
  */
@@ -183,7 +228,7 @@ static void nokia770_audio_pwr_up(void)
        clk_enable(dspxor_ck);
 
        /* Turn on codec */
-       tlv320aic23_power_up();
+       aic23_power_up();
 
        if (omap_get_gpio_datain(HEADPHONE_GPIO))
                /* HP not connected, turn on amplifier */
@@ -197,7 +242,7 @@ static void codec_delayed_power_down(struct work_struct *work)
 {
        down(&audio_pwr_sem);
        if (audio_pwr_state == -1)
-               tlv320aic23_power_down();
+               aic23_power_down();
        clk_disable(dspxor_ck);
        up(&audio_pwr_sem);
 }
@@ -213,7 +258,8 @@ static void nokia770_audio_pwr_down(void)
        schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */
 }
 
-void nokia770_audio_pwr_up_request(int stage)
+static int
+nokia770_audio_pwr_up_request(struct dsp_kfunc_device *kdev, int stage)
 {
        down(&audio_pwr_sem);
        if (audio_pwr_state == -1)
@@ -221,9 +267,11 @@ void nokia770_audio_pwr_up_request(int stage)
        /* force audio_pwr_state = 0, even if it was 1. */
        audio_pwr_state = 0;
        up(&audio_pwr_sem);
+       return 0;
 }
 
-void nokia770_audio_pwr_down_request(int stage)
+static int
+nokia770_audio_pwr_down_request(struct dsp_kfunc_device *kdev, int stage)
 {
        down(&audio_pwr_sem);
        switch (stage) {
@@ -239,8 +287,39 @@ void nokia770_audio_pwr_down_request(int stage)
                break;
        }
        up(&audio_pwr_sem);
+       return 0;
 }
 
+static struct dsp_kfunc_device nokia770_audio_device = {
+       .name    = "audio",
+       .type    = DSP_KFUNC_DEV_TYPE_AUDIO,
+       .enable  = nokia770_audio_pwr_up_request,
+       .disable = nokia770_audio_pwr_down_request,
+};
+
+static __init int omap_dsp_init(void)
+{
+       int ret;
+
+       dspxor_ck = clk_get(0, "dspxor_ck");
+       if (IS_ERR(dspxor_ck)) {
+               printk(KERN_ERR "couldn't acquire dspxor_ck\n");
+               return PTR_ERR(dspxor_ck);
+       }
+
+       ret = dsp_kfunc_device_register(&nokia770_audio_device);
+       if (ret) {
+               printk(KERN_ERR
+                      "KFUNC device registration faild: %s\n",
+                      nokia770_audio_device.name);
+               goto out;
+       }
+       return 0;
+ out:
+       return ret;
+}
+#endif /* CONFIG_OMAP_DSP */
+
 static void __init omap_nokia770_init(void)
 {
        nokia770_config[0].data = &nokia770_usb_config;
@@ -250,10 +329,11 @@ static void __init omap_nokia770_init(void)
                                ARRAY_SIZE(nokia770_spi_board_info));
        omap_board_config = nokia770_config;
        omap_board_config_size = ARRAY_SIZE(nokia770_config);
+       omap_gpio_init();
        omap_serial_init();
-       omap_dsp_audio_pwr_up_request = nokia770_audio_pwr_up_request;
-       omap_dsp_audio_pwr_down_request = nokia770_audio_pwr_down_request;
-       dspxor_ck = clk_get(0, "dspxor_ck");
+       omap_dsp_init();
+       ads7846_dev_init();
+       mipid_dev_init();
 }
 
 static void __init omap_nokia770_map_io(void)
index e7130293a03fbc2e96346aeb5d22aa6b7e20ee1a..1825781f4354468b3ef6893943fd39f36e1accfc 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 
@@ -292,6 +293,18 @@ static struct platform_device osk5912_kp_device = {
        .resource       = osk5912_kp_resources,
 };
 
+static struct omap_backlight_config mistral_bl_data = {
+       .default_intensity      = 0xa0,
+};
+
+static struct platform_device mistral_bl_device = {
+       .name           = "omap-bl",
+       .id             = -1,
+       .dev            = {
+               .platform_data = &mistral_bl_data,
+       },
+};
+
 static struct platform_device osk5912_lcd_device = {
        .name           = "lcd_osk",
        .id             = -1,
@@ -299,6 +312,7 @@ static struct platform_device osk5912_lcd_device = {
 
 static struct platform_device *mistral_devices[] __initdata = {
        &osk5912_kp_device,
+       &mistral_bl_device,
        &osk5912_lcd_device,
 };
 
@@ -342,6 +356,38 @@ static void __init osk_mistral_init(void)
         * can't talk to the ads or even the i2c eeprom.
         */
 
+       /* parallel camera interface */
+       omap_cfg_reg(J15_1610_CAM_LCLK);
+       omap_cfg_reg(J18_1610_CAM_D7);
+       omap_cfg_reg(J19_1610_CAM_D6);
+       omap_cfg_reg(J14_1610_CAM_D5);
+       omap_cfg_reg(K18_1610_CAM_D4);
+       omap_cfg_reg(K19_1610_CAM_D3);
+       omap_cfg_reg(K15_1610_CAM_D2);
+       omap_cfg_reg(K14_1610_CAM_D1);
+       omap_cfg_reg(L19_1610_CAM_D0);
+       omap_cfg_reg(L18_1610_CAM_VS);
+       omap_cfg_reg(L15_1610_CAM_HS);
+       omap_cfg_reg(M19_1610_CAM_RSTZ);
+       omap_cfg_reg(Y15_1610_CAM_OUTCLK);
+
+       /* serial camera interface */
+       omap_cfg_reg(H19_1610_CAM_EXCLK);
+       omap_cfg_reg(W13_1610_CCP_CLKM);
+       omap_cfg_reg(Y12_1610_CCP_CLKP);
+       /* CCP_DATAM CONFLICTS WITH UART1.TX (and serial console) */
+       // omap_cfg_reg(Y14_1610_CCP_DATAM);
+       omap_cfg_reg(W14_1610_CCP_DATAP);
+
+       /* CAM_PWDN */
+       if (omap_request_gpio(11) == 0) {
+               omap_cfg_reg(N20_1610_GPIO11);
+               omap_set_gpio_direction(11, 0 /* out */);
+               omap_set_gpio_dataout(11, 0 /* off */);
+       } else
+               pr_debug("OSK+Mistral: CAM_PWDN is awol\n");
+
+
        // omap_cfg_reg(P19_1610_GPIO6);        // BUSY
        omap_cfg_reg(P20_1610_GPIO4);   // PENIRQ
        set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING);
@@ -372,6 +418,15 @@ static void __init osk_mistral_init(void)
        } else
                printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n");
 
+       /* LCD:  backlight, and power; power controls other devices on the
+        * board, like the touchscreen, EEPROM, and wakeup (!) switch.
+        */
+       omap_cfg_reg(PWL);
+       if (omap_request_gpio(2) == 0) {
+               omap_set_gpio_direction(2, 0 /* out */);
+               omap_set_gpio_dataout(2, 1 /* on */);
+       }
+
        platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices));
 }
 #else
index 015824185629104307e65f1360c102ec797e23e5..2f9d00a001351da0b4806dc524beed96ce58d2b0 100644 (file)
 
 #include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/input.h>
 #include <linux/platform_device.h>
-#include <linux/notifier.h>
-#include <linux/clk.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/tsc2102.h>
+#include <linux/interrupt.h>
 
+#include <asm/apm.h>
 #include <asm/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
+#include <asm/mach/flash.h>
 
 #include <asm/arch/gpio.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/usb.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/dma.h>
 #include <asm/arch/board.h>
+#include <asm/arch/irda.h>
+#include <asm/arch/keypad.h>
 #include <asm/arch/common.h>
+#include <asm/arch/mcbsp.h>
+#include <asm/arch/omap-alsa.h>
 
-static void __init omap_generic_init_irq(void)
+static void __init omap_palmte_init_irq(void)
 {
        omap1_init_common_hw();
        omap_init_irq();
+       omap_gpio_init();
 }
 
+static int palmte_keymap[] = {
+       KEY(0, 0, KEY_F1),
+       KEY(0, 1, KEY_F2),
+       KEY(0, 2, KEY_F3),
+       KEY(0, 3, KEY_F4),
+       KEY(0, 4, KEY_POWER),
+       KEY(1, 0, KEY_LEFT),
+       KEY(1, 1, KEY_DOWN),
+       KEY(1, 2, KEY_UP),
+       KEY(1, 3, KEY_RIGHT),
+       KEY(1, 4, KEY_CENTER),
+       0,
+};
+
+static struct omap_kp_platform_data palmte_kp_data = {
+       .rows   = 8,
+       .cols   = 8,
+       .keymap = palmte_keymap,
+       .rep    = 1,
+       .delay  = 12,
+};
+
+static struct resource palmte_kp_resources[] = {
+       [0]     = {
+               .start  = INT_KEYBOARD,
+               .end    = INT_KEYBOARD,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device palmte_kp_device = {
+       .name           = "omap-keypad",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &palmte_kp_data,
+       },
+       .num_resources  = ARRAY_SIZE(palmte_kp_resources),
+       .resource       = palmte_kp_resources,
+};
+
+static struct mtd_partition palmte_rom_partitions[] = {
+       /* PalmOS "Small ROM", contains the bootloader and the debugger */
+       {
+               .name           = "smallrom",
+               .offset         = 0,
+               .size           = 0xa000,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+       /* PalmOS "Big ROM", a filesystem with all the OS code and data */
+       {
+               .name           = "bigrom",
+               .offset         = SZ_128K,
+               /*
+                * 0x5f0000 bytes big in the multi-language ("EFIGS") version,
+                * 0x7b0000 bytes in the English-only ("enUS") version.
+                */
+               .size           = 0x7b0000,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+};
+
+static struct flash_platform_data palmte_rom_data = {
+       .map_name       = "map_rom",
+       .width          = 2,
+       .parts          = palmte_rom_partitions,
+       .nr_parts       = ARRAY_SIZE(palmte_rom_partitions),
+};
+
+static struct resource palmte_rom_resource = {
+       .start          = OMAP_CS0_PHYS,
+       .end            = OMAP_CS0_PHYS + SZ_8M - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device palmte_rom_device = {
+       .name           = "omapflash",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &palmte_rom_data,
+       },
+       .num_resources  = 1,
+       .resource       = &palmte_rom_resource,
+};
+
 static struct platform_device palmte_lcd_device = {
        .name           = "lcd_palmte",
        .id             = -1,
 };
 
+static struct omap_backlight_config palmte_backlight_config = {
+       .default_intensity      = 0xa0,
+};
+
+static struct platform_device palmte_backlight_device = {
+       .name           = "omap-bl",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &palmte_backlight_config,
+       },
+};
+
+static struct omap_irda_config palmte_irda_config = {
+       .transceiver_cap        = IR_SIRMODE,
+       .rx_channel             = OMAP_DMA_UART3_RX,
+       .tx_channel             = OMAP_DMA_UART3_TX,
+       .dest_start             = UART3_THR,
+       .src_start              = UART3_RHR,
+       .tx_trigger             = 0,
+       .rx_trigger             = 0,
+};
+
+static struct resource palmte_irda_resources[] = {
+       [0]     = {
+               .start  = INT_UART3,
+               .end    = INT_UART3,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device palmte_irda_device = {
+       .name           = "omapirda",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &palmte_irda_config,
+       },
+       .num_resources  = ARRAY_SIZE(palmte_irda_resources),
+       .resource       = palmte_irda_resources,
+};
+
 static struct platform_device *devices[] __initdata = {
+       &palmte_rom_device,
+       &palmte_kp_device,
        &palmte_lcd_device,
+       &palmte_backlight_device,
+       &palmte_irda_device,
 };
 
 static struct omap_usb_config palmte_usb_config __initdata = {
-       .register_dev   = 1,
+       .register_dev   = 1,    /* Mini-B only receptacle */
        .hmc_mode       = 0,
-       .pins[0]        = 3,
+       .pins[0]        = 2,
 };
 
 static struct omap_mmc_config palmte_mmc_config __initdata = {
-       .mmc [0] = {
+       .mmc[0]         = {
                .enabled        = 1,
-               .wire4          = 1,
-               .wp_pin         = OMAP_MPUIO(3),
-               .power_pin      = -1,
-               .switch_pin     = -1,
+               .wp_pin         = PALMTE_MMC_WP_GPIO,
+               .power_pin      = PALMTE_MMC_POWER_GPIO,
+               .switch_pin     = PALMTE_MMC_SWITCH_GPIO,
        },
 };
 
@@ -67,21 +207,222 @@ static struct omap_lcd_config palmte_lcd_config __initdata = {
        .ctrl_name      = "internal",
 };
 
+static struct omap_uart_config palmte_uart_config __initdata = {
+       .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2),
+};
+
+static struct omap_mcbsp_reg_cfg palmte_mcbsp1_regs = {
+       .spcr2  = FRST | GRST | XRST | XINTM(3),
+       .xcr2   = XDATDLY(1) | XFIG,
+       .xcr1   = XWDLEN1(OMAP_MCBSP_WORD_32),
+       .pcr0   = SCLKME | FSXP | CLKXP,
+};
+
+static struct omap_alsa_codec_config palmte_alsa_config = {
+       .name                   = "TSC2102 audio",
+       .mcbsp_regs_alsa        = &palmte_mcbsp1_regs,
+       .codec_configure_dev    = NULL, /* tsc2102_configure, */
+       .codec_set_samplerate   = NULL, /* tsc2102_set_samplerate, */
+       .codec_clock_setup      = NULL, /* tsc2102_clock_setup, */
+       .codec_clock_on         = NULL, /* tsc2102_clock_on, */
+       .codec_clock_off        = NULL, /* tsc2102_clock_off, */
+       .get_default_samplerate = NULL, /* tsc2102_get_default_samplerate, */
+};
+
+#ifdef CONFIG_APM
+/*
+ * Values measured in 10 minute intervals averaged over 10 samples.
+ * May differ slightly from device to device but should be accurate
+ * enough to give basic idea of battery life left and trigger
+ * potential alerts.
+ */
+static const int palmte_battery_sample[] = {
+       2194, 2157, 2138, 2120,
+       2104, 2089, 2075, 2061,
+       2048, 2038, 2026, 2016,
+       2008, 1998, 1989, 1980,
+       1970, 1958, 1945, 1928,
+       1910, 1888, 1860, 1827,
+       1791, 1751, 1709, 1656,
+};
+
+#define INTERVAL               10
+#define BATTERY_HIGH_TRESHOLD  66
+#define BATTERY_LOW_TRESHOLD   33
+
+static void palmte_get_power_status(struct apm_power_info *info, int *battery)
+{
+       int charging, batt, hi, lo, mid;
+
+       charging = !omap_get_gpio_datain(PALMTE_DC_GPIO);
+       batt = battery[0];
+       if (charging)
+               batt -= 60;
+
+       hi = ARRAY_SIZE(palmte_battery_sample);
+       lo = 0;
+
+       info->battery_flag = 0;
+       info->units = APM_UNITS_MINS;
+
+       if (batt > palmte_battery_sample[lo]) {
+               info->battery_life = 100;
+               info->time = INTERVAL * ARRAY_SIZE(palmte_battery_sample);
+       } else if (batt <= palmte_battery_sample[hi - 1]) {
+               info->battery_life = 0;
+               info->time = 0;
+       } else {
+               while (hi > lo + 1) {
+                       mid = (hi + lo) >> 2;
+                       if (batt <= palmte_battery_sample[mid])
+                               lo = mid;
+                       else
+                               hi = mid;
+               }
+
+               mid = palmte_battery_sample[lo] - palmte_battery_sample[hi];
+               hi = palmte_battery_sample[lo] - batt;
+               info->battery_life = 100 - (100 * lo + 100 * hi / mid) /
+                       ARRAY_SIZE(palmte_battery_sample);
+               info->time = INTERVAL * (ARRAY_SIZE(palmte_battery_sample) -
+                               lo) - INTERVAL * hi / mid;
+       }
+
+       if (charging) {
+               info->ac_line_status = APM_AC_ONLINE;
+               info->battery_status = APM_BATTERY_STATUS_CHARGING;
+               info->battery_flag |= APM_BATTERY_FLAG_CHARGING;
+       } else {
+               info->ac_line_status = APM_AC_OFFLINE;
+               if (info->battery_life > BATTERY_HIGH_TRESHOLD)
+                       info->battery_status = APM_BATTERY_STATUS_HIGH;
+               else if (info->battery_life > BATTERY_LOW_TRESHOLD)
+                       info->battery_status = APM_BATTERY_STATUS_LOW;
+               else
+                       info->battery_status = APM_BATTERY_STATUS_CRITICAL;
+       }
+
+       if (info->battery_life > BATTERY_HIGH_TRESHOLD)
+               info->battery_flag |= APM_BATTERY_FLAG_HIGH;
+       else if (info->battery_life > BATTERY_LOW_TRESHOLD)
+               info->battery_flag |= APM_BATTERY_FLAG_LOW;
+       else
+               info->battery_flag |= APM_BATTERY_FLAG_CRITICAL;
+}
+#else
+#define palmte_get_power_status        NULL
+#endif
+
+static struct tsc2102_config palmte_tsc2102_config = {
+       .use_internal   = 0,
+       .monitor        = TSC_BAT1 | TSC_AUX | TSC_TEMP,
+       .temp_at25c     = { 2200, 2615 },
+       .apm_report     = palmte_get_power_status,
+       .alsa_config    = &palmte_alsa_config,
+};
+
 static struct omap_board_config_kernel palmte_config[] = {
-       { OMAP_TAG_USB, &palmte_usb_config },
-       { OMAP_TAG_MMC, &palmte_mmc_config },
-       { OMAP_TAG_LCD, &palmte_lcd_config },
+       { OMAP_TAG_USB,         &palmte_usb_config },
+       { OMAP_TAG_MMC,         &palmte_mmc_config },
+       { OMAP_TAG_LCD,         &palmte_lcd_config },
+       { OMAP_TAG_UART,        &palmte_uart_config },
 };
 
-static void __init omap_generic_init(void)
+static struct spi_board_info palmte_spi_info[] __initdata = {
+       {
+               .modalias       = "tsc2102",
+               .bus_num        = 2,    /* uWire (officially) */
+               .chip_select    = 0,    /* As opposed to 3 */
+               .irq            = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO),
+               .platform_data  = &palmte_tsc2102_config,
+               .max_speed_hz   = 8000000,
+       },
+};
+
+/* Periodically check for changes on important input pins */
+struct timer_list palmte_pin_timer;
+int prev_power, prev_headphones;
+
+static void palmte_pin_handler(unsigned long data) {
+       int power, headphones;
+
+       power = !omap_get_gpio_datain(PALMTE_DC_GPIO);
+       headphones = omap_get_gpio_datain(PALMTE_HEADPHONES_GPIO);
+
+       if (power && !prev_power)
+               printk(KERN_INFO "PM: cable connected\n");
+       else if (!power && prev_power)
+               printk(KERN_INFO "PM: cable disconnected\n");
+
+       if (headphones && !prev_headphones) {
+               /* Headphones connected, disable speaker */
+               omap_set_gpio_dataout(PALMTE_SPEAKER_GPIO, 0);
+               printk(KERN_INFO "PM: speaker off\n");
+       } else if (!headphones && prev_headphones) {
+               /* Headphones unplugged, re-enable speaker */
+               omap_set_gpio_dataout(PALMTE_SPEAKER_GPIO, 1);
+               printk(KERN_INFO "PM: speaker on\n");
+       }
+
+       prev_power = power;
+       prev_headphones = headphones;
+       mod_timer(&palmte_pin_timer, jiffies + msecs_to_jiffies(500));
+}
+
+static void __init palmte_gpio_setup(void)
+{
+       /* Set TSC2102 PINTDAV pin as input */
+       if (omap_request_gpio(PALMTE_PINTDAV_GPIO)) {
+               printk(KERN_ERR "Could not reserve PINTDAV GPIO!\n");
+               return;
+       }
+       omap_set_gpio_direction(PALMTE_PINTDAV_GPIO, 1);
+
+       /* Monitor cable-connected signals */
+       if (omap_request_gpio(PALMTE_DC_GPIO) ||
+                       omap_request_gpio(PALMTE_USB_OR_DC_GPIO) ||
+                       omap_request_gpio(PALMTE_USBDETECT_GPIO)) {
+               printk(KERN_ERR "Could not reserve cable signal GPIO!\n");
+               return;
+       }
+       omap_set_gpio_direction(PALMTE_DC_GPIO, 1);
+       omap_set_gpio_direction(PALMTE_USB_OR_DC_GPIO, 1);
+       omap_set_gpio_direction(PALMTE_USBDETECT_GPIO, 1);
+
+       /* Set speaker-enable pin as output */
+       if (omap_request_gpio(PALMTE_SPEAKER_GPIO)) {
+               printk(KERN_ERR "Could not reserve speaker GPIO!\n");
+               return;
+       }
+       omap_set_gpio_direction(PALMTE_SPEAKER_GPIO, 0);
+
+       /* Monitor the headphones-connected signal */
+       if (omap_request_gpio(PALMTE_HEADPHONES_GPIO)) {
+               printk(KERN_ERR "Could not reserve headphones signal GPIO!\n");
+               return;
+       }
+       omap_set_gpio_direction(PALMTE_HEADPHONES_GPIO, 1);
+
+       prev_power = omap_get_gpio_datain(PALMTE_DC_GPIO);
+       prev_headphones = !omap_get_gpio_datain(PALMTE_HEADPHONES_GPIO);
+       setup_timer(&palmte_pin_timer, palmte_pin_handler, 0);
+       palmte_pin_handler(0);
+}
+
+static void __init omap_palmte_init(void)
 {
        omap_board_config = palmte_config;
        omap_board_config_size = ARRAY_SIZE(palmte_config);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
+
+       spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info));
+
+       omap_serial_init();
+       palmte_gpio_setup();
 }
 
-static void __init omap_generic_map_io(void)
+static void __init omap_palmte_map_io(void)
 {
        omap1_map_common_io();
 }
@@ -90,8 +431,8 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
        .phys_io        = 0xfff00000,
        .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
        .boot_params    = 0x10000100,
-       .map_io         = omap_generic_map_io,
-       .init_irq       = omap_generic_init_irq,
-       .init_machine   = omap_generic_init,
+       .map_io         = omap_palmte_map_io,
+       .init_irq       = omap_palmte_init_irq,
+       .init_machine   = omap_palmte_init,
        .timer          = &omap_timer,
 MACHINE_END
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c
new file mode 100644 (file)
index 0000000..e47010f
--- /dev/null
@@ -0,0 +1,357 @@
+/*
+ * linux/arch/arm/mach-omap1/board-palmtt.c
+ *
+ * Modified from board-palmtt2.c
+ *
+ * Modified and amended for Palm Tungsten|T
+ * by Marek Vasut <marek.vasut@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/delay.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/notifier.h>
+#include <linux/clk.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/leds.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+
+#include <asm/arch/led.h>
+#include <asm/arch/mcbsp.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/dma.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/board.h>
+#include <asm/arch/irda.h>
+#include <asm/arch/keypad.h>
+#include <asm/arch/common.h>
+#include <asm/arch/omap-alsa.h>
+
+#include <linux/input.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
+
+static int palmtt_keymap[] = {
+       KEY(0, 0, KEY_ESC),
+       KEY(0, 1, KEY_SPACE),
+       KEY(0, 2, KEY_LEFTCTRL),
+       KEY(0, 3, KEY_TAB),
+       KEY(0, 4, KEY_ENTER),
+       KEY(1, 0, KEY_LEFT),
+       KEY(1, 1, KEY_DOWN),
+       KEY(1, 2, KEY_UP),
+       KEY(1, 3, KEY_RIGHT),
+       KEY(2, 0, KEY_SLEEP),
+       KEY(2, 4, KEY_Y),
+       0
+};
+
+static struct mtd_partition palmtt_partitions[] = {
+       {
+               .name           = "write8k",
+               .offset         = 0,
+               .size           = SZ_8K,
+               .mask_flags     = 0,
+       },
+       {
+               .name           = "PalmOS-BootLoader(ro)",
+               .offset         = SZ_8K,
+               .size           = 7 * SZ_8K,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+       {
+               .name           = "u-boot",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = 8 * SZ_8K,
+               .mask_flags     = 0,
+       },
+       {
+               .name           = "PalmOS-FS(ro)",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = 7 * SZ_1M + 4 * SZ_64K - 16 * SZ_8K,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+       {
+               .name           = "u-boot(rez)",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = SZ_128K,
+               .mask_flags     = 0
+       },
+       {
+               .name           = "empty",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = MTDPART_SIZ_FULL,
+               .mask_flags     = 0
+       }
+};
+
+static struct flash_platform_data palmtt_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = palmtt_partitions,
+       .nr_parts       = ARRAY_SIZE(palmtt_partitions),
+};
+
+static struct resource palmtt_flash_resource = {
+       .start          = OMAP_CS0_PHYS,
+       .end            = OMAP_CS0_PHYS + SZ_8M - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device palmtt_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &palmtt_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &palmtt_flash_resource,
+};
+
+#define DEFAULT_BITPERSAMPLE 16
+
+static struct omap_mcbsp_reg_cfg mcbsp_regs = {
+       .spcr2          = FREE | FRST | GRST | XRST | XINTM(3),
+       .spcr1          = RINTM(3) | RRST,
+       .rcr2           = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) |
+                               RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0),
+       .rcr1           = RFRLEN1(OMAP_MCBSP_WORD_8) |
+                               RWDLEN1(OMAP_MCBSP_WORD_16),
+       .xcr2           = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) |
+                               XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG,
+       .xcr1           = XFRLEN1(OMAP_MCBSP_WORD_8) |
+                               XWDLEN1(OMAP_MCBSP_WORD_16),
+       .srgr1          = FWID(DEFAULT_BITPERSAMPLE - 1),
+       .srgr2          = GSYNC | CLKSP | FSGM |
+                               FPER(DEFAULT_BITPERSAMPLE * 2 - 1),
+       .pcr0           = CLKXP | CLKRP,        /* mcbsp: slave */
+};
+
+static struct omap_alsa_codec_config alsa_config = {
+       .name                   = "PalmTT AIC23",
+       .mcbsp_regs_alsa        = &mcbsp_regs,
+       .codec_configure_dev    = NULL, // aic23_configure,
+       .codec_set_samplerate   = NULL, // aic23_set_samplerate,
+       .codec_clock_setup      = NULL, // aic23_clock_setup,
+       .codec_clock_on         = NULL, // aic23_clock_on,
+       .codec_clock_off        = NULL, // aic23_clock_off,
+       .get_default_samplerate = NULL, // aic23_get_default_samplerate,
+};
+
+static struct platform_device palmtt_mcbsp1_device = {
+       .name   = "omap_alsa_mcbsp",
+       .id     = 1,
+       .dev    = {
+               .platform_data  = &alsa_config,
+       },
+};
+
+static struct resource palmtt_kp_resources[] = {
+       [0] = {
+               .start  = INT_KEYBOARD,
+               .end    = INT_KEYBOARD,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct omap_kp_platform_data palmtt_kp_data = {
+       .rows   = 6,
+       .cols   = 3,
+       .keymap = palmtt_keymap,
+};
+
+static struct platform_device palmtt_kp_device = {
+       .name           = "omap-keypad",
+       .id             = -1,
+       .dev            = {
+               .platform_data = &palmtt_kp_data,
+       },
+       .num_resources  = ARRAY_SIZE(palmtt_kp_resources),
+       .resource       = palmtt_kp_resources,
+};
+
+static struct platform_device palmtt_lcd_device = {
+       .name           = "lcd_palmtt",
+       .id             = -1,
+};
+static struct omap_irda_config palmtt_irda_config = {
+       .transceiver_cap        = IR_SIRMODE,
+       .rx_channel             = OMAP_DMA_UART3_RX,
+       .tx_channel             = OMAP_DMA_UART3_TX,
+       .dest_start             = UART3_THR,
+       .src_start              = UART3_RHR,
+       .tx_trigger             = 0,
+       .rx_trigger             = 0,
+};
+
+static struct resource palmtt_irda_resources[] = {
+       [0]     = {
+               .start  = INT_UART3,
+               .end    = INT_UART3,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device palmtt_irda_device = {
+       .name           = "omapirda",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &palmtt_irda_config,
+       },
+       .num_resources  = ARRAY_SIZE(palmtt_irda_resources),
+       .resource       = palmtt_irda_resources,
+};
+
+static struct platform_device palmtt_spi_device = {
+       .name           = "spi_palmtt",
+       .id             = -1,
+};
+
+static struct omap_backlight_config palmtt_backlight_config = {
+       .default_intensity      = 0xa0,
+};
+
+static struct platform_device palmtt_backlight_device = {
+       .name           = "omap-bl",
+       .id             = -1,
+       .dev            = {
+               .platform_data= &palmtt_backlight_config,
+       },
+};
+
+static struct omap_led_config palmtt_led_config[] = {
+       {
+               .cdev   = {
+                       .name   = "palmtt:led0",
+               },
+               .gpio   = PALMTT_LED_GPIO,
+       },
+};
+
+static struct omap_led_platform_data palmtt_led_data = {
+       .nr_leds        = ARRAY_SIZE(palmtt_led_config),
+       .leds           = palmtt_led_config,
+};
+
+static struct platform_device palmtt_led_device = {
+       .name   = "omap-led",
+       .id     = -1,
+       .dev    = {
+               .platform_data  = &palmtt_led_data,
+       },
+};
+
+static struct platform_device *palmtt_devices[] __initdata = {
+       &palmtt_flash_device,
+       &palmtt_mcbsp1_device,
+       &palmtt_kp_device,
+       &palmtt_lcd_device,
+       &palmtt_irda_device,
+       &palmtt_spi_device,
+       &palmtt_backlight_device,
+       &palmtt_led_device,
+};
+
+static int palmtt_get_pendown_state(void)
+{
+       return !omap_get_gpio_datain(6);
+}
+
+static const struct ads7846_platform_data palmtt_ts_info = {
+       .model                  = 7846,
+       .vref_delay_usecs       = 100,  /* internal, no capacitor */
+       .x_plate_ohms           = 419,
+       .y_plate_ohms           = 486,
+       .get_pendown_state      = palmtt_get_pendown_state,
+};
+
+static struct spi_board_info __initdata palmtt_boardinfo[] = {
+       {
+               /* MicroWire (bus 2) CS0 has an ads7846e */
+               .modalias       = "ads7846",
+               .platform_data  = &palmtt_ts_info,
+               .irq            = OMAP_GPIO_IRQ(6),
+               .max_speed_hz   = 120000        /* max sample rate at 3V */
+                                       * 26    /* command + data + overhead */,
+               .bus_num        = 2,
+               .chip_select    = 0,
+       }
+};
+
+static void __init omap_palmtt_init_irq(void)
+{
+       omap1_init_common_hw();
+       omap_init_irq();
+}
+
+static struct omap_usb_config palmtt_usb_config __initdata = {
+       .register_dev   = 1,
+       .hmc_mode       = 0,
+       .pins[0]        = 2,
+};
+
+static struct omap_lcd_config palmtt_lcd_config __initdata = {
+       .ctrl_name      = "internal",
+};
+
+static struct omap_uart_config palmtt_uart_config __initdata = {
+       .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2),
+};
+
+static struct omap_board_config_kernel palmtt_config[] = {
+       { OMAP_TAG_USB,         &palmtt_usb_config      },
+       { OMAP_TAG_LCD,         &palmtt_lcd_config      },
+       { OMAP_TAG_UART,        &palmtt_uart_config     },
+};
+
+static void __init omap_mpu_wdt_mode(int mode) {
+       if (mode)
+               omap_writew(0x8000, OMAP_WDT_TIMER_MODE);
+       else {
+               omap_writew(0x00f5, OMAP_WDT_TIMER_MODE);
+               omap_writew(0x00a0, OMAP_WDT_TIMER_MODE);
+       }
+}
+
+static void __init omap_palmtt_init(void)
+{
+       omap_mpu_wdt_mode(0);
+
+       omap_board_config = palmtt_config;
+       omap_board_config_size = ARRAY_SIZE(palmtt_config);
+
+       platform_add_devices(palmtt_devices, ARRAY_SIZE(palmtt_devices));
+
+       spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo));
+       omap_serial_init();
+}
+
+static void __init omap_palmtt_map_io(void)
+{
+       omap1_map_common_io();
+}
+
+MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_palmtt_map_io,
+       .init_irq       = omap_palmtt_init_irq,
+       .init_machine   = omap_palmtt_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c
new file mode 100644 (file)
index 0000000..c275d51
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+ * linux/arch/arm/mach-omap1/board-palmz71.c
+ *
+ * Modified from board-generic.c
+ *
+ * Support for the Palm Zire71 PDA.
+ *
+ * Original version : Laurent Gonzalez
+ *
+ * Modified for zire71 : Marek Vasut
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/delay.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/notifier.h>
+#include <linux/clk.h>
+#include <linux/irq.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+
+#include <asm/arch/mcbsp.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/dma.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/board.h>
+#include <asm/arch/irda.h>
+#include <asm/arch/keypad.h>
+#include <asm/arch/common.h>
+#include <asm/arch/omap-alsa.h>
+
+#include <linux/input.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
+
+static void __init
+omap_palmz71_init_irq(void)
+{
+       omap1_init_common_hw();
+       omap_init_irq();
+       omap_gpio_init();
+}
+
+static int palmz71_keymap[] = {
+       KEY(0, 0, KEY_F1),
+       KEY(0, 1, KEY_F2),
+       KEY(0, 2, KEY_F3),
+       KEY(0, 3, KEY_F4),
+       KEY(0, 4, KEY_POWER),
+       KEY(1, 0, KEY_LEFT),
+       KEY(1, 1, KEY_DOWN),
+       KEY(1, 2, KEY_UP),
+       KEY(1, 3, KEY_RIGHT),
+       KEY(1, 4, KEY_CENTER),
+       KEY(2, 0, KEY_CAMERA),
+       0,
+};
+
+static struct omap_kp_platform_data palmz71_kp_data = {
+       .rows   = 8,
+       .cols   = 8,
+       .keymap = palmz71_keymap,
+       .rep    = 1,
+       .delay  = 80,
+};
+
+static struct resource palmz71_kp_resources[] = {
+       [0] = {
+               .start  = INT_KEYBOARD,
+               .end    = INT_KEYBOARD,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device palmz71_kp_device = {
+       .name   = "omap-keypad",
+       .id     = -1,
+       .dev    = {
+               .platform_data = &palmz71_kp_data,
+       },
+       .num_resources  = ARRAY_SIZE(palmz71_kp_resources),
+       .resource       = palmz71_kp_resources,
+};
+
+static struct mtd_partition palmz71_rom_partitions[] = {
+       /* PalmOS "Small ROM", contains the bootloader and the debugger */
+       {
+               .name           = "smallrom",
+               .offset         = 0,
+               .size           = 0xa000,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+       /* PalmOS "Big ROM", a filesystem with all the OS code and data */
+       {
+               .name   = "bigrom",
+               .offset = SZ_128K,
+               /*
+                * 0x5f0000 bytes big in the multi-language ("EFIGS") version,
+                * 0x7b0000 bytes in the English-only ("enUS") version.
+                */
+               .size           = 0x7b0000,
+               .mask_flags     = MTD_WRITEABLE,
+       },
+};
+
+static struct flash_platform_data palmz71_rom_data = {
+       .map_name       = "map_rom",
+       .name           = "onboardrom",
+       .width          = 2,
+       .parts          = palmz71_rom_partitions,
+       .nr_parts       = ARRAY_SIZE(palmz71_rom_partitions),
+};
+
+static struct resource palmz71_rom_resource = {
+       .start  = OMAP_CS0_PHYS,
+       .end    = OMAP_CS0_PHYS + SZ_8M - 1,
+       .flags  = IORESOURCE_MEM,
+};
+
+static struct platform_device palmz71_rom_device = {
+       .name   = "omapflash",
+       .id     = -1,
+       .dev = {
+               .platform_data = &palmz71_rom_data,
+       },
+       .num_resources  = 1,
+       .resource       = &palmz71_rom_resource,
+};
+
+static struct platform_device palmz71_lcd_device = {
+       .name   = "lcd_palmz71",
+       .id     = -1,
+};
+
+static struct omap_irda_config palmz71_irda_config = {
+       .transceiver_cap        = IR_SIRMODE,
+       .rx_channel             = OMAP_DMA_UART3_RX,
+       .tx_channel             = OMAP_DMA_UART3_TX,
+       .dest_start             = UART3_THR,
+       .src_start              = UART3_RHR,
+       .tx_trigger             = 0,
+       .rx_trigger             = 0,
+};
+
+static struct resource palmz71_irda_resources[] = {
+       [0] = {
+               .start  = INT_UART3,
+               .end    = INT_UART3,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device palmz71_irda_device = {
+       .name   = "omapirda",
+       .id     = -1,
+       .dev = {
+               .platform_data = &palmz71_irda_config,
+       },
+       .num_resources  = ARRAY_SIZE(palmz71_irda_resources),
+       .resource       = palmz71_irda_resources,
+};
+
+static struct platform_device palmz71_spi_device = {
+       .name   = "spi_palmz71",
+       .id     = -1,
+};
+
+#define DEFAULT_BITPERSAMPLE 16
+
+static struct omap_mcbsp_reg_cfg mcbsp_regs = {
+       .spcr2  = FREE | FRST | GRST | XRST | XINTM(3),
+       .spcr1  = RINTM(3) | RRST,
+       .rcr2   = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) |
+                       RWDLEN2(OMAP_MCBSP_WORD_16) | RDATDLY(0),
+       .rcr1   = RFRLEN1(OMAP_MCBSP_WORD_8) | RWDLEN1(OMAP_MCBSP_WORD_16),
+       .xcr2   = XPHASE | XFRLEN2(OMAP_MCBSP_WORD_8) |
+                       XWDLEN2(OMAP_MCBSP_WORD_16) | XDATDLY(0) | XFIG,
+       .xcr1   = XFRLEN1(OMAP_MCBSP_WORD_8) | XWDLEN1(OMAP_MCBSP_WORD_16),
+       .srgr1  = FWID(DEFAULT_BITPERSAMPLE - 1),
+       .srgr2  = GSYNC | CLKSP | FSGM | FPER(DEFAULT_BITPERSAMPLE * 2 - 1),
+       .pcr0   = CLKXP | CLKRP,        /* mcbsp: slave */
+};
+
+static struct omap_alsa_codec_config alsa_config = {
+       .name                   = "PalmZ71 AIC23",
+       .mcbsp_regs_alsa        = &mcbsp_regs,
+       .codec_configure_dev    = NULL, /* aic23_configure */
+       .codec_set_samplerate   = NULL, /* aic23_set_samplerate */
+       .codec_clock_setup      = NULL, /* aic23_clock_setup */
+       .codec_clock_on         = NULL, /* aic23_clock_on */
+       .codec_clock_off        = NULL, /* aic23_clock_off */
+       .get_default_samplerate = NULL, /* aic23_get_default_samplerate */
+};
+
+static struct platform_device palmz71_mcbsp1_device = {
+       .name   = "omap_alsa_mcbsp",
+       .id     = 1,
+       .dev = {
+               .platform_data = &alsa_config,
+       },
+};
+
+static struct omap_backlight_config palmz71_backlight_config = {
+       .default_intensity      = 0xa0,
+};
+
+static struct platform_device palmz71_backlight_device = {
+       .name   = "omap-bl",
+       .id     = -1,
+       .dev    = {
+               .platform_data = &palmz71_backlight_config,
+       },
+};
+
+static struct platform_device *devices[] __initdata = {
+       &palmz71_rom_device,
+       &palmz71_kp_device,
+       &palmz71_mcbsp1_device,
+       &palmz71_lcd_device,
+       &palmz71_irda_device,
+       &palmz71_spi_device,
+       &palmz71_backlight_device,
+};
+
+static int
+palmz71_get_pendown_state(void)
+{
+       return !omap_get_gpio_datain(PALMZ71_PENIRQ_GPIO);
+}
+
+static const struct ads7846_platform_data palmz71_ts_info = {
+       .model                  = 7846,
+       .vref_delay_usecs       = 100,  /* internal, no capacitor */
+       .x_plate_ohms           = 419,
+       .y_plate_ohms           = 486,
+       .get_pendown_state      = palmz71_get_pendown_state,
+};
+
+static struct spi_board_info __initdata palmz71_boardinfo[] = { {
+       /* MicroWire (bus 2) CS0 has an ads7846e */
+       .modalias       = "ads7846",
+       .platform_data  = &palmz71_ts_info,
+       .irq            = OMAP_GPIO_IRQ(PALMZ71_PENIRQ_GPIO),
+       .max_speed_hz   = 120000        /* max sample rate at 3V */
+                               * 26    /* command + data + overhead */,
+       .bus_num        = 2,
+       .chip_select    = 0,
+} };
+
+static struct omap_usb_config palmz71_usb_config __initdata = {
+       .register_dev   = 1,    /* Mini-B only receptacle */
+       .hmc_mode       = 0,
+       .pins[0]        = 2,
+};
+
+static struct omap_mmc_config palmz71_mmc_config __initdata = {
+       .mmc[0] = {
+               .enabled        = 1,
+               .wire4          = 0,
+               .wp_pin         = PALMZ71_MMC_WP_GPIO,
+               .power_pin      = -1,
+               .switch_pin     = PALMZ71_MMC_IN_GPIO,
+       },
+};
+
+static struct omap_lcd_config palmz71_lcd_config __initdata = {
+       .ctrl_name = "internal",
+};
+
+static struct omap_uart_config palmz71_uart_config __initdata = {
+       .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2),
+};
+
+static struct omap_board_config_kernel palmz71_config[] = {
+       {OMAP_TAG_USB,  &palmz71_usb_config},
+       {OMAP_TAG_MMC,  &palmz71_mmc_config},
+       {OMAP_TAG_LCD,  &palmz71_lcd_config},
+       {OMAP_TAG_UART, &palmz71_uart_config},
+};
+
+static irqreturn_t
+palmz71_powercable(int irq, void *dev_id)
+{
+       if (omap_get_gpio_datain(PALMZ71_USBDETECT_GPIO)) {
+               printk(KERN_INFO "PM: Power cable connected\n");
+               set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
+                               IRQT_FALLING);
+       } else {
+               printk(KERN_INFO "PM: Power cable disconnected\n");
+               set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
+                               IRQT_RISING);
+       }
+       return IRQ_HANDLED;
+}
+
+static void __init
+omap_mpu_wdt_mode(int mode)
+{
+       if (mode)
+               omap_writew(0x8000, OMAP_WDT_TIMER_MODE);
+       else {
+               omap_writew(0x00f5, OMAP_WDT_TIMER_MODE);
+               omap_writew(0x00a0, OMAP_WDT_TIMER_MODE);
+       }
+}
+
+static void __init
+palmz71_gpio_setup(int early)
+{
+       if (early) {
+               /* Only set GPIO1 so we have a working serial */
+               omap_set_gpio_dataout(1, 1);
+               omap_set_gpio_direction(1, 0);
+       } else {
+               /* Set MMC/SD host WP pin as input */
+               if (omap_request_gpio(PALMZ71_MMC_WP_GPIO)) {
+                       printk(KERN_ERR "Could not reserve WP GPIO!\n");
+                       return;
+               }
+               omap_set_gpio_direction(PALMZ71_MMC_WP_GPIO, 1);
+
+               /* Monitor the Power-cable-connected signal */
+               if (omap_request_gpio(PALMZ71_USBDETECT_GPIO)) {
+                       printk(KERN_ERR
+                               "Could not reserve cable signal GPIO!\n");
+                       return;
+               }
+               omap_set_gpio_direction(PALMZ71_USBDETECT_GPIO, 1);
+               if (request_irq(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
+                               palmz71_powercable, IRQF_SAMPLE_RANDOM,
+                               "palmz71-cable", 0))
+                       printk(KERN_ERR
+                                       "IRQ request for power cable failed!\n");
+               palmz71_powercable(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO), 0);
+       }
+}
+
+static void __init
+omap_palmz71_init(void)
+{
+       palmz71_gpio_setup(1);
+       omap_mpu_wdt_mode(0);
+
+       omap_board_config = palmz71_config;
+       omap_board_config_size = ARRAY_SIZE(palmz71_config);
+
+       platform_add_devices(devices, ARRAY_SIZE(devices));
+
+       spi_register_board_info(palmz71_boardinfo,
+                               ARRAY_SIZE(palmz71_boardinfo));
+       omap_serial_init();
+       palmz71_gpio_setup(0);
+}
+
+static void __init
+omap_palmz71_map_io(void)
+{
+       omap1_map_common_io();
+}
+
+MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
+       .phys_io = 0xfff00000,
+       .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params = 0x10000100,.map_io = omap_palmz71_map_io,
+       .init_irq = omap_palmz71_init_irq,
+       .init_machine = omap_palmz71_init,
+       .timer = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c
new file mode 100644 (file)
index 0000000..2743d63
--- /dev/null
@@ -0,0 +1,494 @@
+/*
+* linux/arch/arm/mach-omap1/board-sx1.c
+*
+* Modified from board-generic.c
+*
+* Support for the Siemens SX1 mobile phone.
+*
+* Original version : Vladimir Ananiev (Vovan888-at-gmail com)
+*
+* Maintainters : Vladimir Ananiev (aka Vovan888), Sergge
+*              oslik.ru
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 as
+* published by the Free Software Foundation.
+*/
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/input.h>
+#include <linux/platform_device.h>
+#include <linux/notifier.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/types.h>
+#include <linux/i2c.h>
+#include <linux/errno.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/irda.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/board.h>
+#include <asm/arch/common.h>
+#include <asm/arch/mcbsp.h>
+#include <asm/arch/omap-alsa.h>
+#include <asm/arch/keypad.h>
+
+/* Write to I2C device */
+int i2c_write_byte(u8 devaddr, u8 regoffset, u8 value)
+{
+       struct i2c_adapter *adap;
+       int err;
+       struct i2c_msg msg[1];
+       unsigned char data[2];
+
+       adap = i2c_get_adapter(0);
+       if (!adap)
+               return -ENODEV;
+       msg->addr = devaddr;    /* I2C address of chip */
+       msg->flags = 0;
+       msg->len = 2;
+       msg->buf = data;
+       data[0] = regoffset;    /* register num */
+       data[1] = value;                /* register data */
+       err = i2c_transfer(adap, msg, 1);
+       if (err >= 0)
+               return 0;
+       return err;
+}
+
+/* Read from I2C device */
+int i2c_read_byte(u8 devaddr, u8 regoffset, u8 * value)
+{
+       struct i2c_adapter *adap;
+       int err;
+       struct i2c_msg msg[1];
+       unsigned char data[2];
+
+       adap = i2c_get_adapter(0);
+       if (!adap)
+               return -ENODEV;
+
+       msg->addr = devaddr;    /* I2C address of chip */
+       msg->flags = 0;
+       msg->len = 1;
+       msg->buf = data;
+       data[0] = regoffset;    /* register num */
+       err = i2c_transfer(adap, msg, 1);
+
+       msg->addr = devaddr;    /* I2C address */
+       msg->flags = I2C_M_RD;
+       msg->len = 1;
+       msg->buf = data;
+       err = i2c_transfer(adap, msg, 1);
+       *value = data[0];
+
+       if (err >= 0)
+               return 0;
+       return err;
+}
+/* set keyboard backlight intensity */
+int sx1_setkeylight(u8 keylight)
+{
+       if (keylight > SOFIA_MAX_LIGHT_VAL)
+               keylight = SOFIA_MAX_LIGHT_VAL;
+       return i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_KEYLIGHT_REG, keylight);
+}
+/* get current keylight intensity */
+int sx1_getkeylight(u8 * keylight)
+{
+       return i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_KEYLIGHT_REG, keylight);
+}
+/* set LCD backlight intensity */
+int sx1_setbacklight(u8 backlight)
+{
+       if (backlight > SOFIA_MAX_LIGHT_VAL)
+               backlight = SOFIA_MAX_LIGHT_VAL;
+       return i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_BACKLIGHT_REG, backlight);
+}
+/* get current LCD backlight intensity */
+int sx1_getbacklight (u8 * backlight)
+{
+       return i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_BACKLIGHT_REG, backlight);
+}
+/* set LCD backlight power on/off */
+int sx1_setmmipower(u8 onoff)
+{
+       int err;
+       u8 dat = 0;
+       err = i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, &dat);
+       if (err < 0)
+               return err;
+       if (onoff)
+               dat |= SOFIA_MMILIGHT_POWER;
+       else
+               dat &= ~SOFIA_MMILIGHT_POWER;
+       return i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, dat);
+}
+/* set MMC power on/off */
+int sx1_setmmcpower(u8 onoff)
+{
+       int err;
+       u8 dat = 0;
+       err = i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, &dat);
+       if (err < 0)
+               return err;
+       if (onoff)
+               dat |= SOFIA_MMC_POWER;
+       else
+               dat &= ~SOFIA_MMC_POWER;
+       return i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, dat);
+}
+/* set USB power on/off */
+int sx1_setusbpower(u8 onoff)
+{
+       int err;
+       u8 dat = 0;
+       err = i2c_read_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, &dat);
+       if (err < 0)
+               return err;
+       if (onoff)
+               dat |= SOFIA_USB_POWER;
+       else
+               dat &= ~SOFIA_USB_POWER;
+       return i2c_write_byte(SOFIA_I2C_ADDR, SOFIA_POWER1_REG, dat);
+}
+
+EXPORT_SYMBOL(sx1_setkeylight);
+EXPORT_SYMBOL(sx1_getkeylight);
+EXPORT_SYMBOL(sx1_setbacklight);
+EXPORT_SYMBOL(sx1_getbacklight);
+EXPORT_SYMBOL(sx1_setmmipower);
+EXPORT_SYMBOL(sx1_setmmcpower);
+EXPORT_SYMBOL(sx1_setusbpower);
+
+/*----------- Keypad -------------------------*/
+
+static int sx1_keymap[] = {
+       KEY(5, 3, GROUP_0 | 117), /* camera Qt::Key_F17 */
+       KEY(0, 4, GROUP_0 | 114), /* voice memo Qt::Key_F14 */
+       KEY(1, 4, GROUP_2 | 114), /* voice memo */
+       KEY(2, 4, GROUP_3 | 114), /* voice memo */
+       KEY(0, 0, GROUP_1 | KEY_F12),   /* red button Qt::Key_Hangup */
+       KEY(4, 3, GROUP_1 | KEY_LEFT),
+       KEY(2, 3, GROUP_1 | KEY_DOWN),
+       KEY(1, 3, GROUP_1 | KEY_RIGHT),
+       KEY(0, 3, GROUP_1 | KEY_UP),
+       KEY(3, 3, GROUP_1 | KEY_POWER), /* joystick press or Qt::Key_Select */
+       KEY(5, 0, GROUP_1 | KEY_1),
+       KEY(4, 0, GROUP_1 | KEY_2),
+       KEY(3, 0, GROUP_1 | KEY_3),
+       KEY(3, 4, GROUP_1 | KEY_4),
+       KEY(4, 4, GROUP_1 | KEY_5),
+       KEY(5, 4, GROUP_1 | KEY_KPASTERISK),/* "*" */
+       KEY(4, 1, GROUP_1 | KEY_6),
+       KEY(5, 1, GROUP_1 | KEY_7),
+       KEY(3, 1, GROUP_1 | KEY_8),
+       KEY(3, 2, GROUP_1 | KEY_9),
+       KEY(5, 2, GROUP_1 | KEY_0),
+       KEY(4, 2, GROUP_1 | 113),       /* # F13 Toggle input method Qt::Key_F13 */
+       KEY(0, 1, GROUP_1 | KEY_F11),   /* green button Qt::Key_Call */
+       KEY(1, 2, GROUP_1 | KEY_YEN),   /* left soft Qt::Key_Context1 */
+       KEY(2, 2, GROUP_1 | KEY_F8),    /* right soft Qt::Key_Back */
+       KEY(2, 1, GROUP_1 | KEY_LEFTSHIFT), /* shift */
+       KEY(1, 1, GROUP_1 | KEY_BACKSPACE), /* C (clear) */
+       KEY(0, 2, GROUP_1 | KEY_F7),    /* menu Qt::Key_Menu */
+       0
+};
+
+static struct resource sx1_kp_resources[] = {
+       [0] = {
+               .start  = INT_KEYBOARD,
+               .end    = INT_KEYBOARD,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct omap_kp_platform_data sx1_kp_data = {
+       .rows           = 6,
+       .cols           = 6,
+       .keymap = sx1_keymap,
+       .keymapsize = ARRAY_SIZE(sx1_keymap),
+       .delay  = 80,
+};
+
+static struct platform_device sx1_kp_device = {
+       .name           = "omap-keypad",
+       .id             = -1,
+       .dev            = {
+               .platform_data = &sx1_kp_data,
+       },
+       .num_resources  = ARRAY_SIZE(sx1_kp_resources),
+       .resource       = sx1_kp_resources,
+};
+
+/*----------- IRDA -------------------------*/
+
+static struct omap_irda_config sx1_irda_data = {
+       .transceiver_cap        = IR_SIRMODE,
+       .rx_channel             = OMAP_DMA_UART3_RX,
+       .tx_channel             = OMAP_DMA_UART3_TX,
+       .dest_start             = UART3_THR,
+       .src_start              = UART3_RHR,
+       .tx_trigger             = 0,
+       .rx_trigger             = 0,
+};
+
+static struct resource sx1_irda_resources[] = {
+       [0] = {
+               .start  = INT_UART3,
+               .end    = INT_UART3,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static u64 irda_dmamask = 0xffffffff;
+
+static struct platform_device sx1_irda_device = {
+       .name           = "omapirda",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &sx1_irda_data,
+               .dma_mask       = &irda_dmamask,
+       },
+       .num_resources  = ARRAY_SIZE(sx1_irda_resources),
+       .resource       = sx1_irda_resources,
+};
+
+/*----------- McBSP & Sound -------------------------*/
+
+/* Playback interface - McBSP1 */
+static struct omap_mcbsp_reg_cfg mcbsp1_regs = {
+       .spcr2  = XINTM(3),     /* SPCR2=30 */
+       .spcr1  = RINTM(3),     /* SPCR1=30 */
+       .rcr2   = 0,    /* RCR2 =00 */
+       .rcr1   = RFRLEN1(1) | RWDLEN1(OMAP_MCBSP_WORD_16),     /* RCR1=140 */
+       .xcr2   = 0,    /* XCR2 = 0 */
+       .xcr1   = XFRLEN1(1) | XWDLEN1(OMAP_MCBSP_WORD_16),     /* XCR1 = 140 */
+       .srgr1  = FWID(15) | CLKGDV(12),        /* SRGR1=0f0c */
+       .srgr2  = FSGM | FPER(31),      /* SRGR2=101f */
+       .pcr0   = FSXM | FSRM | CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP,
+                                               /* PCR0 =0f0f */
+};
+
+/* TODO: PCM interface - McBSP2 */
+static struct omap_mcbsp_reg_cfg mcbsp2_regs = {
+       .spcr2  = FRST | GRST | XRST | XINTM(3),        /* SPCR2=F1 */
+       .spcr1  = RINTM(3) | RRST,      /* SPCR1=30 */
+       .rcr2   = 0,    /* RCR2 =00 */
+       .rcr1   = RFRLEN1(1) | RWDLEN1(OMAP_MCBSP_WORD_16), /* RCR1 = 140 */
+       .xcr2   = 0,    /* XCR2 = 0 */
+       .xcr1   = XFRLEN1(1) | XWDLEN1(OMAP_MCBSP_WORD_16), /* XCR1 = 140 */
+       .srgr1  = FWID(15) | CLKGDV(12),        /* SRGR1=0f0c */
+       .srgr2  = FSGM | FPER(31),      /* SRGR2=101f */
+       .pcr0   = FSXM | FSRM | CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP,
+                                               /* PCR0=0f0f */
+       /* mcbsp: slave */
+};
+
+static struct omap_alsa_codec_config sx1_alsa_config = {
+       .name                   = "SX1 EGold",
+       .mcbsp_regs_alsa        = &mcbsp1_regs,
+};
+
+static struct platform_device sx1_mcbsp1_device = {
+       .name   = "omap_alsa_mcbsp",
+       .id     = 1,
+       .dev = {
+               .platform_data  = &sx1_alsa_config,
+       },
+};
+
+/*----------- MTD -------------------------*/
+
+static struct mtd_partition sx1_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+               .name           = "bootloader",
+               .offset         = 0x01800000,
+               .size           = SZ_128K,
+               .mask_flags     = MTD_WRITEABLE, /* force read-only */
+       },
+       /* bootloader params in the next sector */
+       {
+               .name           = "params",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = SZ_128K,
+               .mask_flags     = 0,
+       },
+       /* kernel */
+       {
+               .name           = "kernel",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = SZ_2M - 2 * SZ_128K,
+               .mask_flags     = 0
+       },
+       /* file system */
+       {
+               .name           = "filesystem",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = MTDPART_SIZ_FULL,
+               .mask_flags     = 0
+       }
+};
+
+static struct flash_platform_data sx1_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = sx1_partitions,
+       .nr_parts       = ARRAY_SIZE(sx1_partitions),
+};
+
+#ifdef CONFIG_SX1_OLD_FLASH
+/* MTD Intel StrataFlash - old flashes */
+static struct resource sx1_old_flash_resource[] = {
+       [0] = {
+               .start  = OMAP_CS0_PHYS,        /* Physical */
+               .end    = OMAP_CS0_PHYS + SZ_16M - 1,,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_CS1_PHYS,
+               .end    = OMAP_CS1_PHYS + SZ_8M - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device sx1_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &sx1_flash_data,
+       },
+       .num_resources  = 2,
+       .resource       = &sx1_old_flash_resource,
+};
+#else
+/* MTD Intel 4000 flash - new flashes */
+static struct resource sx1_new_flash_resource = {
+       .start          = OMAP_CS0_PHYS,
+       .end            = OMAP_CS0_PHYS + SZ_32M - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device sx1_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &sx1_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &sx1_new_flash_resource,
+};
+#endif
+
+/*----------- USB -------------------------*/
+
+static struct omap_usb_config sx1_usb_config __initdata = {
+       .otg            = 0,
+       .register_dev   = 1,
+       .register_host  = 0,
+       .hmc_mode       = 0,
+       .pins[0]        = 2,
+       .pins[1]        = 0,
+       .pins[2]        = 0,
+};
+
+/*----------- MMC -------------------------*/
+
+static struct omap_mmc_config sx1_mmc_config __initdata = {
+       .mmc [0] = {
+               .enabled        = 1,
+               .wire4          = 0,
+               .wp_pin         = -1,
+               .power_pin      = -1, /* power is in Sofia */
+               .switch_pin     = OMAP_MPUIO(3),
+       },
+};
+
+/*----------- LCD -------------------------*/
+
+static struct platform_device sx1_lcd_device = {
+       .name           = "lcd_sx1",
+       .id             = -1,
+};
+
+static struct omap_lcd_config sx1_lcd_config __initdata = {
+       .ctrl_name      = "internal",
+};
+
+/*-----------------------------------------*/
+static struct platform_device *sx1_devices[] __initdata = {
+       &sx1_flash_device,
+       &sx1_kp_device,
+       &sx1_lcd_device,
+       &sx1_mcbsp1_device,
+       &sx1_irda_device,
+};
+/*-----------------------------------------*/
+
+static struct omap_uart_config sx1_uart_config __initdata = {
+       .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
+};
+
+static struct omap_board_config_kernel sx1_config[] = {
+       { OMAP_TAG_USB, &sx1_usb_config },
+       { OMAP_TAG_MMC, &sx1_mmc_config },
+       { OMAP_TAG_LCD, &sx1_lcd_config },
+       { OMAP_TAG_UART,        &sx1_uart_config },
+};
+/*-----------------------------------------*/
+static void __init omap_sx1_init(void)
+{
+       platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
+
+       omap_board_config = sx1_config;
+       omap_board_config_size = ARRAY_SIZE(sx1_config);
+       omap_serial_init();
+
+       /* turn on USB power */
+       /* sx1_setusbpower(1); cant do it here because i2c is not ready */
+       omap_request_gpio(1);   /* A_IRDA_OFF */
+       omap_request_gpio(11);  /* A_SWITCH */
+       omap_request_gpio(15);  /* A_USB_ON */
+       omap_set_gpio_direction(1, 0);/* gpio1 -> output */
+       omap_set_gpio_direction(11, 0);/* gpio11 -> output */
+       omap_set_gpio_direction(15, 0);/* gpio15 -> output */
+       /* set GPIO data */
+       omap_set_gpio_dataout(1, 1);/*A_IRDA_OFF = 1 */
+       omap_set_gpio_dataout(11, 0);/*A_SWITCH = 0 */
+       omap_set_gpio_dataout(15, 0);/*A_USB_ON = 0 */
+
+}
+/*----------------------------------------*/
+static void __init omap_sx1_init_irq(void)
+{
+       omap1_init_common_hw();
+       omap_init_irq();
+       omap_gpio_init();
+}
+/*----------------------------------------*/
+
+static void __init omap_sx1_map_io(void)
+{
+       omap1_map_common_io();
+}
+
+MACHINE_START(SX1, "OMAP310 based Siemens SX1")
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_sx1_map_io,
+       .init_irq               = omap_sx1_init_irq,
+       .init_machine   = omap_sx1_init,
+       .timer          = &omap_timer,
+MACHINE_END
index 447a586eb33452c11b6891c618b8b3ac9033063b..214dd19889aca953922e77d6fc49efbb33c4daca 100644 (file)
@@ -235,7 +235,7 @@ static struct notifier_block panic_block = {
 static int __init voiceblue_setup(void)
 {
        /* Setup panic notifier */
-       notifier_chain_register(&panic_notifier_list, &panic_block);
+       atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
 
        return 0;
 }
index f625f6dd228a5187598d115b7293afdee924c755..5d9faa68d2ecdb7eb5c32b1915ec4b02120a374e 100644 (file)
@@ -49,6 +49,15 @@ static void omap1_uart_recalc(struct clk * clk)
                clk->rate = 12000000;
 }
 
+static void omap1_sossi_recalc(struct clk *clk)
+{
+       u32 div = omap_readl(MOD_CONF_CTRL_1);
+
+       div = (div >> 17) & 0x7;
+       div++;
+       clk->rate = clk->parent->rate / div;
+}
+
 static int omap1_clk_enable_dsp_domain(struct clk *clk)
 {
        int retval;
@@ -396,6 +405,31 @@ static int omap1_set_ext_clk_rate(struct clk * clk, unsigned long rate)
        return 0;
 }
 
+static int omap1_set_sossi_rate(struct clk *clk, unsigned long rate)
+{
+       u32 l;
+       int div;
+       unsigned long p_rate;
+
+       p_rate = clk->parent->rate;
+       /* Round towards slower frequency */
+       div = (p_rate + rate - 1) / rate;
+       div--;
+       if (div < 0 || div > 7)
+               return -EINVAL;
+
+       l = omap_readl(MOD_CONF_CTRL_1);
+       l &= ~(7 << 17);
+       l |= div << 17;
+       omap_writel(l, MOD_CONF_CTRL_1);
+
+       clk->rate = p_rate / (div + 1);
+       if (unlikely(clk->flags & RATE_PROPAGATES))
+               propagate_rate(clk);
+
+       return 0;
+}
+
 static long omap1_round_ext_clk_rate(struct clk * clk, unsigned long rate)
 {
        return 96000000 / calc_ext_dsor(rate);
index f7df00205c4a6541827cb6e8331901b4c229e34b..6eadf72828d8900ebbfbff69894b380cc5b80114 100644 (file)
@@ -17,6 +17,8 @@ static int omap1_clk_enable_generic(struct clk * clk);
 static void omap1_clk_disable_generic(struct clk * clk);
 static void omap1_ckctl_recalc(struct clk * clk);
 static void omap1_watchdog_recalc(struct clk * clk);
+static int omap1_set_sossi_rate(struct clk *clk, unsigned long rate);
+static void omap1_sossi_recalc(struct clk *clk);
 static void omap1_ckctl_recalc_dsp_domain(struct clk * clk);
 static int omap1_clk_enable_dsp_domain(struct clk * clk);
 static int omap1_clk_set_rate_dsp_domain(struct clk * clk, unsigned long rate);
@@ -168,9 +170,10 @@ static struct clk ck_dpll1 = {
 
 static struct arm_idlect1_clk ck_dpll1out = {
        .clk = {
-               .name           = "ck_dpll1out",
+               .name           = "ck_dpll1out",
                .parent         = &ck_dpll1,
-               .flags          = CLOCK_IN_OMAP16XX | CLOCK_IDLE_CONTROL,
+               .flags          = CLOCK_IN_OMAP16XX | CLOCK_IDLE_CONTROL |
+                                 ENABLE_REG_32BIT | RATE_PROPAGATES,
                .enable_reg     = (void __iomem *)ARM_IDLECT2,
                .enable_bit     = EN_CKOUT_ARM,
                .recalc         = &followparent_recalc,
@@ -180,6 +183,19 @@ static struct arm_idlect1_clk ck_dpll1out = {
        .idlect_shift   = 12,
 };
 
+static struct clk sossi_ck = {
+       .name           = "ck_sossi",
+       .parent         = &ck_dpll1out.clk,
+       .flags          = CLOCK_IN_OMAP16XX | CLOCK_NO_IDLE_PARENT |
+                         ENABLE_REG_32BIT,
+       .enable_reg     = (void __iomem *)MOD_CONF_CTRL_1,
+       .enable_bit     = 16,
+       .recalc         = &omap1_sossi_recalc,
+       .set_rate       = &omap1_set_sossi_rate,
+       .enable         = &omap1_clk_enable_generic,
+       .disable        = &omap1_clk_disable_generic,
+};
+
 static struct clk arm_ck = {
        .name           = "arm_ck",
        .parent         = &ck_dpll1,
@@ -282,7 +298,7 @@ static struct clk arminth_ck16xx = {
 static struct clk dsp_ck = {
        .name           = "dsp_ck",
        .parent         = &ck_dpll1,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          RATE_CKCTL,
        .enable_reg     = (void __iomem *)ARM_CKCTL,
        .enable_bit     = EN_DSPCK,
@@ -295,7 +311,7 @@ static struct clk dsp_ck = {
 static struct clk dspmmu_ck = {
        .name           = "dspmmu_ck",
        .parent         = &ck_dpll1,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          RATE_CKCTL | ALWAYS_ENABLED,
        .rate_offset    = CKCTL_DSPMMUDIV_OFFSET,
        .recalc         = &omap1_ckctl_recalc,
@@ -306,7 +322,7 @@ static struct clk dspmmu_ck = {
 static struct clk dspper_ck = {
        .name           = "dspper_ck",
        .parent         = &ck_dpll1,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          RATE_CKCTL | VIRTUAL_IO_ADDRESS,
        .enable_reg     = (void __iomem *)DSP_IDLECT2,
        .enable_bit     = EN_PERCK,
@@ -320,7 +336,7 @@ static struct clk dspper_ck = {
 static struct clk dspxor_ck = {
        .name           = "dspxor_ck",
        .parent         = &ck_ref,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          VIRTUAL_IO_ADDRESS,
        .enable_reg     = (void __iomem *)DSP_IDLECT2,
        .enable_bit     = EN_XORPCK,
@@ -332,7 +348,7 @@ static struct clk dspxor_ck = {
 static struct clk dsptim_ck = {
        .name           = "dsptim_ck",
        .parent         = &ck_ref,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          VIRTUAL_IO_ADDRESS,
        .enable_reg     = (void __iomem *)DSP_IDLECT2,
        .enable_bit     = EN_DSPTIMCK,
@@ -374,7 +390,7 @@ static struct clk arminth_ck1510 = {
 
 static struct clk tipb_ck = {
        /* No-idle controlled by "tc_ck" */
-       .name           = "tibp_ck",
+       .name           = "tipb_ck",
        .parent         = &tc_ck.clk,
        .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
                          ALWAYS_ENABLED,
@@ -733,7 +749,7 @@ remains active during MPU idle whenever this is enabled */
 static struct clk i2c_fck = {
        .name           = "i2c_fck",
        .id             = 1,
-       .flags          = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
+       .flags          = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
                          VIRTUAL_CLOCK | CLOCK_NO_IDLE_PARENT |
                          ALWAYS_ENABLED,
        .parent         = &armxor_ck.clk,
@@ -760,6 +776,7 @@ static struct clk * onchip_clks[] = {
        &ck_dpll1,
        /* CK_GEN1 clocks */
        &ck_dpll1out.clk,
+       &sossi_ck,
        &arm_ck,
        &armper_ck.clk,
        &arm_gpio_ck,
index 5432335bc493de0d65e44155909bd5ff413d7195..52c70e5fcf65ea459e6443be8ec5a221a627be99 100644 (file)
@@ -283,6 +283,30 @@ MUX_CFG("R11_1610_CF_IOIS16",       B,    0,    3,   2,   16,   1,   2,     1,  1)
 MUX_CFG("V10_1610_CF_IREQ",     A,   24,    3,   2,   14,   0,   2,     0,  1)
 MUX_CFG("W10_1610_CF_RESET",    A,   18,    3,   2,   12,   1,   2,     1,  1)
 MUX_CFG("W11_1610_CF_CD1",     10,   15,    3,   3,    8,   1,   3,     1,  1)
+
+/* parallel camera */
+MUX_CFG("J15_1610_CAM_LCLK",    4,   24,    0,   0,  18,   1,    0,     0,  0)
+MUX_CFG("J18_1610_CAM_D7",      4,   27,    0,   0,  19,   1,    0,     0,  0)
+MUX_CFG("J19_1610_CAM_D6",      5,    0,    0,   0,  20,   1,    0,     0,  0)
+MUX_CFG("J14_1610_CAM_D5",      5,    3,    0,   0,  21,   1,    0,     0,  0)
+MUX_CFG("K18_1610_CAM_D4",      5,    6,    0,   0,  22,   1,    0,     0,  0)
+MUX_CFG("K19_1610_CAM_D3",      5,    9,    0,   0,  23,   1,    0,     0,  0)
+MUX_CFG("K15_1610_CAM_D2",      5,   12,    0,   0,  24,   1,    0,     0,  0)
+MUX_CFG("K14_1610_CAM_D1",      5,   15,    0,   0,  25,   1,    0,     0,  0)
+MUX_CFG("L19_1610_CAM_D0",      5,   18,    0,   0,  26,   1,    0,     0,  0)
+MUX_CFG("L18_1610_CAM_VS",      5,   21,    0,   0,  27,   1,    0,     0,  0)
+MUX_CFG("L15_1610_CAM_HS",      5,   24,    0,   0,  28,   1,    0,     0,  0)
+MUX_CFG("M19_1610_CAM_RSTZ",    5,   27,    0,   0,  29,   0,    0,     0,  0)
+MUX_CFG("Y15_1610_CAM_OUTCLK",  A,    0,    6,   2,   6,   0,    2,     0,  0)
+
+/* serial camera */
+MUX_CFG("H19_1610_CAM_EXCLK",   4,   21,    0,   0,  17,   0,    0,     0,  0)
+       /* REVISIT 5912 spec sez CCP_* can't pullup or pulldown ... ? */
+MUX_CFG("Y12_1610_CCP_CLKP",    8,   18,    6,   1,  24,   1,    1,     0,  0)
+MUX_CFG("W13_1610_CCP_CLKM",    9,    0,    6,   1,  28,   1,    1,     0,  0)
+MUX_CFG("W14_1610_CCP_DATAP",   9,   24,    6,   2,   4,   1,    2,     0,  0)
+MUX_CFG("Y14_1610_CCP_DATAM",   9,   21,    6,   2,   3,   1,    2,     0,  0)
+
 };
 #endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */
 
index 2e68be607295ef3cf7174bea05c03cb5f1e90466..089b8208de0e4b25cb1b1a34a2d2b3a816ad802d 100644 (file)
@@ -153,11 +153,8 @@ void omap_pm_idle(void)
        use_idlect1 = omap_dm_timer_modify_idlect_mask(use_idlect1);
 #endif
 
-       if (omap_dma_running()) {
+       if (omap_dma_running())
                use_idlect1 &= ~(1 << 6);
-               if (omap_lcd_dma_ext_running())
-                       use_idlect1 &= ~(1 << 12);
-       }
 
        /* We should be able to remove the do_sleep variable and multiple
         * tests above as soon as drivers, timer and DMA code have been fixed.
index 7393109f5c3027f4a9973294954d5bfb53d65f34..7069c9d536f1b07ad07460a9909cb050be8d013c 100644 (file)
@@ -11,6 +11,10 @@ config ARCH_OMAP2420
        select OMAP_DM_TIMER
        select ARCH_OMAP_OTG
 
+config ARCH_OMAP2430
+       bool "OMAP2430 support"
+       depends on ARCH_OMAP24XX
+
 comment "OMAP Board Type"
        depends on ARCH_OMAP2
 
@@ -21,8 +25,13 @@ config MACH_OMAP_GENERIC
 config MACH_OMAP_H4
        bool "OMAP 2420 H4 board"
        depends on ARCH_OMAP2 && ARCH_OMAP24XX
-       select OMAP_DEBUG_LEDS if LEDS || LEDS_OMAP_DEBUG
+       select OMAP_DEBUG_DEVICES
 
 config MACH_OMAP_APOLLON
        bool "OMAP 2420 Apollon board"
        depends on ARCH_OMAP2 && ARCH_OMAP24XX
+
+config MACH_OMAP_2430SDP
+       bool "OMAP 2430 SDP board"
+       depends on ARCH_OMAP2 && ARCH_OMAP24XX
+
index 266d88e77bdc7b29da1c2c7db6b6240dddd50c08..b05b738d31e64df26d190c0a2a359e6e76a03708 100644 (file)
@@ -14,5 +14,6 @@ obj-$(CONFIG_PM) += pm.o pm-domain.o sleep.o
 # Specific board support
 obj-$(CONFIG_MACH_OMAP_GENERIC)                += board-generic.o
 obj-$(CONFIG_MACH_OMAP_H4)             += board-h4.o
+obj-$(CONFIG_MACH_OMAP_2430SDP)                += board-2430sdp.o
 obj-$(CONFIG_MACH_OMAP_APOLLON)                += board-apollon.o
 
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
new file mode 100644 (file)
index 0000000..7e76fbf
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * linux/arch/arm/mach-omap2/board-2430sdp.c
+ *
+ * Copyright (C) 2006 Texas Instruments
+ *
+ * Modified from mach-omap2/board-generic.c
+ *
+ * Initial Code : Based on a patch from Komal Shah and Richard Woodruff
+ * Updated the Code for 2430 SDP : Syed Mohammed Khasim
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/board.h>
+#include <asm/arch/common.h>
+#include <asm/arch/gpmc.h>
+#include "prcm-regs.h"
+
+#include <asm/io.h>
+
+
+#define        SDP2430_FLASH_CS        0
+#define        SDP2430_SMC91X_CS       5
+
+static struct mtd_partition sdp2430_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+               .name           = "bootloader",
+               .offset         = 0,
+               .size           = SZ_256K,
+               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
+        },
+       /* bootloader params in the next sector */
+       {
+               .name           = "params",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = SZ_128K,
+               .mask_flags     = 0,
+        },
+       /* kernel */
+       {
+               .name           = "kernel",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = SZ_2M,
+               .mask_flags     = 0
+       },
+       /* file system */
+       {
+               .name           = "filesystem",
+               .offset         = MTDPART_OFS_APPEND,
+               .size           = MTDPART_SIZ_FULL,
+               .mask_flags     = 0
+       }
+};
+
+static struct flash_platform_data sdp2430_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = sdp2430_partitions,
+       .nr_parts       = ARRAY_SIZE(sdp2430_partitions),
+};
+
+static struct resource sdp2430_flash_resource = {
+       .start          = SDP2430_CS0_BASE,
+       .end            = SDP2430_CS0_BASE + SZ_64M - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device sdp2430_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev = {
+               .platform_data  = &sdp2430_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &sdp2430_flash_resource,
+};
+
+static struct resource sdp2430_smc91x_resources[] = {
+       [0] = {
+               .start  = SDP2430_CS0_BASE,
+               .end    = SDP2430_CS0_BASE + SZ_64M - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
+               .end    = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device sdp2430_smc91x_device = {
+       .name           = "smc91x",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(sdp2430_smc91x_resources),
+       .resource       = sdp2430_smc91x_resources,
+};
+
+static struct platform_device *sdp2430_devices[] __initdata = {
+       &sdp2430_smc91x_device,
+       &sdp2430_flash_device,
+};
+
+static inline void __init sdp2430_init_smc91x(void)
+{
+       int eth_cs;
+       unsigned long cs_mem_base;
+       unsigned int rate;
+       struct clk *l3ck;
+
+       eth_cs = SDP2430_SMC91X_CS;
+
+       l3ck = clk_get(NULL, "core_l3_ck");
+       if (IS_ERR(l3ck))
+               rate = 100000000;
+       else
+               rate = clk_get_rate(l3ck);
+
+       /* Make sure CS1 timings are correct, for 2430 always muxed */
+       gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200);
+
+       if (rate >= 160000000) {
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
+       } else if (rate >= 130000000) {
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
+       } else { /* rate = 100000000 */
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F);
+               gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2);
+       }
+
+       if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) {
+               printk(KERN_ERR "Failed to request GPMC mem for smc91x\n");
+               return;
+       }
+
+       sdp2430_smc91x_resources[0].start = cs_mem_base + 0x300;
+       sdp2430_smc91x_resources[0].end = cs_mem_base + 0x30f;
+       udelay(100);
+
+       if (omap_request_gpio(OMAP24XX_ETHR_GPIO_IRQ) < 0) {
+               printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
+                       OMAP24XX_ETHR_GPIO_IRQ);
+               gpmc_cs_free(eth_cs);
+               return;
+       }
+       omap_set_gpio_direction(OMAP24XX_ETHR_GPIO_IRQ, 1);
+
+}
+
+static void __init omap_2430sdp_init_irq(void)
+{
+       omap2_init_common_hw();
+       omap_init_irq();
+       omap_gpio_init();
+       sdp2430_init_smc91x();
+}
+
+static struct omap_uart_config sdp2430_uart_config __initdata = {
+       .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
+};
+
+static struct omap_board_config_kernel sdp2430_config[] = {
+       {OMAP_TAG_UART, &sdp2430_uart_config},
+};
+
+static void __init omap_2430sdp_init(void)
+{
+       platform_add_devices(sdp2430_devices, ARRAY_SIZE(sdp2430_devices));
+       omap_board_config = sdp2430_config;
+       omap_board_config_size = ARRAY_SIZE(sdp2430_config);
+       omap_serial_init();
+}
+
+static void __init omap_2430sdp_map_io(void)
+{
+       omap2_map_common_io();
+}
+
+MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
+       /* Maintainer: Syed Khasim - Texas Instruments Inc */
+       .phys_io        = 0x48000000,
+       .io_pg_offst    = ((0xd8000000) >> 18) & 0xfffc,
+       .boot_params    = 0x80000100,
+       .map_io         = omap_2430sdp_map_io,
+       .init_irq       = omap_2430sdp_init_irq,
+       .init_machine   = omap_2430sdp_init,
+       .timer          = &omap_timer,
+MACHINE_END
index 878ff9181d0e5159477f5560e571da9cedecf91d..3bb49c17c858e063e0405046bf4e298ee5379471 100644 (file)
@@ -25,6 +25,8 @@
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/delay.h>
+#include <linux/leds.h>
+#include <linux/irq.h>
 
 #include <asm/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/flash.h>
 
 #include <asm/arch/gpio.h>
+#include <asm/arch/led.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/usb.h>
 #include <asm/arch/board.h>
 #include <asm/arch/common.h>
+#include <asm/arch/gpmc.h>
 #include "prcm-regs.h"
 
 /* LED & Switch macros */
@@ -46,6 +50,9 @@
 #define SW_UP_GPIO17           17
 #define SW_DOWN_GPIO58         58
 
+#define APOLLON_FLASH_CS       0
+#define APOLLON_ETH_CS         1
+
 static struct mtd_partition apollon_partitions[] = {
        {
                .name           = "X-Loader + U-Boot",
@@ -85,10 +92,10 @@ static struct flash_platform_data apollon_flash_data = {
        .nr_parts       = ARRAY_SIZE(apollon_partitions),
 };
 
-static struct resource apollon_flash_resource = {
-       .start          = APOLLON_CS0_BASE,
-       .end            = APOLLON_CS0_BASE + SZ_128K,
-       .flags          = IORESOURCE_MEM,
+static struct resource apollon_flash_resource[] = {
+       [0] = {
+               .flags          = IORESOURCE_MEM,
+       },
 };
 
 static struct platform_device apollon_onenand_device = {
@@ -97,14 +104,24 @@ static struct platform_device apollon_onenand_device = {
        .dev            = {
                .platform_data  = &apollon_flash_data,
        },
-       .num_resources  = ARRAY_SIZE(&apollon_flash_resource),
-       .resource       = &apollon_flash_resource,
+       .num_resources  = ARRAY_SIZE(apollon_flash_resource),
+       .resource       = apollon_flash_resource,
 };
 
+static void __init apollon_flash_init(void)
+{
+       unsigned long base;
+
+       if (gpmc_cs_request(APOLLON_FLASH_CS, SZ_128K, &base) < 0) {
+               printk(KERN_ERR "Cannot request OneNAND GPMC CS\n");
+               return;
+       }
+       apollon_flash_resource[0].start = base;
+       apollon_flash_resource[0].end   = base + SZ_128K - 1;
+}
+
 static struct resource apollon_smc91x_resources[] = {
        [0] = {
-               .start  = APOLLON_ETHR_START,           /* Physical */
-               .end    = APOLLON_ETHR_START + 0xf,
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
@@ -126,14 +143,51 @@ static struct platform_device apollon_lcd_device = {
        .id             = -1,
 };
 
+static struct omap_led_config apollon_led_config[] = {
+       {
+               .cdev   = {
+                       .name   = "apollon:led0",
+               },
+               .gpio   = LED0_GPIO13,
+       },
+       {
+               .cdev   = {
+                       .name   = "apollon:led1",
+               },
+               .gpio   = LED1_GPIO14,
+       },
+       {
+               .cdev   = {
+                       .name   = "apollon:led2",
+               },
+               .gpio   = LED2_GPIO15,
+       },
+};
+
+static struct omap_led_platform_data apollon_led_data = {
+       .nr_leds        = ARRAY_SIZE(apollon_led_config),
+       .leds           = apollon_led_config,
+};
+
+static struct platform_device apollon_led_device = {
+       .name           = "omap-led",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &apollon_led_data,
+       },
+};
+
 static struct platform_device *apollon_devices[] __initdata = {
        &apollon_onenand_device,
        &apollon_smc91x_device,
        &apollon_lcd_device,
+       &apollon_led_device,
 };
 
 static inline void __init apollon_init_smc91x(void)
 {
+       unsigned long base;
+
        /* Make sure CS1 timings are correct */
        GPMC_CONFIG1_1 = 0x00011203;
        GPMC_CONFIG2_1 = 0x001f1f01;
@@ -141,13 +195,20 @@ static inline void __init apollon_init_smc91x(void)
        GPMC_CONFIG4_1 = 0x1c091c09;
        GPMC_CONFIG5_1 = 0x041f1f1f;
        GPMC_CONFIG6_1 = 0x000004c4;
-       GPMC_CONFIG7_1 = 0x00000f40 | (APOLLON_CS1_BASE >> 24);
+
+       if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) {
+               printk(KERN_ERR "Failed to request GPMC CS for smc91x\n");
+               return;
+       }
+       apollon_smc91x_resources[0].start = base + 0x300;
+       apollon_smc91x_resources[0].end   = base + 0x30f;
        udelay(100);
 
        omap_cfg_reg(W4__24XX_GPIO74);
        if (omap_request_gpio(APOLLON_ETHR_GPIO_IRQ) < 0) {
                printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
                        APOLLON_ETHR_GPIO_IRQ);
+               gpmc_cs_free(APOLLON_ETH_CS);
                return;
        }
        omap_set_gpio_direction(APOLLON_ETHR_GPIO_IRQ, 1);
@@ -175,6 +236,13 @@ static struct omap_mmc_config apollon_mmc_config __initdata = {
        },
 };
 
+static struct omap_usb_config apollon_usb_config __initdata = {
+       .register_dev   = 1,
+       .hmc_mode       = 0x14, /* 0:dev 1:host1 2:disable */
+
+       .pins[0]        = 6,
+};
+
 static struct omap_lcd_config apollon_lcd_config __initdata = {
        .ctrl_name      = "internal",
 };
@@ -182,6 +250,7 @@ static struct omap_lcd_config apollon_lcd_config __initdata = {
 static struct omap_board_config_kernel apollon_config[] = {
        { OMAP_TAG_UART,        &apollon_uart_config },
        { OMAP_TAG_MMC,         &apollon_mmc_config },
+       { OMAP_TAG_USB,         &apollon_usb_config },
        { OMAP_TAG_LCD,         &apollon_lcd_config },
 };
 
@@ -250,10 +319,22 @@ static void __init apollon_sw_init(void)
                return;
 }
 
+static void __init apollon_usb_init(void)
+{
+       /* USB device */
+       /* DEVICE_SUSPEND */
+       omap_cfg_reg(P21_242X_GPIO12);
+       omap_request_gpio(12);
+       omap_set_gpio_direction(12, 0);         /* OUT */
+       omap_set_gpio_dataout(12, 0);
+}
+
 static void __init omap_apollon_init(void)
 {
        apollon_led_init();
        apollon_sw_init();
+       apollon_flash_init();
+       apollon_usb_init();
 
        /* REVISIT: where's the correct place */
        omap_cfg_reg(W19_24XX_SYS_NIRQ);
index 452193f0153182f5407ce36f99fba726cc4ca037..f125f432cc3ea27cc6254388c67e910677baca0a 100644 (file)
@@ -131,26 +131,6 @@ static struct platform_device h4_flash_device = {
        .resource       = &h4_flash_resource,
 };
 
-static struct resource h4_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP24XX_ETHR_START,          /* Physical */
-               .end    = OMAP24XX_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
-               .end    = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device h4_smc91x_device = {
-       .name           = "smc91x",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(h4_smc91x_resources),
-       .resource       = h4_smc91x_resources,
-};
-
 /* Select between the IrDA and aGPS module
  */
 static int h4_select_irda(struct device *dev, int state)
@@ -266,29 +246,14 @@ static struct platform_device h4_lcd_device = {
        .id             = -1,
 };
 
-static struct resource h4_led_resources[] = {
-       [0] = {
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct platform_device h4_led_device = {
-       .name           = "omap_dbg_led",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(h4_led_resources),
-       .resource       = h4_led_resources,
-};
-
 static struct platform_device *h4_devices[] __initdata = {
-       &h4_smc91x_device,
        &h4_flash_device,
        &h4_irda_device,
        &h4_kp_device,
        &h4_lcd_device,
-       &h4_led_device,
 };
 
-static inline void __init h4_init_smc91x(void)
+static inline void __init h4_init_debug(void)
 {
        /* Make sure CS1 timings are correct */
        GPMC_CONFIG1_1 = 0x00011200;
@@ -301,12 +266,8 @@ static inline void __init h4_init_smc91x(void)
        udelay(100);
 
        omap_cfg_reg(M15_24XX_GPIO92);
-       if (omap_request_gpio(OMAP24XX_ETHR_GPIO_IRQ) < 0) {
-               printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
-                       OMAP24XX_ETHR_GPIO_IRQ);
-               return;
-       }
-       omap_set_gpio_direction(OMAP24XX_ETHR_GPIO_IRQ, 1);
+       if (debug_card_init(cs_mem_base, OMAP24XX_ETHR_GPIO_IRQ) < 0)
+               gpmc_cs_free(eth_cs);
 }
 
 static void __init omap_h4_init_irq(void)
@@ -314,7 +275,6 @@ static void __init omap_h4_init_irq(void)
        omap2_init_common_hw();
        omap_init_irq();
        omap_gpio_init();
-       h4_init_smc91x();
 }
 
 static struct omap_uart_config h4_uart_config __initdata = {
index 52ec2f2d636022300709012b263f623b7dfc2ab5..b603bc5f8e5bad9f30314cad01ec92e77126ca60 100644 (file)
@@ -55,8 +55,10 @@ static void omap_init_i2c(void)
        if (machine_is_omap_h4())
                return;
 
-       omap_cfg_reg(J15_24XX_I2C2_SCL);
-       omap_cfg_reg(H19_24XX_I2C2_SDA);
+       if (!cpu_is_omap2430()) {
+               omap_cfg_reg(J15_24XX_I2C2_SCL);
+               omap_cfg_reg(H19_24XX_I2C2_SDA);
+       }
        (void) platform_device_register(&omap_i2c_device2);
 }
 
index e290b989aa948f4af54ff7f9024287952c77e7c6..5a4cc2076a7d4cf23c13d97e61f8bb5306b0b2e7 100644 (file)
 
 #undef DEBUG
 
+#ifdef CONFIG_ARCH_OMAP2420
 #define GPMC_BASE              0x6800a000
+#endif
+
+#ifdef CONFIG_ARCH_OMAP2430
+#define GPMC_BASE              0x6E000000
+#endif
+
 #define GPMC_REVISION          0x00
 #define GPMC_SYSCONFIG         0x10
 #define GPMC_SYSSTATUS         0x14
@@ -88,7 +95,7 @@ u32 gpmc_cs_read_reg(int cs, int idx)
 }
 
 /* TODO: Add support for gpmc_fck to clock framework and use it */
-static unsigned long gpmc_get_fclk_period(void)
+unsigned long gpmc_get_fclk_period(void)
 {
        /* In picoseconds */
        return 1000000000 / ((clk_get_rate(gpmc_l3_clk)) / 1000);
@@ -104,6 +111,13 @@ unsigned int gpmc_ns_to_ticks(unsigned int time_ns)
        return (time_ns * 1000 + tick_ps - 1) / tick_ps;
 }
 
+unsigned int gpmc_round_ns_to_ticks(unsigned int time_ns)
+{
+       unsigned long ticks = gpmc_ns_to_ticks(time_ns);
+
+       return ticks * gpmc_get_fclk_period() / 1000;
+}
+
 #ifdef DEBUG
 static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit,
                               int time, const char *name)
@@ -120,15 +134,21 @@ static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit,
        else
                ticks = gpmc_ns_to_ticks(time);
        nr_bits = end_bit - st_bit + 1;
-       if (ticks >= 1 << nr_bits)
+       if (ticks >= 1 << nr_bits) {
+#ifdef DEBUG
+               printk(KERN_INFO "GPMC CS%d: %-10s* %3d ns, %3d ticks >= %d\n",
+                               cs, name, time, ticks, 1 << nr_bits);
+#endif
                return -1;
+       }
 
        mask = (1 << nr_bits) - 1;
        l = gpmc_cs_read_reg(cs, reg);
 #ifdef DEBUG
-       printk(KERN_INFO "GPMC CS%d: %-10s: %d ticks, %3lu ns (was %i ticks)\n",
+       printk(KERN_INFO
+               "GPMC CS%d: %-10s: %3d ticks, %3lu ns (was %3i ticks) %3d ns\n",
               cs, name, ticks, gpmc_get_fclk_period() * ticks / 1000,
-              (l >> st_bit) & mask);
+                       (l >> st_bit) & mask, time);
 #endif
        l &= ~(mask << st_bit);
        l |= ticks << st_bit;
@@ -157,7 +177,7 @@ int gpmc_cs_calc_divider(int cs, unsigned int sync_clk)
        div = l / gpmc_get_fclk_period();
        if (div > 4)
                return -1;
-       if (div < 0)
+       if (div <= 0)
                div = 1;
 
        return div;
@@ -191,14 +211,19 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t)
 
        GPMC_SET_ONE(GPMC_CS_CONFIG5, 24, 27, page_burst_access);
 
+       /* caller is expected to have initialized CONFIG1 to cover
+        * at least sync vs async
+        */
+       l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
+       if (l & (GPMC_CONFIG1_READTYPE_SYNC | GPMC_CONFIG1_WRITETYPE_SYNC)) {
 #ifdef DEBUG
-       printk(KERN_INFO "GPMC CS%d CLK period is %lu (div %d)\n",
-              cs, gpmc_get_fclk_period(), div);
+               printk(KERN_INFO "GPMC CS%d CLK period is %lu ns (div %d)\n",
+                               cs, (div * gpmc_get_fclk_period()) / 1000, div);
 #endif
-
-       l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
-       l &= ~0x03;
-       l |= (div - 1);
+               l &= ~0x03;
+               l |= (div - 1);
+               gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, l);
+       }
 
        return 0;
 }
index 871ace4fccb879a186cf135f87a0dcbfaafa4343..4dfd878d796841e43cd8e16cad6bb793aeabeb4c 100644 (file)
 
 #include <asm/io.h>
 
+#if defined(CONFIG_ARCH_OMAP2420)
 #define OMAP24XX_TAP_BASE      io_p2v(0x48014000)
+#endif
+
+#if defined(CONFIG_ARCH_OMAP2430)
+#define OMAP24XX_TAP_BASE      io_p2v(0x4900A000)
+#endif
 
 #define OMAP_TAP_IDCODE                0x0204
 #define OMAP_TAP_PROD_ID       0x0208
index 82dc70f6b7795652829a01fa5a1c360ca1fc9cae..5a4091f582edc23aeafc051785898547a1decc8f 100644 (file)
@@ -5,6 +5,7 @@
  *
  * Copyright (C) 2005 Nokia Corporation
  * Author: Juha Yrjölä <juha.yrjola@nokia.com>
+ * Updated map desc to add 2430 support : <x0khasim@ti.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -26,6 +27,7 @@
 extern void omap_sram_init(void);
 extern int omap2_clk_init(void);
 extern void omap2_check_revision(void);
+extern void omap2_init_memory(void);
 extern void gpmc_init(void);
 extern void omapfb_reserve_sdram(void);
 
@@ -40,6 +42,20 @@ static struct map_desc omap2_io_desc[] __initdata = {
                .length         = L3_24XX_SIZE,
                .type           = MT_DEVICE
        },
+#ifdef CONFIG_ARCH_OMAP2430
+       {
+               .virtual        = L4_WK_243X_VIRT,
+               .pfn            = __phys_to_pfn(L4_WK_243X_PHYS),
+               .length         = L4_WK_243X_SIZE,
+               .type           = MT_DEVICE
+       },
+       {
+               .virtual        = OMAP243X_GPMC_VIRT,
+               .pfn            = __phys_to_pfn(OMAP243X_GPMC_PHYS),
+               .length         = OMAP243X_GPMC_SIZE,
+               .type           = MT_DEVICE
+       },
+#endif
        {
                .virtual        = DSP_MEM_24XX_VIRT,
                .pfn            = __phys_to_pfn(DSP_MEM_24XX_PHYS),
@@ -80,5 +96,11 @@ void __init omap2_init_common_hw(void)
 {
        omap2_mux_init();
        omap2_clk_init();
+/*
+ * Need to Fix this for 2430
+ */
+#ifndef CONFIG_ARCH_OMAP2430
+       omap2_init_memory();
+#endif
        gpmc_init();
 }
index a39d306803002448d86357fa3bd7535be73e0e7f..f064f725e724aed9394178820167c54d2eb29b56 100644 (file)
@@ -37,7 +37,7 @@ static struct omap_irq_bank {
 } __attribute__ ((aligned(4))) irq_banks[] = {
        {
                /* MPU INTC */
-               .base_reg       = OMAP24XX_IC_BASE,
+               .base_reg       = IO_ADDRESS(OMAP24XX_IC_BASE),
                .nr_irqs        = 96,
        }, {
                /* XXX: DSP INTC */
@@ -47,7 +47,7 @@ static struct omap_irq_bank {
 /* XXX: FIQ and additional INTC support (only MPU at the moment) */
 static void omap_ack_irq(unsigned int irq)
 {
-       omap_writel(0x1, irq_banks[0].base_reg + INTC_CONTROL);
+       __raw_writel(0x1, irq_banks[0].base_reg + INTC_CONTROL);
 }
 
 static void omap_mask_irq(unsigned int irq)
@@ -60,7 +60,7 @@ static void omap_mask_irq(unsigned int irq)
                irq %= 32;
        }
 
-       omap_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_SET0 + offset);
+       __raw_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_SET0 + offset);
 }
 
 static void omap_unmask_irq(unsigned int irq)
@@ -73,7 +73,7 @@ static void omap_unmask_irq(unsigned int irq)
                irq %= 32;
        }
 
-       omap_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_CLEAR0 + offset);
+       __raw_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_CLEAR0 + offset);
 }
 
 static void omap_mask_ack_irq(unsigned int irq)
@@ -93,17 +93,20 @@ static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
 {
        unsigned long tmp;
 
-       tmp = omap_readl(bank->base_reg + INTC_REVISION) & 0xff;
+       tmp = __raw_readl(bank->base_reg + INTC_REVISION) & 0xff;
        printk(KERN_INFO "IRQ: Found an INTC at 0x%08lx "
                         "(revision %ld.%ld) with %d interrupts\n",
                         bank->base_reg, tmp >> 4, tmp & 0xf, bank->nr_irqs);
 
-       tmp = omap_readl(bank->base_reg + INTC_SYSCONFIG);
+       tmp = __raw_readl(bank->base_reg + INTC_SYSCONFIG);
        tmp |= 1 << 1;  /* soft reset */
-       omap_writel(tmp, bank->base_reg + INTC_SYSCONFIG);
+       __raw_writel(tmp, bank->base_reg + INTC_SYSCONFIG);
 
-       while (!(omap_readl(bank->base_reg + INTC_SYSSTATUS) & 0x1))
+       while (!(__raw_readl(bank->base_reg + INTC_SYSSTATUS) & 0x1))
                /* Wait for reset to complete */;
+
+       /* Enable autoidle */
+       __raw_writel(1 << 0, bank->base_reg + INTC_SYSCONFIG);
 }
 
 void __init omap_init_irq(void)
index 85cbc2a2e6639bf573ff399203a62df5c616085f..3e5d8cd4ea4f9ed6fb08737e03661d4af6899291 100644 (file)
@@ -30,6 +30,7 @@
 #include "prcm-regs.h"
 #include "memory.h"
 
+
 static struct memory_timings mem_timings;
 
 u32 omap2_memory_get_slow_dll_ctrl(void)
@@ -99,3 +100,20 @@ void omap2_init_memory_params(u32 force_lock_to_unlock_mode)
        /* 90 degree phase for anything below 133Mhz + disable DLL filter */
        mem_timings.slow_dll_ctrl |= ((1 << 1) | (3 << 8));
 }
+
+/* turn on smart idle modes for SDRAM scheduler and controller */
+void __init omap2_init_memory(void)
+{
+       u32 l;
+
+       l = SMS_SYSCONFIG;
+       l &= ~(0x3 << 3);
+       l |= (0x2 << 3);
+       SMS_SYSCONFIG = l;
+
+       l = SDRC_SYSCONFIG;
+       l &= ~(0x3 << 3);
+       l |= (0x2 << 3);
+       SDRC_SYSCONFIG = l;
+
+}
index 0439906d5da70f3b088dda51ea8dbd47e06b1baf..05750975d7463ebde347f3f08c14d56651e0bf25 100644 (file)
@@ -53,8 +53,8 @@ MUX_CFG_24XX("W19_24XX_SYS_NIRQ",     0x12c,  0,      1,      1,      1)
 MUX_CFG_24XX("W14_24XX_SYS_CLKOUT",    0x137,  0,      1,      1,      1)
 
 /* 24xx GPMC chipselects, wait pin monitoring */
-MUX_CFG_24XX("E2_GPMC_NCS2",   0x08e,  0,      1,      1,      1)
-MUX_CFG_24XX("L2_GPMC_NCS7",   0x093,  0,      1,      1,      1)
+MUX_CFG_24XX("E2_GPMC_NCS2",           0x08e,  0,      1,      1,      1)
+MUX_CFG_24XX("L2_GPMC_NCS7",           0x093,  0,      1,      1,      1)
 MUX_CFG_24XX("L3_GPMC_WAIT0",          0x09a,  0,      1,      1,      1)
 MUX_CFG_24XX("N7_GPMC_WAIT1",          0x09b,  0,      1,      1,      1)
 MUX_CFG_24XX("M1_GPMC_WAIT2",          0x09c,  0,      1,      1,      1)
@@ -67,18 +67,18 @@ MUX_CFG_24XX("W15_24XX_MCBSP2_DR",  0x126,  1,      1,      0,      1)
 MUX_CFG_24XX("V15_24XX_MCBSP2_DX",     0x127,  1,      1,      0,      1)
 
 /* 24xx GPIO */
-MUX_CFG_24XX("M21_242X_GPIO11",                0x0c9,  3,      1,      1,      1)
-MUX_CFG_24XX("P21_242X_GPIO12",        0x0ca,  3,      0,      0,      1)
-MUX_CFG_24XX("AA10_242X_GPIO13",       0x0e5,  3,      0,      0,      1)
-MUX_CFG_24XX("AA6_242X_GPIO14",                0x0e6,  3,      0,      0,      1)
-MUX_CFG_24XX("AA4_242X_GPIO15",                0x0e7,  3,      0,      0,      1)
-MUX_CFG_24XX("Y11_242X_GPIO16",                0x0e8,  3,      0,      0,      1)
-MUX_CFG_24XX("AA12_242X_GPIO17",       0x0e9,  3,      0,      0,      1)
-MUX_CFG_24XX("AA8_242X_GPIO58",                0x0ea,  3,      0,      0,      1)
+MUX_CFG_24XX("M21_242X_GPIO11",                0x0c9,  3,      1,      1,      1)
+MUX_CFG_24XX("P21_242X_GPIO12",                0x0ca,  3,      0,      0,      1)
+MUX_CFG_24XX("AA10_242X_GPIO13",       0x0e5,  3,      0,      0,      1)
+MUX_CFG_24XX("AA6_242X_GPIO14",                0x0e6,  3,      0,      0,      1)
+MUX_CFG_24XX("AA4_242X_GPIO15",                0x0e7,  3,      0,      0,      1)
+MUX_CFG_24XX("Y11_242X_GPIO16",                0x0e8,  3,      0,      0,      1)
+MUX_CFG_24XX("AA12_242X_GPIO17",       0x0e9,  3,      0,      0,      1)
+MUX_CFG_24XX("AA8_242X_GPIO58",                0x0ea,  3,      0,      0,      1)
 MUX_CFG_24XX("Y20_24XX_GPIO60",                0x12c,  3,      0,      0,      1)
-MUX_CFG_24XX("W4__24XX_GPIO74",                0x0f2,  3,      0,      0,      1)
+MUX_CFG_24XX("W4__24XX_GPIO74",                0x0f2,  3,      0,      0,      1)
 MUX_CFG_24XX("M15_24XX_GPIO92",                0x10a,  3,      0,      0,      1)
-MUX_CFG_24XX("J15_24XX_GPIO99",        0x113,  3,      1,      1,      1)
+MUX_CFG_24XX("J15_24XX_GPIO99",                0x113,  3,      1,      1,      1)
 MUX_CFG_24XX("V14_24XX_GPIO117",       0x128,  3,      1,      0,      1)
 MUX_CFG_24XX("P14_24XX_GPIO125",       0x140,  3,      1,      1,      1)
 
@@ -95,17 +95,17 @@ MUX_CFG_24XX("T3_242X_GPIO55",              0xd9,   3,      0,      0,      1)
 MUX_CFG_24XX("U2_242X_GPIO56",         0xda,   3,      0,      0,      1)
 
 /* 24xx external DMA requests */
-MUX_CFG_24XX("AA10_242X_DMAREQ0",      0x0e5,  2,      0,      0,      1)
-MUX_CFG_24XX("AA6_242X_DMAREQ1",       0x0e6,  2,      0,      0,      1)
-MUX_CFG_24XX("E4_242X_DMAREQ2",                0x074,  2,      0,      0,      1)
-MUX_CFG_24XX("G4_242X_DMAREQ3",                0x073,  2,      0,      0,      1)
-MUX_CFG_24XX("D3_242X_DMAREQ4",                0x072,  2,      0,      0,      1)
-MUX_CFG_24XX("E3_242X_DMAREQ5",                0x071,  2,      0,      0,      1)
+MUX_CFG_24XX("AA10_242X_DMAREQ0",      0x0e5,  2,      0,      0,      1)
+MUX_CFG_24XX("AA6_242X_DMAREQ1",       0x0e6,  2,      0,      0,      1)
+MUX_CFG_24XX("E4_242X_DMAREQ2",                0x074,  2,      0,      0,      1)
+MUX_CFG_24XX("G4_242X_DMAREQ3",                0x073,  2,      0,      0,      1)
+MUX_CFG_24XX("D3_242X_DMAREQ4",                0x072,  2,      0,      0,      1)
+MUX_CFG_24XX("E3_242X_DMAREQ5",                0x071,  2,      0,      0,      1)
 
 /* TSC IRQ */
 MUX_CFG_24XX("P20_24XX_TSC_IRQ",       0x108,  0,      0,      0,      1)
 
-/* UART3  */
+/* UART3 */
 MUX_CFG_24XX("K15_24XX_UART3_TX",      0x118,  0,      0,      0,      1)
 MUX_CFG_24XX("K14_24XX_UART3_RX",      0x119,  0,      0,      0,      1)
 
diff --git a/arch/arm/mach-omap2/usb-tusb6010.c b/arch/arm/mach-omap2/usb-tusb6010.c
new file mode 100644 (file)
index 0000000..80bb42e
--- /dev/null
@@ -0,0 +1,349 @@
+/*
+ * linux/arch/arm/mach-omap2/usb-tusb6010.c
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/types.h>
+#include <linux/errno.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+
+#include <linux/usb/musb.h>
+
+#include <asm/arch/gpmc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+
+
+static u8              async_cs, sync_cs;
+static unsigned                refclk_psec;
+
+
+/* t2_ps, when quantized to fclk units, must happen no earlier than
+ * the clock after after t1_NS.
+ *
+ * Return a possibly updated value of t2_ps, converted to nsec.
+ */
+static unsigned
+next_clk(unsigned t1_NS, unsigned t2_ps, unsigned fclk_ps)
+{
+       unsigned        t1_ps = t1_NS * 1000;
+       unsigned        t1_f, t2_f;
+
+       if ((t1_ps + fclk_ps) < t2_ps)
+               return t2_ps / 1000;
+
+       t1_f = (t1_ps + fclk_ps - 1) / fclk_ps;
+       t2_f = (t2_ps + fclk_ps - 1) / fclk_ps;
+
+       if (t1_f >= t2_f)
+               t2_f = t1_f + 1;
+
+       return (t2_f * fclk_ps) / 1000;
+}
+
+/* NOTE:  timings are from tusb 6010 datasheet Rev 1.8, 12-Sept 2006 */
+
+static int tusb_set_async_mode(unsigned sysclk_ps, unsigned fclk_ps)
+{
+       struct gpmc_timings     t;
+       unsigned                t_acsnh_advnh = sysclk_ps + 3000;
+       unsigned                tmp;
+
+       memset(&t, 0, sizeof(t));
+
+       /* CS_ON = t_acsnh_acsnl */
+       t.cs_on = 8;
+       /* ADV_ON = t_acsnh_advnh - t_advn */
+       t.adv_on = next_clk(t.cs_on, t_acsnh_advnh - 7000, fclk_ps);
+
+       /*
+        * READ ... from omap2420 TRM fig 12-13
+        */
+
+       /* ADV_RD_OFF = t_acsnh_advnh */
+       t.adv_rd_off = next_clk(t.adv_on, t_acsnh_advnh, fclk_ps);
+
+       /* OE_ON = t_acsnh_advnh + t_advn_oen (then wait for nRDY) */
+       t.oe_on = next_clk(t.adv_on, t_acsnh_advnh + 1000, fclk_ps);
+
+       /* ACCESS = counters continue only after nRDY */
+       tmp = t.oe_on * 1000 + 300;
+       t.access = next_clk(t.oe_on, tmp, fclk_ps);
+
+       /* OE_OFF = after data gets sampled */
+       tmp = t.access * 1000;
+       t.oe_off = next_clk(t.access, tmp, fclk_ps);
+
+       t.cs_rd_off = t.oe_off;
+
+       tmp = t.cs_rd_off * 1000 + 7000 /* t_acsn_rdy_z */;
+       t.rd_cycle = next_clk(t.cs_rd_off, tmp, fclk_ps);
+
+       /*
+        * WRITE ... from omap2420 TRM fig 12-15
+        */
+
+       /* ADV_WR_OFF = t_acsnh_advnh */
+       t.adv_wr_off = t.adv_rd_off;
+
+       /* WE_ON = t_acsnh_advnh + t_advn_wen (then wait for nRDY) */
+       t.we_on = next_clk(t.adv_wr_off, t_acsnh_advnh + 1000, fclk_ps);
+
+       /* WE_OFF = after data gets sampled */
+       tmp = t.we_on * 1000 + 300;
+       t.we_off = next_clk(t.we_on, tmp, fclk_ps);
+
+       t.cs_wr_off = t.we_off;
+
+       tmp = t.cs_wr_off * 1000 + 7000 /* t_acsn_rdy_z */;
+       t.wr_cycle = next_clk(t.cs_wr_off, tmp, fclk_ps);
+
+       return gpmc_cs_set_timings(async_cs, &t);
+}
+
+static int tusb_set_sync_mode(unsigned sysclk_ps, unsigned fclk_ps)
+{
+       struct gpmc_timings     t;
+       unsigned                t_scsnh_advnh = sysclk_ps + 3000;
+       unsigned                tmp;
+
+       memset(&t, 0, sizeof(t));
+       t.cs_on = 8;
+
+       /* ADV_ON = t_acsnh_advnh - t_advn */
+       t.adv_on = next_clk(t.cs_on, t_scsnh_advnh - 7000, fclk_ps);
+
+       /* GPMC_CLK rate = fclk rate / div */
+       t.sync_clk = 12 /* 11.1 nsec */;
+       tmp = (t.sync_clk * 1000 + fclk_ps - 1) / fclk_ps;
+       if (tmp > 4)
+               return -ERANGE;
+       if (tmp <= 0)
+               tmp = 1;
+       t.page_burst_access = (fclk_ps * tmp) / 1000;
+
+       /*
+        * READ ... based on omap2420 TRM fig 12-19, 12-20
+        */
+
+       /* ADV_RD_OFF = t_scsnh_advnh */
+       t.adv_rd_off = next_clk(t.adv_on, t_scsnh_advnh, fclk_ps);
+
+       /* OE_ON = t_scsnh_advnh + t_advn_oen * fclk_ps (then wait for nRDY) */
+       tmp = (t.adv_rd_off * 1000) + (3 * fclk_ps);
+       t.oe_on = next_clk(t.adv_on, tmp, fclk_ps);
+
+       /* ACCESS = number of clock cycles after t_adv_eon */
+       tmp = (t.oe_on * 1000) + (5 * fclk_ps);
+       t.access = next_clk(t.oe_on, tmp, fclk_ps);
+
+       /* OE_OFF = after data gets sampled */
+       tmp = (t.access * 1000) + (1 * fclk_ps);
+       t.oe_off = next_clk(t.access, tmp, fclk_ps);
+
+       t.cs_rd_off = t.oe_off;
+
+       tmp = t.cs_rd_off * 1000 + 7000 /* t_scsn_rdy_z */;
+       t.rd_cycle = next_clk(t.cs_rd_off, tmp, fclk_ps);
+
+       /*
+        * WRITE ... based on omap2420 TRM fig 12-21
+        */
+
+       /* ADV_WR_OFF = t_scsnh_advnh */
+       t.adv_wr_off = t.adv_rd_off;
+
+       /* WE_ON = t_scsnh_advnh + t_advn_wen * fclk_ps (then wait for nRDY) */
+       tmp = (t.adv_wr_off * 1000) + (3 * fclk_ps);
+       t.we_on = next_clk(t.adv_wr_off, tmp, fclk_ps);
+
+       /* WE_OFF = number of clock cycles after t_adv_wen */
+       tmp = (t.we_on * 1000) + (6 * fclk_ps);
+       t.we_off = next_clk(t.we_on, tmp, fclk_ps);
+
+       t.cs_wr_off = t.we_off;
+
+       tmp = t.cs_wr_off * 1000 + 7000 /* t_scsn_rdy_z */;
+       t.wr_cycle = next_clk(t.cs_wr_off, tmp, fclk_ps);
+
+       return gpmc_cs_set_timings(sync_cs, &t);
+}
+
+extern unsigned long gpmc_get_fclk_period(void);
+
+/* tusb driver calls this when it changes the chip's clocking */
+int tusb6010_platform_retime(unsigned is_refclk)
+{
+       static const char       error[] =
+               KERN_ERR "tusb6010 %s retime error %d\n";
+
+       unsigned        fclk_ps = gpmc_get_fclk_period();
+       unsigned        sysclk_ps;
+       int             status;
+
+       if (!refclk_psec)
+               return -ENODEV;
+
+       sysclk_ps = is_refclk ? refclk_psec : TUSB6010_OSCCLK_60;
+
+       status = tusb_set_async_mode(sysclk_ps, fclk_ps);
+       if (status < 0) {
+               printk(error, "async", status);
+               goto done;
+       }
+       status = tusb_set_sync_mode(sysclk_ps, fclk_ps);
+       if (status < 0)
+               printk(error, "sync", status);
+done:
+       return status;
+}
+EXPORT_SYMBOL_GPL(tusb6010_platform_retime);
+
+static struct resource tusb_resources[] = {
+       /* Order is significant!  The start/end fields
+        * are updated during setup..
+        */
+       { /* Asynchronous access */
+               .flags  = IORESOURCE_MEM,
+       },
+       { /* Synchronous access */
+               .flags  = IORESOURCE_MEM,
+       },
+       { /* IRQ */
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static u64 tusb_dmamask = ~(u32)0;
+
+static struct platform_device tusb_device = {
+       .name           = "musb_hdrc",
+       .id             = -1,
+       .dev = {
+               .dma_mask               = &tusb_dmamask,
+               .coherent_dma_mask      = 0xffffffff,
+       },
+       .num_resources  = ARRAY_SIZE(tusb_resources),
+       .resource       = tusb_resources,
+};
+
+
+/* this may be called only from board-*.c setup code */
+int __init
+tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
+               unsigned ps_refclk, unsigned waitpin,
+               unsigned async, unsigned sync,
+               unsigned irq, unsigned dmachan)
+{
+       int             status;
+       static char     error[] __initdata =
+               KERN_ERR "tusb6010 init error %d, %d\n";
+
+       /* ASYNC region, primarily for PIO */
+       status = gpmc_cs_request(async, SZ_16M, (unsigned long *)
+                               &tusb_resources[0].start);
+       if (status < 0) {
+               printk(error, 1, status);
+               return status;
+       }
+       tusb_resources[0].end = tusb_resources[0].start + 0x9ff;
+       async_cs = async;
+       gpmc_cs_write_reg(async, GPMC_CS_CONFIG1,
+                         GPMC_CONFIG1_PAGE_LEN(2)
+                       | GPMC_CONFIG1_WAIT_READ_MON
+                       | GPMC_CONFIG1_WAIT_WRITE_MON
+                       | GPMC_CONFIG1_WAIT_PIN_SEL(waitpin)
+                       | GPMC_CONFIG1_READTYPE_ASYNC
+                       | GPMC_CONFIG1_WRITETYPE_ASYNC
+                       | GPMC_CONFIG1_DEVICESIZE_16
+                       | GPMC_CONFIG1_DEVICETYPE_NOR
+                       | GPMC_CONFIG1_MUXADDDATA);
+
+
+       /* SYNC region, primarily for DMA */
+       status = gpmc_cs_request(sync, SZ_16M, (unsigned long *)
+                               &tusb_resources[1].start);
+       if (status < 0) {
+               printk(error, 2, status);
+               return status;
+       }
+       tusb_resources[1].end = tusb_resources[1].start + 0x9ff;
+       sync_cs = sync;
+       gpmc_cs_write_reg(sync, GPMC_CS_CONFIG1,
+                         GPMC_CONFIG1_READMULTIPLE_SUPP
+                       | GPMC_CONFIG1_READTYPE_SYNC
+                       | GPMC_CONFIG1_WRITEMULTIPLE_SUPP
+                       | GPMC_CONFIG1_WRITETYPE_SYNC
+                       | GPMC_CONFIG1_CLKACTIVATIONTIME(1)
+                       | GPMC_CONFIG1_PAGE_LEN(2)
+                       | GPMC_CONFIG1_WAIT_READ_MON
+                       | GPMC_CONFIG1_WAIT_WRITE_MON
+                       | GPMC_CONFIG1_WAIT_PIN_SEL(waitpin)
+                       | GPMC_CONFIG1_DEVICESIZE_16
+                       | GPMC_CONFIG1_DEVICETYPE_NOR
+                       | GPMC_CONFIG1_MUXADDDATA
+                       /* fclk divider gets set later */
+                       );
+
+       /* IRQ */
+       status = omap_request_gpio(irq);
+       if (status < 0) {
+               printk(error, 3, status);
+               return status;
+       }
+       omap_set_gpio_direction(irq, 1);
+       tusb_resources[2].start = irq + IH_GPIO_BASE;
+
+       /* set up memory timings ... can speed them up later */
+       if (!ps_refclk) {
+               printk(error, 4, status);
+               return -ENODEV;
+       }
+       refclk_psec = ps_refclk;
+       status = tusb6010_platform_retime(1);
+       if (status < 0) {
+               printk(error, 5, status);
+               return status;
+       }
+
+       /* finish device setup ... */
+       if (!data) {
+               printk(error, 6, status);
+               return -ENODEV;
+       }
+       data->multipoint = 1;
+       tusb_device.dev.platform_data = data;
+
+       /* REVISIT let the driver know what DMA channels work */
+       if (!dmachan)
+               tusb_device.dev.dma_mask = NULL;
+       else {
+               /* assume OMAP 2420 ES2.0 and later */
+               if (dmachan & (1 << 0))
+                       omap_cfg_reg(AA10_242X_DMAREQ0);
+               if (dmachan & (1 << 1))
+                       omap_cfg_reg(AA6_242X_DMAREQ1);
+               if (dmachan & (1 << 2))
+                       omap_cfg_reg(E4_242X_DMAREQ2);
+               if (dmachan & (1 << 3))
+                       omap_cfg_reg(G4_242X_DMAREQ3);
+               if (dmachan & (1 << 4))
+                       omap_cfg_reg(D3_242X_DMAREQ4);
+               if (dmachan & (1 << 5))
+                       omap_cfg_reg(E3_242X_DMAREQ5);
+       }
+
+       /* so far so good ... register the device */
+       status = platform_device_register(&tusb_device);
+       if (status < 0) {
+               printk(error, 7, status);
+               return status;
+       }
+       return 0;
+}
index cfc69f3842fda4eb97cb3a1edcfddfc154b9bbee..c1f7e5a819a3fdac417a4100902ed68fa4786090 100644 (file)
@@ -20,10 +20,15 @@ endchoice
 
 comment "OMAP Feature Selections"
 
-config OMAP_DEBUG_LEDS
+config OMAP_DEBUG_DEVICES
        bool
        help
-         For debug card leds on TI reference boards.
+         For debug cards on TI reference boards.
+
+config OMAP_DEBUG_LEDS
+       bool
+       depends on OMAP_DEBUG_DEVICES
+       default y if LEDS || LEDS_OMAP_DEBUG
 
 config OMAP_RESET_CLOCKS
        bool "Reset unused clocks during boot"
index 41a3c1cf3bd44bd23b66836dbc79b0fd39abfb0f..2549129aabc67f23f1d4d5851e8d8631cbddbd11 100644 (file)
@@ -17,4 +17,5 @@ obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
 
 obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
 obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
+obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
 obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
diff --git a/arch/arm/plat-omap/debug-devices.c b/arch/arm/plat-omap/debug-devices.c
new file mode 100644 (file)
index 0000000..83a5f8b
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * linux/arch/arm/plat-omap/debug-devices.c
+ *
+ * Copyright (C) 2005 Nokia Corporation
+ * Modified from mach-omap2/board-h4.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+
+#include <asm/hardware.h>
+#include <asm/io.h>
+
+#include <asm/arch/board.h>
+#include <asm/arch/gpio.h>
+
+
+/* Many OMAP development platforms reuse the same "debug board"; these
+ * platforms include H2, H3, H4, and Perseus2.
+ */
+
+static struct resource smc91x_resources[] = {
+       [0] = {
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device smc91x_device = {
+       .name           = "smc91x",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(smc91x_resources),
+       .resource       = smc91x_resources,
+};
+
+static struct resource led_resources[] = {
+       [0] = {
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device led_device = {
+       .name           = "omap_dbg_led",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(led_resources),
+       .resource       = led_resources,
+};
+
+static struct platform_device *debug_devices[] __initdata = {
+       &smc91x_device,
+       &led_device,
+       /* ps2 kbd + mouse ports */
+       /* 4 extra uarts */
+       /* 6 input dip switches */
+       /* 8 output pins */
+};
+
+int __init debug_card_init(u32 addr, unsigned gpio)
+{
+       int     status;
+
+       smc91x_resources[0].start = addr + 0x300;
+       smc91x_resources[0].end   = addr + 0x30f;
+
+       smc91x_resources[1].start = OMAP_GPIO_IRQ(gpio);
+       smc91x_resources[1].end   = OMAP_GPIO_IRQ(gpio);
+
+       status = omap_request_gpio(gpio);
+       if (status < 0) {
+               printk(KERN_ERR "GPIO%d unavailable for smc91x IRQ\n", gpio);
+               return status;
+       }
+       omap_set_gpio_direction(gpio, 1);
+
+       led_resources[0].start = addr;
+       led_resources[0].end   = addr + SZ_4K - 1;
+
+       return platform_add_devices(debug_devices, ARRAY_SIZE(debug_devices));
+}
index 88d5b6d9f950b1a158af06cd52475f2b17429427..05a38498cbe06c3527260a12186fda3d2732a7fc 100644 (file)
@@ -1347,11 +1347,6 @@ void omap_stop_lcd_dma(void)
        omap_writew(w, OMAP1610_DMA_LCD_CTRL);
 }
 
-int omap_lcd_dma_ext_running(void)
-{
-       return lcd_dma.ext_ctrl && lcd_dma.active;
-}
-
 /*----------------------------------------------------------------------------*/
 
 static int __init omap_init_dma(void)
@@ -1493,7 +1488,6 @@ EXPORT_SYMBOL(omap_free_lcd_dma);
 EXPORT_SYMBOL(omap_enable_lcd_dma);
 EXPORT_SYMBOL(omap_setup_lcd_dma);
 EXPORT_SYMBOL(omap_stop_lcd_dma);
-EXPORT_SYMBOL(omap_lcd_dma_ext_running);
 EXPORT_SYMBOL(omap_set_lcd_dma_b1);
 EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer);
 EXPORT_SYMBOL(omap_set_lcd_dma_ext_controller);
diff --git a/include/asm-arm/arch-omap/blizzard.h b/include/asm-arm/arch-omap/blizzard.h
new file mode 100644 (file)
index 0000000..8d160f1
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _BLIZZARD_H
+#define _BLIZZARD_H
+
+struct blizzard_platform_data {
+       void            (*power_up)(struct device *dev);
+       void            (*power_down)(struct device *dev);
+       unsigned long   (*get_clock_rate)(struct device *dev);
+
+       unsigned        te_connected : 1;
+};
+
+#endif
diff --git a/include/asm-arm/arch-omap/board-2430sdp.h b/include/asm-arm/arch-omap/board-2430sdp.h
new file mode 100644 (file)
index 0000000..e9c65ce
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * linux/include/asm-arm/arch-omap/board-2430sdp.h
+ *
+ * Hardware definitions for TI OMAP2430 SDP board.
+ *
+ * Based on board-h4.h by Dirk Behme <dirk.behme@de.bosch.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __ASM_ARCH_OMAP_2430SDP_H
+#define __ASM_ARCH_OMAP_2430SDP_H
+
+/* Placeholder for 2430SDP specific defines */
+#define OMAP24XX_ETHR_START             0x08000300
+#define OMAP24XX_ETHR_GPIO_IRQ         149
+#define SDP2430_CS0_BASE               0x04000000
+
+#define TWL4030_IRQNUM                 INT_24XX_SYS_NIRQ
+
+/* TWL4030 Primary Interrupt Handler (PIH) interrupts */
+#define IH_TWL4030_BASE                        IH_BOARD_BASE
+#define IH_TWL4030_END                 (IH_TWL4030_BASE+8)
+#define NR_IRQS                                (IH_TWL4030_END)
+
+#endif /* __ASM_ARCH_OMAP_2430SDP_H */
diff --git a/include/asm-arm/arch-omap/board-palmte.h b/include/asm-arm/arch-omap/board-palmte.h
new file mode 100644 (file)
index 0000000..cd22035
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * linux/include/asm-arm/arch-omap/board-palmte.h
+ *
+ * Hardware definitions for the Palm Tungsten E device.
+ *
+ * Maintainters :      http://palmtelinux.sf.net
+ *                     palmtelinux-developpers@lists.sf.net
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __OMAP_BOARD_PALMTE_H
+#define __OMAP_BOARD_PALMTE_H
+
+#include <asm/arch/gpio.h>
+
+#define PALMTE_USBDETECT_GPIO  0
+#define PALMTE_USB_OR_DC_GPIO  1
+#define PALMTE_TSC_GPIO                4
+#define PALMTE_PINTDAV_GPIO    6
+#define PALMTE_MMC_WP_GPIO     8
+#define PALMTE_MMC_POWER_GPIO  9
+#define PALMTE_HDQ_GPIO                11
+#define PALMTE_HEADPHONES_GPIO 14
+#define PALMTE_SPEAKER_GPIO    15
+#define PALMTE_DC_GPIO         OMAP_MPUIO(2)
+#define PALMTE_MMC_SWITCH_GPIO OMAP_MPUIO(4)
+#define PALMTE_MMC1_GPIO       OMAP_MPUIO(6)
+#define PALMTE_MMC2_GPIO       OMAP_MPUIO(7)
+#define PALMTE_MMC3_GPIO       OMAP_MPUIO(11)
+
+#endif /* __OMAP_BOARD_PALMTE_H */
diff --git a/include/asm-arm/arch-omap/board-palmtt.h b/include/asm-arm/arch-omap/board-palmtt.h
new file mode 100644 (file)
index 0000000..d9590b0
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * linux/include/asm-arm/arch-omap/board-palmte.h
+ *
+ * Hardware definitions for the Palm Tungsten|T device.
+ *
+ * Maintainters :      Marek Vasut <marek.vasut@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __OMAP_BOARD_PALMTT_H
+#define __OMAP_BOARD_PALMTT_H
+
+#define PALMTT_USBDETECT_GPIO  0
+#define PALMTT_CABLE_GPIO      1
+#define PALMTT_LED_GPIO                3
+#define PALMTT_PENIRQ_GPIO     6
+#define PALMTT_MMC_WP_GPIO     8
+#define PALMTT_HDQ_GPIO                11
+
+#endif /* __OMAP_BOARD_PALMTT_H */
diff --git a/include/asm-arm/arch-omap/board-palmz71.h b/include/asm-arm/arch-omap/board-palmz71.h
new file mode 100644 (file)
index 0000000..1252a85
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * linux/include/asm-arm/arch-omap/board-palmz71.h
+ *
+ * Hardware definitions for the Palm Zire71 device.
+ *
+ * Maintainters :      Marek Vasut <marek.vasut@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __OMAP_BOARD_PALMZ71_H
+#define __OMAP_BOARD_PALMZ71_H
+
+#define PALMZ71_USBDETECT_GPIO 0
+#define PALMZ71_PENIRQ_GPIO    6
+#define PALMZ71_MMC_WP_GPIO    8
+#define PALMZ71_HDQ_GPIO       11
+
+#define PALMZ71_HOTSYNC_GPIO   OMAP_MPUIO(1)
+#define PALMZ71_CABLE_GPIO     OMAP_MPUIO(2)
+#define PALMZ71_SLIDER_GPIO    OMAP_MPUIO(3)
+#define PALMZ71_MMC_IN_GPIO    OMAP_MPUIO(4)
+
+#endif /* __OMAP_BOARD_PALMZ71_H */
diff --git a/include/asm-arm/arch-omap/board-sx1.h b/include/asm-arm/arch-omap/board-sx1.h
new file mode 100644 (file)
index 0000000..2bb8dd6
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Siemens SX1 board definitions
+ *
+ * Copyright: Vovan888 at gmail com
+ *
+ * This package is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef __ASM_ARCH_SX1_I2C_CHIPS_H
+#define __ASM_ARCH_SX1_I2C_CHIPS_H
+
+#define SOFIA_MAX_LIGHT_VAL    0x2B
+
+#define SOFIA_I2C_ADDR         0x32
+/* Sofia reg 3 bits masks */
+#define SOFIA_POWER1_REG       0x03
+
+#define        SOFIA_USB_POWER         0x01
+#define        SOFIA_MMC_POWER         0x04
+#define        SOFIA_BLUETOOTH_POWER   0x08
+#define        SOFIA_MMILIGHT_POWER    0x20
+
+#define SOFIA_POWER2_REG       0x04
+#define SOFIA_BACKLIGHT_REG    0x06
+#define SOFIA_KEYLIGHT_REG     0x07
+#define SOFIA_DIMMING_REG      0x09
+
+
+/* Function Prototypes for SX1 devices control on I2C bus */
+
+int sx1_setbacklight(u8 backlight);
+int sx1_getbacklight(u8 *backlight);
+int sx1_setkeylight(u8 keylight);
+int sx1_getkeylight(u8 *keylight);
+
+int sx1_setmmipower(u8 onoff);
+int sx1_setusbpower(u8 onoff);
+int sx1_setmmcpower(u8 onoff);
+
+#endif /* __ASM_ARCH_SX1_I2C_CHIPS_H */
index 031672c563777667b6f9f37baadea56137b74b43..db44c5d1f1a0490d8f309530553c22685c20c897 100644 (file)
@@ -179,4 +179,8 @@ extern const void *omap_get_var_config(u16 tag, size_t *len);
 extern struct omap_board_config_kernel *omap_board_config;
 extern int omap_board_config_size;
 
+
+/* for TI reference platforms sharing the same debug card */
+extern int debug_card_init(u32 addr, unsigned gpio);
+
 #endif
index f7774192a41e7aae5fd716e16e2204e47b0c6bd8..f33b467fddb7c871b4cfd275423cccaeded2375d 100644 (file)
@@ -417,7 +417,6 @@ extern void omap_free_lcd_dma(void);
 extern void omap_setup_lcd_dma(void);
 extern void omap_enable_lcd_dma(void);
 extern void omap_stop_lcd_dma(void);
-extern int  omap_lcd_dma_ext_running(void);
 extern void omap_set_lcd_dma_ext_controller(int external);
 extern void omap_set_lcd_dma_single_transfer(int single);
 extern void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
diff --git a/include/asm-arm/arch-omap/eac.h b/include/asm-arm/arch-omap/eac.h
new file mode 100644 (file)
index 0000000..6662cb0
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * linux/include/asm-arm/arch-omap2/eac.h
+ *
+ * Defines for Enhanced Audio Controller
+ *
+ * Contact: Jarkko Nikula <jarkko.nikula@nokia.com>
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ * Copyright (C) 2004 Texas Instruments, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#ifndef __ASM_ARM_ARCH_OMAP2_EAC_H
+#define __ASM_ARM_ARCH_OMAP2_EAC_H
+
+#include <asm/arch/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/irq.h>
+
+#include <sound/driver.h>
+#include <sound/core.h>
+
+/* master codec clock source */
+#define EAC_MCLK_EXT_MASK      0x100
+enum eac_mclk_src {
+       EAC_MCLK_INT_11290000, /* internal 96 MHz / 8.5 = 11.29 Mhz */
+       EAC_MCLK_EXT_11289600 = EAC_MCLK_EXT_MASK,
+       EAC_MCLK_EXT_12288000,
+       EAC_MCLK_EXT_2x11289600,
+       EAC_MCLK_EXT_2x12288000,
+};
+
+/* codec port interface mode */
+enum eac_codec_mode {
+       EAC_CODEC_PCM,
+       EAC_CODEC_AC97,
+       EAC_CODEC_I2S_MASTER, /* codec port, I.e. EAC is the master */
+       EAC_CODEC_I2S_SLAVE,
+};
+
+/* configuration structure for I2S mode */
+struct eac_i2s_conf {
+       /* if enabled, then first data slot (left channel) is signaled as
+        * positive level of frame sync EAC.AC_FS */
+       unsigned        polarity_changed_mode:1;
+       /* if enabled, then serial data starts one clock cycle after the
+        * of EAC.AC_FS for first audio slot */
+       unsigned        sync_delay_enable:1;
+};
+
+/* configuration structure for EAC codec port */
+struct eac_codec {
+       enum eac_mclk_src       mclk_src;
+
+       enum eac_codec_mode     codec_mode;
+       union {
+               struct eac_i2s_conf     i2s;
+       } codec_conf;
+
+       int             default_rate; /* audio sampling rate */
+
+       int             (* set_power)(void *private_data, int dac, int adc);
+       int             (* register_controls)(void *private_data,
+                                             struct snd_card *card);
+       const char      *short_name;
+
+       void            *private_data;
+};
+
+/* structure for passing platform dependent data to the EAC driver */
+struct eac_platform_data {
+        int    (* init)(struct device *eac_dev);
+       void    (* cleanup)(struct device *eac_dev);
+       /* these callbacks are used to configure & control external MCLK
+        * source. NULL if not used */
+       int     (* enable_ext_clocks)(struct device *eac_dev);
+       void    (* disable_ext_clocks)(struct device *eac_dev);
+};
+
+extern void omap_init_eac(struct eac_platform_data *pdata);
+
+extern int eac_register_codec(struct device *eac_dev, struct eac_codec *codec);
+extern void eac_unregister_codec(struct device *eac_dev);
+
+extern int eac_set_mode(struct device *eac_dev, int play, int rec);
+
+#endif /* __ASM_ARM_ARCH_OMAP2_EAC_H */
index 995cc83482eb3d71e2624faac2b4acbb34695c7f..6a8e07ffc2d03431b5da8b43b6a67122a212c071 100644 (file)
 #define GPMC_CS_NAND_DATA      0x24
 
 #define GPMC_CONFIG1_WRAPBURST_SUPP     (1 << 31)
-#define GPMC_CONFIG1_READMULTIPLE_SUPP  (1 << 20)
+#define GPMC_CONFIG1_READMULTIPLE_SUPP  (1 << 30)
 #define GPMC_CONFIG1_READTYPE_ASYNC     (0 << 29)
 #define GPMC_CONFIG1_READTYPE_SYNC      (1 << 29)
+#define GPMC_CONFIG1_WRITEMULTIPLE_SUPP (1 << 28)
 #define GPMC_CONFIG1_WRITETYPE_ASYNC    (0 << 27)
 #define GPMC_CONFIG1_WRITETYPE_SYNC     (1 << 27)
 #define GPMC_CONFIG1_CLKACTIVATIONTIME(val) ((val & 3) << 25)
@@ -80,6 +81,8 @@ struct gpmc_timings {
 };
 
 extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns);
+extern unsigned int gpmc_round_ns_to_ticks(unsigned int time_ns);
+extern unsigned long gpmc_get_fclk_period(void);
 
 extern void gpmc_cs_write_reg(int cs, int idx, u32 val);
 extern u32 gpmc_cs_read_reg(int cs, int idx);
index e225f4f39b34920c6c29ee182dcbe47e02798766..da572092e255aa390bd68ec69cdb84d0a0e91acd 100644 (file)
 #include "board-h4.h"
 #endif
 
+#ifdef CONFIG_MACH_OMAP_2430SDP
+#include "board-2430sdp.h"
+#endif
+
 #ifdef CONFIG_MACH_OMAP_APOLLON
 #include "board-apollon.h"
 #endif
 #include "board-voiceblue.h"
 #endif
 
+#ifdef CONFIG_MACH_OMAP_PALMTE
+#include "board-palmte.h"
+#endif
+
+#ifdef CONFIG_MACH_OMAP_PALMZ71
+#include "board-palmz71.h"
+#endif
+
+#ifdef CONFIG_MACH_OMAP_PALMTT
+#include "board-palmtt.h"
+#endif
+
+#ifdef CONFIG_MACH_SX1
+#include "board-sx1.h"
+#endif
+
 #endif /* !__ASSEMBLER__ */
 
 #endif /* __ASM_ARCH_OMAP_HARDWARE_H */
index 4aca7e3d7566c1b9619e9ce60ec598fde09e8a82..289082d07f14ec284e7cf7d54cf61b229074acf8 100644 (file)
 #define L4_24XX_PHYS   L4_24XX_BASE    /* 0x48000000 */
 #define L4_24XX_VIRT   0xd8000000
 #define L4_24XX_SIZE   SZ_1M           /* 1MB of 128MB used, want 1MB sect */
+
+#ifdef CONFIG_ARCH_OMAP2430
+#define L4_WK_243X_PHYS                L4_WK_243X_BASE         /* 0x49000000 */
+#define L4_WK_243X_VIRT                0xd9000000
+#define L4_WK_243X_SIZE                SZ_1M
+#define OMAP243X_GPMC_PHYS     OMAP243X_GPMC_BASE      /* 0x49000000 */
+#define OMAP243X_GPMC_VIRT     0xFE000000
+#define OMAP243X_GPMC_SIZE     SZ_1M
+#endif
+
 #define IO_OFFSET      0x90000000
 #define IO_ADDRESS(pa) ((pa) + IO_OFFSET)      /* Works for L3 and L4 */
 #define io_p2v(pa)     ((pa) + IO_OFFSET)      /* Works for L3 and L4 */
index 82d276a6bd95b6f8f867ec22fe6b463a5fb32045..69ed7ee40179e4bf83ef0649c7072af6d93fae22 100644 (file)
@@ -7,6 +7,12 @@
 #ifndef __ASM_ARCH_MENELAUS_H
 #define __ASM_ARCH_MENELAUS_H
 
+struct device;
+
+struct menelaus_platform_data {
+       int (* late_init)(struct device *dev);
+};
+
 extern int menelaus_register_mmc_callback(void (*callback)(void *data, u8 card_mask),
                                          void *data);
 extern void menelaus_unregister_mmc_callback(void);
@@ -20,6 +26,19 @@ extern int menelaus_set_vaux(unsigned int mV);
 extern int menelaus_set_vdcdc(int dcdc, unsigned int mV);
 extern int menelaus_set_slot_sel(int enable);
 extern int menelaus_get_slot_pin_states(void);
+extern int menelaus_set_vcore_sw(unsigned int mV);
+extern int menelaus_set_vcore_hw(unsigned int roof_mV, unsigned int floor_mV);
+
+#define EN_VPLL_SLEEP  (1 << 7)
+#define EN_VMMC_SLEEP  (1 << 6)
+#define EN_VAUX_SLEEP  (1 << 5)
+#define EN_VIO_SLEEP   (1 << 4)
+#define EN_VMEM_SLEEP  (1 << 3)
+#define EN_DC3_SLEEP   (1 << 2)
+#define EN_DC2_SLEEP   (1 << 1)
+#define EN_VC_SLEEP    (1 << 0)
+
+extern int menelaus_set_regulator_sleep(int enable, u32 val);
 
 #if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_MENELAUS)
 #define omap_has_menelaus()    1
@@ -28,4 +47,3 @@ extern int menelaus_get_slot_pin_states(void);
 #endif
 
 #endif
-
diff --git a/include/asm-arm/arch-omap/mmc.h b/include/asm-arm/arch-omap/mmc.h
new file mode 100644 (file)
index 0000000..b70e37b
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * MMC definitions for OMAP2
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __OMAP2_MMC_H
+#define __OMAP2_MMC_H
+
+#include <linux/types.h>
+#include <linux/device.h>
+#include <linux/mmc/host.h>
+
+#define OMAP_MMC_MAX_SLOTS     2
+
+struct omap_mmc_platform_data {
+       unsigned enabled:1;
+       /* number of slots on board */
+       unsigned nr_slots:2;
+       /* nomux means "standard" muxing is wrong on this board, and that
+        * board-specific code handled it before common init logic.
+        */
+       unsigned nomux:1;
+       /* 4 wire signaling is optional, and is only used for SD/SDIO and
+        * MMCv4 */
+       unsigned wire4:1;
+       /* set if your board has components or wiring that limits the
+        * maximum frequency on the MMC bus */
+       unsigned int max_freq;
+
+       /* switch the bus to a new slot */
+       int (* switch_slot)(struct device *dev, int slot);
+       /* initialize board-specific MMC functionality, can be NULL if
+        * not supported */
+       int (* init)(struct device *dev);
+       void (* cleanup)(struct device *dev);
+
+       struct omap_mmc_slot_data {
+               int (* set_bus_mode)(struct device *dev, int slot, int bus_mode);
+               int (* set_power)(struct device *dev, int slot, int power_on, int vdd);
+               int (* get_ro)(struct device *dev, int slot);
+
+               /* return MMC cover switch state, can be NULL if not supported.
+                *
+                * possible return values:
+                *   0 - open
+                *   1 - closed
+                */
+               int (* get_cover_state)(struct device *dev, int slot);
+
+               const char *name;
+               u32 ocr_mask;
+       } slots[OMAP_MMC_MAX_SLOTS];
+};
+
+extern void omap_set_mmc_info(int host, const struct omap_mmc_platform_data *info);
+
+/* called from board-specific card detection service routine */
+extern void omap_mmc_notify_card_detect(struct device *dev, int slot, int detected);
+extern void omap_mmc_notify_cover_event(struct device *dev, int slot, int is_closed);
+
+#endif
index f1ec2edd4040a286f0a32355b8075562019a9f68..b8fff50e6a87acd6399eb4f24249fbbbf01f6fb2 100644 (file)
@@ -406,6 +406,29 @@ enum omap1xxx_index {
        V10_1610_CF_IREQ,
        W10_1610_CF_RESET,
        W11_1610_CF_CD1,
+
+       /* parallel camera */
+       J15_1610_CAM_LCLK,
+       J18_1610_CAM_D7,
+       J19_1610_CAM_D6,
+       J14_1610_CAM_D5,
+       K18_1610_CAM_D4,
+       K19_1610_CAM_D3,
+       K15_1610_CAM_D2,
+       K14_1610_CAM_D1,
+       L19_1610_CAM_D0,
+       L18_1610_CAM_VS,
+       L15_1610_CAM_HS,
+       M19_1610_CAM_RSTZ,
+       Y15_1610_CAM_OUTCLK,
+
+       /* serial camera */
+       H19_1610_CAM_EXCLK,
+       Y12_1610_CCP_CLKP,
+       W13_1610_CCP_CLKM,
+       W14_1610_CCP_DATAP,
+       Y14_1610_CCP_DATAM,
+
 };
 
 enum omap24xx_index {
index 708b2fac77f21e7b92544d77e06ca685ab97cef1..14c0f94965795d4019adc8d4fe2b1654cdaf71b5 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #define L4_24XX_BASE           0x48000000
+#define L4_WK_243X_BASE                0x49000000
 #define L3_24XX_BASE           0x68000000
 
 /* interrupt controller */
 #define OMAP24XX_IVA_INTC_BASE 0x40000000
 #define IRQ_SIR_IRQ            0x0040
 
+#ifdef CONFIG_ARCH_OMAP2420
 #define OMAP24XX_32KSYNCT_BASE (L4_24XX_BASE + 0x4000)
 #define OMAP24XX_PRCM_BASE     (L4_24XX_BASE + 0x8000)
 #define OMAP24XX_SDRC_BASE     (L3_24XX_BASE + 0x9000)
+#define OMAP242X_CONTROL_STATUS        (L4_24XX_BASE + 0x2f8)
+#endif
+
+#ifdef CONFIG_ARCH_OMAP2430
+#define OMAP24XX_32KSYNCT_BASE (L4_WK_243X_BASE + 0x20000)
+#define OMAP24XX_PRCM_BASE     (L4_WK_243X_BASE + 0x6000)
+#define OMAP24XX_SDRC_BASE     (0x6D000000)
+#define OMAP242X_CONTROL_STATUS        (L4_24XX_BASE + 0x2f8)
+#define OMAP243X_GPMC_BASE     0x6E000000
+#endif
 
 /* DSP SS */
 #define OMAP24XX_DSP_BASE      0x58000000
diff --git a/include/asm-arm/arch-omap/onenand.h b/include/asm-arm/arch-omap/onenand.h
new file mode 100644 (file)
index 0000000..6c959d0
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * include/asm-arm/arch-omap/onenand.h
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ * Author: Juha Yrjola
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/mtd/partitions.h>
+
+struct omap_onenand_platform_data {
+       int                     cs;
+       int                     gpio_irq;
+       struct mtd_partition    *parts;
+       int                     nr_parts;
+       int                     (*onenand_setup)(void __iomem *);
+       int                     dma_channel;
+};