diff --git a/arch/arm/configs/mioa701_defconfig b/arch/arm/configs/mioa701_defconfig
new file mode 100644
index 0000000..db04150
--- /dev/null
+++ b/arch/arm/configs/mioa701_defconfig
@@ -0,0 +1,1592 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh19
+# Fri Feb  1 22:11:48 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=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_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+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 is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# 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_OMAP is not set
+CONFIG_BOARD_IRQ_MAP_SMALL=y
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+
+#
+# HTC_HW6X00
+#
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+CONFIG_MACH_MIOA701=y
+CONFIG_MACH_MIOA701_SOUND=m
+CONFIG_MIOA701_BLUETOOTH=m
+CONFIG_MIOA701_GSM=m
+CONFIG_MIOA701_GPS=m
+CONFIG_MIOA701_PM=y
+CONFIG_MIOA701_BATTERY=m
+CONFIG_MIOA701_LEDS=m
+CONFIG_MIOA701_UDC=y
+# CONFIG_MACH_GHI270HG is not set
+# CONFIG_MACH_GHI270 is not set
+# CONFIG_MACH_LOOXC550 is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+# CONFIG_PXA27x_VOLTAGE is not set
+CONFIG_GPIO=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=y
+
+#
+# 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
+
+#
+# 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_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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 is not set
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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
+
+#
+# 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
+# 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=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+CONFIG_BT_HCIBFUSB=m
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# 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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# 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_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# 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_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=m
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+# CONFIG_ACX_CS is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# 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
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_LED_TRIGGER 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_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_KEYS2 is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_PXA27x=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_WM97XX=m
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+CONFIG_TOUCHSCREEN_WM9713=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+# CONFIG_RS232_SERIAL is not set
+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 is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_PXA2XX is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU 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_LM70 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_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_APM_POWER=m
+# CONFIG_BATTERY_DS2760 is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_ADC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_SLEEVE_DEBUG is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_BBKEYS is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+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
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_AC97=m
+# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
+# CONFIG_SND_PXA2XX_SOC_BLUEANGEL is not set
+# CONFIG_SND_PXA2XX_SOC_H5000 is not set
+CONFIG_SND_PXA2XX_SOC_MIOA701=m
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9705 is not set
+CONFIG_SND_SOC_WM9713=m
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_PXA2XX_GPIO=y
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL 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=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE 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=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="utf8"
+# CONFIG_CIFS is not set
+# 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
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+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 is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# 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
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# 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=y
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW 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
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# 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
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/arch/arm/configs/mioa701_static_defconfig b/arch/arm/configs/mioa701_static_defconfig
new file mode 100644
index 0000000..4b7dd51
--- /dev/null
+++ b/arch/arm/configs/mioa701_static_defconfig
@@ -0,0 +1,1592 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21-hh19
+# Fri Feb  1 22:11:48 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=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_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+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 is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+# CONFIG_UID16 is not set
+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_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+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=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# 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_OMAP is not set
+CONFIG_BOARD_IRQ_MAP_SMALL=y
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_TOSHIBA_TMIO_OHCI is not set
+# CONFIG_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_MACH_A730 is not set
+# CONFIG_ARCH_H1900 is not set
+# CONFIG_ARCH_H2200 is not set
+# CONFIG_MACH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_HTCALPINE is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HTCAPACHE is not set
+# CONFIG_MACH_BLUEANGEL is not set
+
+#
+# HTC_HW6X00
+#
+# CONFIG_MACH_HTCBEETLES is not set
+# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_MACH_X50 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_MACH_RECON is not set
+CONFIG_MACH_MIOA701=y
+CONFIG_MACH_MIOA701_SOUND=y
+CONFIG_MIOA701_BLUETOOTH=y
+CONFIG_MIOA701_GSM=y
+CONFIG_MIOA701_GPS=y
+CONFIG_MIOA701_PM=y
+CONFIG_MIOA701_BATTERY=y
+CONFIG_MIOA701_LEDS=y
+CONFIG_MIOA701_UDC=y
+# CONFIG_MACH_GHI270HG is not set
+# CONFIG_MACH_GHI270 is not set
+# CONFIG_MACH_LOOXC550 is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA27x=y
+# CONFIG_PXA27x_VOLTAGE is not set
+CONFIG_GPIO=y
+
+#
+# Linux As Bootloader
+#
+# CONFIG_LAB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=y
+
+#
+# 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
+
+#
+# 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_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# 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 is not set
+# 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 is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# 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
+
+#
+# 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
+# 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=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=y
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+CONFIG_BT_HCIBFUSB=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# 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 is not set
+# CONFIG_MTD_JEDECPROBE 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_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# 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_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# 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_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_ACX=y
+# CONFIG_ACX_USB is not set
+CONFIG_ACX_MEM=y
+# CONFIG_ACX_CS is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE 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
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_LED_TRIGGER 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_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_KEYS2 is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
+CONFIG_KEYBOARD_PXA27x=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 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_WM97XX=y
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+CONFIG_TOUCHSCREEN_WM9713=y
+# 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_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW 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 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+# CONFIG_SERIAL_PXA_CONSOLE is not set
+CONFIG_SERIAL_PXA_COUNT=4
+# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_CORE=y
+# CONFIG_RS232_SERIAL is not set
+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 is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_PXA2XX is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU 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_LM70 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_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 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_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=y
+CONFIG_APM_POWER=y
+# CONFIG_BATTERY_DS2760 is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_ADC is not set
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_SLEEVE_DEBUG is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_BBKEYS is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=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_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VSFB is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+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
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_AC97=y
+# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
+# CONFIG_SND_PXA2XX_SOC_BLUEANGEL is not set
+# CONFIG_SND_PXA2XX_SOC_H5000 is not set
+CONFIG_SND_PXA2XX_SOC_MIOA701=y
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9705 is not set
+CONFIG_SND_SOC_WM9713=y
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=y
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA27X_DMA is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_PXA2XX_GPIO=y
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_TMIO is not set
+# CONFIG_MMC_SAMCOP is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# 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 is not set
+# CONFIG_AUTOFS4_FS is not set
+# 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=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL 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=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE 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=y
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="utf8"
+# CONFIG_CIFS is not set
+# 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
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# 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=y
+# 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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+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 is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# 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
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# 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=y
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW 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
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# 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
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 2bdcbed..29c72d6 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -46,6 +46,7 @@ source "arch/arm/mach-pxa/rover/Kconfig"
 source "arch/arm/mach-pxa/palmld/Kconfig"
 source "arch/arm/mach-pxa/palmt3/Kconfig"
 source "arch/arm/mach-pxa/plat-recon/Kconfig"
+source "arch/arm/mach-pxa/mioa701/Kconfig"
 
 config MACH_GHI270HG
 	bool "Grayhill Duramax HG"
@@ -200,6 +201,65 @@ config PXA27x_VOLTAGE_MAX158xx
 	tristate "MAX158xx PMIC"
 	depends on PXA27x_VOLTAGE
 
+config GPIO
+ bool "GPIO pin support for PXA27x"
+ default y if ARM || PPC
+ default n
+ help
+ Enabling this option adds support for PXA GPIO pins. Most
+ System-on-Chip processors have this kind of pins mostly shared
+ with some kind of internal hardware. Remaining pins may be used
+ for any purposes (input/output/interrupt etc). To do so, enable
+ this feature and provide some kernel parameters to define what
+ pins are available. To define one or more GPIO pin give a:
+ gpio.mapping=<pin#>:(in|(out:(hi|lo)))[.<pin#>:(in|(out:(hi|lo)))]
+ Where <pin#> is any GPIO pin number your SoC supports, out or in
+ is the data direction and hi or lo is one of the possible
+ levels an output pin can have.
+ For example. You have three GPIO: pin 8, 63 and 113. Pin 8 is a
+ simple key input, pin 63 an output to control a motor. It needs
+ a high level first to stop the motor while booting. Pin 113 is
+ also an output pin, but needs low level while booting. To do so,
+ give this kernel parameter:
+ gpio.mapping=8:in.63:out:hi.113:out:lo
+ With "cat /proc/gpio" you will get:
+ GPIO POLICY DIRECTION OWNER
+ 8: user space input kernel
+ 63: user space output kernel
+ 113: user space output kernel
+ To set pin 63 to low (to start the motor) do a:
+ $ echo 0 > /sys/class/gpio/gpio63/level
+ Or to stop the motor again:
+ $ echo 1 > /sys/class/gpio/gpio63/level
+ To get the level of the key (pin 8) do:
+ $ cat /sys/class/gpio/gpio8/level
+ The result will be 1 or 0.
+
+ To add new GPIO pins at runtime (lets say pin 88 should be an input)
+ you can do a:
+ $ echo 88:in > /sys/class/gpio/map_gpio
+ The same with a new GPIO pin 95, it should be an output and at high level:
+ $ echo 95:out:hi > /sys/class/gpio/map_gpio
+
+ After that "cat /proc/gpio" will show you:
+ GPIO POLICY DIRECTION OWNER
+ 8: user space input kernel
+ 63: user space output kernel
+ 113: user space output kernel
+ 88: user space input kernel
+ 95: user space output kernel
+
+ Note: You can add more than one new GPIO pin in one step. The period is the
+ delimiter between each pin definition. To add the pins 88 and 95 in the
+ example above in one step do a:
+ $ echo 88:in.95:out:hi > /sys/class/gpio/map_gpio
+
+ To remove any of these GPIOs use (in this example GPIO pin 95):
+ $ echo 95 > /sys/class/gpio/unmap_gpio
+
+ If unsure, say N.
+
+
 config POWER_DRIVER
         tristate "Advanced power driver"
 	depends on MACH_HTCUNIVERSAL
@@ -207,3 +267,4 @@ config POWER_DRIVER
           This selection enables an advanced power driver management
 
 endif
+
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index 9e32f61..7e63d81 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -50,6 +50,7 @@ obj-$(CONFIG_MACH_T3XSCALE)	+= palmt3/
 obj-$(CONFIG_MACH_XSCALE_PALMLD)	+= palmld/
 obj-$(CONFIG_MACH_RECON)        += plat-recon/
 obj-$(CONFIG_MACH_LOOXC550)	+= looxc550/
+obj-$(CONFIG_MACH_MIOA701)      += mioa701/
 
 # Support for blinky lights
 led-y := leds.o
@@ -66,6 +67,7 @@ obj-$(CONFIG_CPU_FREQ_PXA) += cpu-pxa.o
 # Misc features
 obj-$(CONFIG_PM) += pm.o sleep.o
 obj-$(CONFIG_PXA_SSP) += ssp.o
+obj-$(CONFIG_GPIO) += pxa27x_gpio.o
 
 ifeq ($(CONFIG_PXA27x),y)
 obj-$(CONFIG_PM) += standby.o
diff --git a/arch/arm/mach-pxa/mioa701/Kconfig b/arch/arm/mach-pxa/mioa701/Kconfig
new file mode 100644
index 0000000..af409b8
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/Kconfig
@@ -0,0 +1,63 @@
+menuconfig MACH_MIOA701
+	bool "MIO A701"
+	select PXA27x
+	select IWMMXT
+	select BOARD_IRQ_MAP_SMALL
+	help
+		Say Y here if you intend to run this kernel on a
+		MIO A701. Currently there is only basic support
+		for this PDA.
+
+config MACH_MIOA701_SOUND
+	tristate "MIO A701 sound support"
+	depends on MACH_MIOA701
+	select SND_PXA2XX_SOC_MIOA701
+	help
+	  Enable support for the sound chip of the MIO A701.
+
+config MIOA701_BLUETOOTH
+	tristate "MITAC MIO A701 Bluetooth"
+	depends on MACH_MIOA701
+	help
+	  Enables support for the TI BRF6150 Bluetooth Module
+	  in the MIO A701.
+
+config MIOA701_GSM
+	tristate "MITAC MIO A701 GSM"
+	depends on MACH_MIOA701
+	help
+	  Enables support for the Sagem XS200 GSM Module
+	  in the MIO A701.
+
+config MIOA701_GPS
+	tristate "MITAC MIO A701 GPS"
+	depends on MACH_MIOA701
+	help
+	  Enables support for the GPS Module
+	  in the MIO A701.
+
+config MIOA701_PM
+	bool "MITAC MIO A701 PM"
+	depends on MACH_MIOA701 && PM
+	help
+	  Enables support for the Power Managment
+	  in the MIO A701 (suspend/resume)
+
+config MIOA701_BATTERY
+	tristate "MITAC MIO A701 Battery"
+	depends on MACH_MIOA701 && PM && TOUCHSCREEN_WM97XX
+	help
+	  Enables support for the Mio A701 battery
+
+config MIOA701_LEDS
+	tristate "MITAC MIO A701 LEDS"
+	depends on MACH_MIOA701
+	help
+	  Enables support for the Leds and Vibrator
+	  in the MIO A701.
+
+config MIOA701_UDC
+        bool "USB Device Controller support"
+        depends on MACH_MIOA701 && USB_PXA27X
+        help
+          Enables MIO A701 specific USB detection
diff --git a/arch/arm/mach-pxa/mioa701/Makefile b/arch/arm/mach-pxa/mioa701/Makefile
new file mode 100644
index 0000000..a8062b6
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/Makefile
@@ -0,0 +1,14 @@
+#
+# Makefile for MIO A701
+#
+
+mioa701_power-objs := mioa701_pm.o mioa701_suspend.o mioa701_bootresume.o
+
+obj-$(CONFIG_MACH_MIOA701)		+= mioa701.o mioa701_mci.o
+obj-$(CONFIG_MIOA701_BLUETOOTH) 	+= mioa701_bt.o
+obj-$(CONFIG_MIOA701_GSM)	 	+= mioa701_phone.o
+obj-$(CONFIG_MIOA701_GPS)	 	+= mioa701_gps.o
+obj-$(CONFIG_MIOA701_PM)	 	+= mioa701_power.o
+obj-$(CONFIG_MIOA701_LEDS)	 	+= mioa701_leds.o
+obj-$(CONFIG_MIOA701_UDC)		+= mioa701_udc.o
+obj-$(CONFIG_MIOA701_BATTERY)		+= mioa701_battery.o
diff --git a/arch/arm/mach-pxa/mioa701/mioa701.c b/arch/arm/mach-pxa/mioa701/mioa701.c
new file mode 100644
index 0000000..b18f2b8
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701.c
@@ -0,0 +1,200 @@
+/*
+ * Hardware definitions for MIO A701
+ *
+ * 2008-1-1 Robert Jarzmik
+ *          inspired by initial work of Damien Tournoud
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/fb.h>
+#include <linux/corgi_bl.h>
+#include <linux/input.h>
+#include <linux/delay.h>
+#include <linux/gpio_keys.h>
+
+#include <asm/mach-types.h>
+#include <asm/hardware.h>
+#include <asm/setup.h>
+#include <asm/gpio.h>
+
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/serial.h>
+#include <asm/arch/pxa27x_keyboard.h>
+#include <asm/arch/pxafb.h>
+
+#include "../generic.h"
+#include "mioa701.h"
+
+#define MIO_SIMPLE_DEV(var, strname, pdata)	\
+static struct platform_device var = {		\
+        .name   = strname,			\
+	.dev = {				\
+		.platform_data = pdata,		\
+	},					\
+};
+
+/* LCD Screen and Backlight */
+static void mioa701_backlight_set_intensity(int intensity)
+{
+	if (intensity > 0) {
+		pxa_gpio_mode(GPIO16_PWM0_MD);
+		pxa_set_cken(CKEN0_PWM0, 1);
+		PWM_CTRL0 = 0;
+		PWM_PERVAL0 = 0x3ff;
+		PWM_PWDUTY0 = intensity;
+	}
+	else {
+		PWM_CTRL0 = 0;
+		PWM_PWDUTY0 = 0x0;
+		pxa_set_cken(CKEN0_PWM0, 0);
+	}
+}
+
+static struct corgibl_machinfo mioa701_backlight_info = {
+	.max_intensity = 0x3ff,
+	.default_intensity = 0x3ff,
+	.limit_mask = 0x0f,
+	.set_bl_intensity = mioa701_backlight_set_intensity,
+};
+
+/*
+ * LTM0305A776C LCD panel timings
+ *
+ * see:
+ *  - the LTM0305A776C datasheet,
+ *  - and the PXA27x Programmers' manual
+ */
+static struct pxafb_mode_info mioa701_ltm0305a776c = {
+	.pixclock		= 220000,
+	.xres			= 240,
+	.yres			= 320,
+	.bpp			= 16,
+	.hsync_len		= 4,
+	.vsync_len		= 2,
+	.left_margin		= 6,
+	.right_margin		= 4,
+	.upper_margin		= 5,
+	.lower_margin		= 3,
+	// .sync			= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+};
+
+static struct pxafb_mach_info mioa701_pxafb_info = {
+	.modes			= &mioa701_ltm0305a776c,
+	.num_modes		= 1,
+	.lccr0			= LCCR0_Act,
+	.lccr3			= LCCR3_PCP,
+};
+
+/**
+ * Keyboard configuration
+ */
+static struct pxa27x_keyboard_platform_data mioa701_kbd = {
+	.nr_rows = 3,
+	.nr_cols = 3,
+	.keycodes = {
+	{
+		/* row 0 */
+		KEY_UP,
+		KEY_RIGHT,
+		KEY_MEDIA,	// Media player
+	}, {
+		/* row 1 */
+		KEY_DOWN,
+		KEY_ENTER,
+		KEY_CONNECT,	// GPS
+	}, {
+		/* row 2 */
+		KEY_LEFT,
+		KEY_PHONE,	// Phone Green
+		KEY_CAMERA,	// Camera
+	},
+	},
+	.gpio_modes = {
+		GPIO100_KP_MKIN0_MD,
+		GPIO101_KP_MKIN1_MD,
+		GPIO102_KP_MKIN2_MD,
+		GPIO103_KP_MKOUT0_MD,
+		GPIO104_KP_MKOUT1_MD,
+		GPIO105_KP_MKOUT2_MD,
+	}
+};
+
+struct platform_device mioa701_pxa_keyboard = {
+	.name   = "pxa27x-keyboard",
+	.id     = -1,
+	.dev	=  {
+		.platform_data	= &mioa701_kbd,
+	},
+};
+
+/**
+ * GPIO Key Configuration
+ */
+static struct gpio_keys_button mioa701_button_table[] = {
+	{KEY_EXIT, 0 /* yes, this is GPIO<0> ! */, 0},		// red phone key
+	{KEY_VOLUMEUP, 93, 0},                         		// volume-up
+	{KEY_VOLUMEDOWN, 94, 0},                       		// volume-down
+};
+
+static struct gpio_keys_platform_data mioa701_gpio_keys_data = {
+	.buttons  = mioa701_button_table,
+	.nbuttons = ARRAY_SIZE(mioa701_button_table),
+};
+
+/* Bluetooth */
+struct platform_pxa_serial_funcs mioa701_bt_funcs;
+EXPORT_SYMBOL(mioa701_bt_funcs);
+
+/* Phone */
+struct platform_pxa_serial_funcs mioa701_phone_funcs;
+EXPORT_SYMBOL(mioa701_phone_funcs);
+
+/* GPS */
+struct platform_pxa_serial_funcs mioa701_gps_funcs;
+EXPORT_SYMBOL(mioa701_gps_funcs);
+
+/* Devices */
+MIO_SIMPLE_DEV(mioa701_backlight, "corgi-bl",      &mioa701_backlight_info)
+MIO_SIMPLE_DEV(mioa701_gpio_keys, "gpio-keys",     &mioa701_gpio_keys_data)
+MIO_SIMPLE_DEV(mioa701_phone,     "mioa701-phone", &mioa701_phone_funcs)
+MIO_SIMPLE_DEV(mioa701_bt,        "mioa701-bt",    &mioa701_bt_funcs)
+MIO_SIMPLE_DEV(mioa701_gps,       "mioa701-gps",   &mioa701_gps_funcs)
+MIO_SIMPLE_DEV(mioa701_udc,       "mioa701-udc",   NULL)
+MIO_SIMPLE_DEV(mioa701_pm,        "mioa701-pm",    NULL)
+MIO_SIMPLE_DEV(mioa701_led,       "mioa701-leds",  NULL)
+
+static struct platform_device *devices[] __initdata = {
+	&mioa701_pxa_keyboard,
+	&mioa701_gpio_keys,
+        &mioa701_backlight,
+	&mioa701_udc,
+        &mioa701_phone,
+        &mioa701_bt,
+        &mioa701_gps,
+        &mioa701_led,
+	&mioa701_pm,
+};
+
+static void __init mioa701_init(void)
+{
+	set_pxa_fb_info(&mioa701_pxafb_info);
+	RTTR = 32768 - 1;			/* Reset WinCE value */
+
+	platform_add_devices(devices, ARRAY_SIZE(devices));
+}
+
+MACHINE_START(MIOA701, "MIO A701")
+	.phys_io	= 0x40000000,
+	.io_pg_offst	= (io_p2v(0x40000000) >> 18) & 0xfffc,
+	.boot_params	= 0xa0000100,
+	.map_io		= &pxa_map_io,
+	.init_irq	= &pxa_init_irq,
+	.init_machine	= mioa701_init,
+	.timer		= &pxa_timer,
+MACHINE_END
diff --git a/arch/arm/mach-pxa/mioa701/mioa701.h b/arch/arm/mach-pxa/mioa701/mioa701.h
new file mode 100644
index 0000000..8a031a3
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701.h
@@ -0,0 +1,59 @@
+#ifndef _MIOA701_H_
+#define _MIOA701_H_
+
+#include <asm/arch/pxa-regs.h>
+
+/* detect the connexion of an USB cable or charger */
+#define MIO_GPIO_USB_DETECT		13
+/* probably (XXX: untested) linked to USB enable */
+#define MIO_GPIO_USB_EN0		9
+#define MIO_GPIO_USB_EN1		22
+
+/* SDIO bits */
+#define MIO_GPIO_SDIO_RO		78
+#define MIO_GPIO_SDIO_INSERT		15
+#define MIO_GPIO_SDIO_EN		91
+
+/* Bluetooth */
+#define MIO_GPIO_BT_RXD_MD		GPIO42_BTRXD_MD
+#define MIO_GPIO_BT_TXD_MD		GPIO43_BTTXD_MD
+#define MIO_GPIO_BT_CTS_MD		GPIO44_BTCTS_MD
+#define MIO_GPIO_BT_RTS_MD		GPIO45_BTRTS_MD
+#define MIO_GPIO_BT_ON			83
+
+/* GPS */
+#define MIO_GPIO_GPS_UNKNOWN1		23
+#define MIO_GPIO_GPS_ON			26
+#define MIO_GPIO_GPS_RESET		27
+#define MIO_GPIO_GPS_UNKNOWN2		106
+#define MIO_GPIO_GPS_UNKNOWN3		107
+#define MIO_GPIO_GPS_RXD_MD		GPIO46_STRXD_MD
+#define MIO_GPIO_GPS_TXD_MD		GPIO47_STTXD_MD
+
+/* GSM */
+#define MIO_GPIO_GSM_MOD_RESET_CMD	24
+#define MIO_GPIO_GSM_nMOD_ON_CMD	88
+#define MIO_GPIO_GSM_nMOD_OFF_CMD	90
+#define MIO_GPIO_GSM_nMOD_DTE_UART_STATE 114
+#define MIO_GPIO_GSM_MOD_ON_STATE	25
+#define MIO_GPIO_GSM_EVENT		113
+
+#define MIO_GPIO_GSM_RXD_MD		GPIO34_FFRXD_MD
+#define MIO_GPIO_GSM_CTS_MD		GPIO35_FFCTS_MD
+#define MIO_GPIO_GSM_DCD_MD		GPIO36_FFDCD_MD
+#define MIO_GPIO_GSM_DSR_MD		GPIO37_FFDSR_MD
+#define MIO_GPIO_GSM_TXD_MD		GPIO39_FFTXD_MD
+#define MIO_GPIO_GSM_DTR_MD		GPIO40_FFDTR_MD
+#define MIO_GPIO_GSM_RTS_MD		GPIO41_FFRTS_MD
+
+/* SOUND */
+#define GPIO89_AC97_SYSCLK_MD			(89 | GPIO_ALT_FN_1_OUT)
+#define MIO_GPIO_HPJACK_INSERT		12
+
+/* LEDS */
+#define MIO_GPIO_LED_nBLUE		97
+#define MIO_GPIO_LED_nOrange		98
+#define MIO_GPIO_LED_nVibra		82
+#define MIO_GPIO_LED_nKeyboard		115
+
+#endif /* _MIOA701_H */
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_battery.c b/arch/arm/mach-pxa/mioa701/mioa701_battery.c
new file mode 100644
index 0000000..5ab5b0e
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_battery.c
@@ -0,0 +1,241 @@
+/* Battery driver from MIO A701
+ *
+ * 2007-1-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ *
+ * The battery voltage is mesured on the wm9713 chip. The range mesured is
+ * beetwen 3100 mV and 3810 mV.
+ * The observed voltage curve is approximated by 2 linear functions :
+ *   - V(in mV) = -t  (in mins) + 3810 when 0 <= t < 270 mins
+ *   - V(in mV) = -5*t(in mins) + 4800 when 270 mins <= t < 340 mins
+ * According charge is between 0 and 100, and charge should be linear regarding
+ * time, discharging gives : C = 100 * (1 - t/240)
+ * Applying above linear functions, this gives :
+ *   - C = 100 when V >= 3810
+ *   - C = 100 * (1 - (3810 - V)/240) when 3450 <= V < 3810
+ *   - C = 100 * (1 - (4800-V)/5/240) when 3100 <= V < 3450
+ *   - C = 0 when V < 3100
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/pda_power.h>
+#include <linux/power_supply.h>
+#include <linux/irq.h>
+#include <linux/interrupt.h>
+#include <linux/workqueue.h>
+#include <asm/gpio.h>
+#include <linux/wm97xx.h>
+
+#include "mioa701.h"
+
+static struct wm97xx *battery_wm;
+static struct power_supply *mio_power_supply;
+
+static int is_usb_connected(void)
+{
+	return gpio_get_value(MIO_GPIO_USB_DETECT) == 0;
+}
+
+static char *supplicants[] = {
+	"mioa701_battery"
+};
+
+static struct pda_power_pdata power_pdata = {
+	.is_usb_online	= is_usb_connected,
+	.is_ac_online	= is_usb_connected,
+	.supplied_to = supplicants,
+	.num_supplicants = ARRAY_SIZE(supplicants),
+};
+
+static struct resource power_resources[] = {
+	[0] = {
+		.name	= "ac",
+		.start	= gpio_to_irq(MIO_GPIO_USB_DETECT),
+		.end	= gpio_to_irq(MIO_GPIO_USB_DETECT),
+		.flags	= IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
+	},
+	[1] = {
+		.name	= "usb",
+		.start	= gpio_to_irq(MIO_GPIO_USB_DETECT),
+		.end	= gpio_to_irq(MIO_GPIO_USB_DETECT),
+		.flags	= IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
+	},
+};
+
+static struct platform_device power_dev = 
+{
+	.name		= "pda-power",
+	.id		= -1,
+	.resource	= power_resources,
+	.num_resources	= ARRAY_SIZE(power_resources),
+	.dev = 
+	 {
+		.platform_data	= &power_pdata,
+	 },
+};
+
+static enum power_supply_property battery_props[] = {
+	POWER_SUPPLY_PROP_STATUS,
+	POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
+	POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
+	POWER_SUPPLY_PROP_VOLTAGE_NOW,
+	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,	// Necessary for apm !!!
+	POWER_SUPPLY_PROP_CHARGE_FULL,
+	POWER_SUPPLY_PROP_CHARGE_EMPTY,
+	POWER_SUPPLY_PROP_CHARGE_NOW,
+};
+
+/* Remember formulas :
+ *   - C = 100 when V >= 3810
+ *   - C = 100 * (1 - (3810 - V)/240) when 3450 <= V < 3810
+ *   - C = 100 * (1 - (4800-V)/5/240) when 3100 <= V < 3450
+ *   - C = 0 when V < 3100
+ */
+static int remain_charge(int voltage)
+{
+	int cap = -1;
+
+	if (voltage < 3100)
+		cap = 0;
+	else if (voltage > 3810)
+		cap = 100;
+	else if (voltage <3450)
+		cap = 100 - (4800-voltage)/(5*240/100);
+	else
+		cap = 100 - (3810-voltage)*100/240;
+	return cap;
+}
+
+
+static int get_battery_voltage(void)
+{
+	int adc = -1;
+
+	if (battery_wm)
+		adc = wm97xx_read_aux_adc(battery_wm, WM97XX_AUX_ID1);
+	return adc;
+}
+
+static int get_battery_status(struct power_supply *b)
+{
+	int status;
+
+	if (is_usb_connected())
+		status = POWER_SUPPLY_STATUS_CHARGING;
+	else
+		status = POWER_SUPPLY_STATUS_DISCHARGING;
+
+	return status;
+}
+
+static int get_property(struct power_supply *b,
+			enum power_supply_property psp,
+			union power_supply_propval *val)
+{
+	int ret = 0;
+
+	if (!mio_power_supply)
+		mio_power_supply = b;
+
+	switch (psp) {
+	case POWER_SUPPLY_PROP_STATUS:
+		val->intval = get_battery_status(b);
+		break;
+	case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
+		val->intval = 0xfd0;
+		break;
+	case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+		val->intval = 0xc00;
+		break;
+	case POWER_SUPPLY_PROP_VOLTAGE_NOW:
+		val->intval = get_battery_voltage();
+		break;
+	case POWER_SUPPLY_PROP_CHARGE_FULL:
+	case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
+		val->intval = 100;
+		break;
+	case POWER_SUPPLY_PROP_CHARGE_EMPTY:
+		val->intval = 0;
+		break;
+	case POWER_SUPPLY_PROP_CHARGE_NOW:
+		val->intval = remain_charge(get_battery_voltage());
+		break;
+	default:
+		val->intval = -1;
+		ret = -1;
+	}
+
+	return ret;
+};
+
+static struct power_supply battery_ps = {
+	.name = "mioa701_battery",
+	.type = POWER_SUPPLY_TYPE_BATTERY,
+	.get_property = get_property,
+	.properties = battery_props,
+	.num_properties = ARRAY_SIZE(battery_props),
+};
+
+static struct wm97xx_mach_ops battery_mach_ops;
+
+static int battery_probe(struct device *dev)
+{
+	struct wm97xx *wm = dev->driver_data;
+
+	battery_wm = wm;
+	printk(KERN_NOTICE "wm97xx-battery: mioa701 battery probed\n");
+	return wm97xx_register_mach_ops (wm, &battery_mach_ops);
+}
+
+static int battery_remove(struct device *dev)
+{
+	struct wm97xx *wm = dev->driver_data;
+
+	battery_wm = NULL;
+	mio_power_supply = NULL;
+	wm97xx_unregister_mach_ops(wm);
+	return 0;
+}
+
+static struct device_driver mioa701_battery_driver = {
+	.name = "wm97xx-battery",
+	.bus = &wm97xx_bus_type,
+	.owner = THIS_MODULE,
+	.probe = battery_probe,
+	.remove = battery_remove
+};
+
+static int __init mioa701_battery_init(void)
+{
+	int ret;
+
+	if ((ret = driver_register(&mioa701_battery_driver)))
+		printk(KERN_ERR "Couldn't register mioa701 battery driver\n");
+	if (!ret)
+		ret = power_supply_register(NULL, &battery_ps);
+	if (ret)
+		printk(KERN_ERR "Could not register mioa701 battery class\n");
+	if (!ret)
+		ret = platform_device_register(&power_dev);
+	if (!ret)
+		printk(KERN_NOTICE "mioa701 Battery driver loaded\n");
+	return ret;
+}
+
+static void __exit mioa701_battery_exit(void)
+{
+	driver_unregister(&mioa701_battery_driver);
+	power_supply_unregister(&battery_ps);
+	platform_device_unregister(&power_dev);
+	printk(KERN_NOTICE "mioa701 Battery driver unloaded\n");
+}
+
+module_init(mioa701_battery_init);
+module_exit(mioa701_battery_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("MIO A701 Battery Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_bootresume.S b/arch/arm/mach-pxa/mioa701/mioa701_bootresume.S
new file mode 100644
index 0000000..0c9d4dc
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_bootresume.S
@@ -0,0 +1,36 @@
+/* Bootloader to resume MIO A701
+ *
+ * 2007-1-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+*/
+	
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+/*
+ * Note: Yes, part of the following code is located into the .data section.
+ *       This is to allow jumpaddr to be accessed with a relative load
+ *       while we can't rely on any MMU translation.  We could have put
+ *       sleep_save_sp in the .text section as well, but some setups might
+ *       insist on it to be truly read-only.
+ */
+	.data
+ENTRY(mioa701_bootstrap)
+0:
+	b	1f
+ENTRY(mioa701_jumpaddr)
+	.word	0x0
+1:
+	mov	r0,     #0xa0000000	@ Don't suppose memory access works
+	orr	r0, r0, #0x00200000	@ even if it's supposed to
+	mov	r1, #0
+	str	r1, [r0]		@ Early disable resume for next boot
+	ldr	r0, mioa701_jumpaddr	@ (Murphy's Law)
+	mov	pc, r0
+2:
+
+ENTRY(mioa701_bootstrap_lg)
+	.data
+	.word	2b-0b
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_bt.c b/arch/arm/mach-pxa/mioa701/mioa701_bt.c
new file mode 100644
index 0000000..22522b2
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_bt.c
@@ -0,0 +1,113 @@
+/* Bluetooth interface driver for TI BRF6150 on MIO A701
+ *
+ * 2007-12-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/fs.h>
+#include <linux/leds.h>
+
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <asm/arch/serial.h>
+#include "mioa701.h"
+
+extern struct platform_pxa_serial_funcs mioa701_bt_funcs;
+
+static void mioa701_bt_configure(int state)
+{
+	int tries;
+
+	// printk( KERN_NOTICE "mioa701 configure bluetooth: %d\n", state );
+	switch (state) {
+	
+	case PXA_UART_CFG_PRE_STARTUP:
+		break;
+
+	case PXA_UART_CFG_POST_STARTUP:
+		/* pre-serial-up hardware configuration */
+		gpio_set_value(MIO_GPIO_BT_ON, 1);
+
+		/*
+		 * BRF6150's RTS goes low when firmware is ready
+		 * so check for CTS=1 (nCTS=0 -> CTS=1). Typical 150ms
+		 */
+		tries = 0;
+		do {
+			msleep(10);
+		} while ((BTMSR & MSR_CTS) == 0 && tries++ < 50);
+		try_module_get(THIS_MODULE);
+		break;
+
+	case PXA_UART_CFG_PRE_SHUTDOWN:
+		gpio_set_value(MIO_GPIO_BT_ON, 0);
+		break;
+
+	case PXA_UART_CFG_POST_SHUTDOWN:
+		module_put(THIS_MODULE);
+	default:
+		break;
+	}
+}
+
+
+static int mioa701_bt_probe(struct platform_device *pdev)
+{
+	/* configure bluetooth UART */
+	pxa_gpio_mode(MIO_GPIO_BT_RXD_MD);
+	pxa_gpio_mode(MIO_GPIO_BT_TXD_MD);
+	pxa_gpio_mode(MIO_GPIO_BT_CTS_MD);
+	pxa_gpio_mode(MIO_GPIO_BT_RTS_MD);
+	pxa_gpio_mode(MIO_GPIO_BT_ON | GPIO_OUT);
+	return 0;
+}
+
+static int mioa701_bt_remove(struct platform_device *pdev)
+{
+	return 0;
+}
+
+static int mioa701_bt_suspend(struct platform_device *dev, pm_message_t state)
+{
+	PGSR1 |= GPIO_bit(MIO_GPIO_BT_RXD_MD) | GPIO_bit(MIO_GPIO_BT_TXD_MD)
+		| GPIO_bit(MIO_GPIO_BT_CTS_MD);
+	PGSR2 |= GPIO_bit(MIO_GPIO_BT_ON);
+	return 0;
+}
+
+static struct platform_driver bt_driver = {
+	.driver = {
+		.name	  = "mioa701-bt",
+	},
+	.probe	  = mioa701_bt_probe,
+	.remove	  = mioa701_bt_remove,
+	.suspend  = mioa701_bt_suspend,
+};
+
+static int __init mioa701_bt_init(void)
+{
+	printk(KERN_NOTICE "mioa701 Bluetooth Driver\n");
+	mioa701_bt_funcs.configure = mioa701_bt_configure;
+	pxa_set_btuart_info(&mioa701_bt_funcs);
+
+	return platform_driver_register( &bt_driver );
+}
+
+static void __exit mioa701_bt_exit(void)
+{
+	pxa_set_btuart_info(NULL);
+	mioa701_bt_funcs.configure = NULL;
+	platform_driver_unregister( &bt_driver );
+}
+
+module_init(mioa701_bt_init);
+module_exit(mioa701_bt_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("mioa701 Bluetooth Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_gps.c b/arch/arm/mach-pxa/mioa701/mioa701_gps.c
new file mode 100644
index 0000000..ff339fa
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_gps.c
@@ -0,0 +1,135 @@
+/* Phone interface driver for GPS SIRF-III
+ *
+ * 2007-12-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <asm/arch/serial.h>
+
+#include "mioa701.h"
+
+#define OUTLO (GPIO_OUT | GPIO_DFLT_LOW)
+#define OUTHI (GPIO_OUT | GPIO_DFLT_HIGH)
+
+extern struct platform_pxa_serial_funcs mioa701_gps_funcs;
+
+void gps_init_gpios()
+{
+	/* configure SIRF.III GPIOS */
+	pxa_gpio_mode(MIO_GPIO_GPS_UNKNOWN1 | OUTHI);
+	pxa_gpio_mode(MIO_GPIO_GPS_UNKNOWN2 | OUTLO);
+	pxa_gpio_mode(MIO_GPIO_GPS_UNKNOWN3 | OUTLO);
+	pxa_gpio_mode(MIO_GPIO_GPS_ON       | OUTLO);
+	pxa_gpio_mode(MIO_GPIO_GPS_RESET    | OUTLO);
+	/* configure gps UART */
+	pxa_gpio_mode(MIO_GPIO_GPS_RXD_MD);
+	pxa_gpio_mode(MIO_GPIO_GPS_TXD_MD);
+}
+
+void gps_on()
+{
+	gpio_set_value(MIO_GPIO_GPS_ON, 1);
+	msleep(200);
+	gpio_set_value(MIO_GPIO_GPS_RESET, 1);
+	printk("MioA701 gps: GPS turned on.\n");
+}
+
+void gps_off()
+{
+	gpio_set_value(MIO_GPIO_GPS_ON, 0);
+	gpio_set_value(MIO_GPIO_GPS_RESET, 0);
+	printk("MioA701 gps: GPS turned off.\n");
+}
+
+void gps_reset()
+{
+	gps_off();
+	gps_on();
+}
+
+static void mioa701_gps_configure(int state)
+{
+	//printk( KERN_NOTICE "mioa701 configure gps: %d\n", state );
+	switch (state) {
+	
+	case PXA_UART_CFG_PRE_STARTUP:
+		break;
+
+	case PXA_UART_CFG_POST_STARTUP:
+		/* pre-serial-up hardware configuration */
+                try_module_get(THIS_MODULE);
+		break;
+
+	case PXA_UART_CFG_PRE_SHUTDOWN:
+		break;
+
+	case PXA_UART_CFG_POST_SHUTDOWN:
+                module_put(THIS_MODULE);
+
+	default:
+		break;
+	}
+}
+
+
+static int mioa701_gps_probe(struct platform_device *dev)
+{
+	gps_init_gpios();
+	gps_on();
+
+	return 0;
+}
+
+static int mioa701_gps_remove(struct platform_device *dev)
+{
+	gps_off();
+
+	return 0;
+}
+
+static int mioa701_gps_suspend(struct platform_device *dev, pm_message_t state)
+{
+	PGSR0 |= GPIO_bit(MIO_GPIO_GPS_UNKNOWN1);
+	PGSR1 |= GPIO_bit(MIO_GPIO_GPS_RXD_MD);
+
+	return 0;
+}
+
+static struct platform_driver gps_driver = {
+	.driver   = {
+		.name     = "mioa701-gps",
+	},
+	.probe    = mioa701_gps_probe,
+	.remove   = mioa701_gps_remove,
+	.suspend  = mioa701_gps_suspend,
+};
+
+static int __init mioa701_gps_init(void)
+{
+	printk(KERN_NOTICE "mioa701 Gps Driver\n");
+	mioa701_gps_funcs.configure = mioa701_gps_configure;
+	pxa_set_stuart_info(&mioa701_gps_funcs);
+	return platform_driver_register( &gps_driver );
+}
+
+static void __exit mioa701_gps_exit(void)
+{
+	pxa_set_stuart_info(NULL);
+	mioa701_gps_funcs.configure = NULL;
+	platform_driver_unregister( &gps_driver );
+}
+
+module_init(mioa701_gps_init);
+module_exit(mioa701_gps_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("MIO A701 GPS Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_leds.c b/arch/arm/mach-pxa/mioa701/mioa701_leds.c
new file mode 100644
index 0000000..2fc5c8a
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_leds.c
@@ -0,0 +1,164 @@
+/* Leds interface driver on MIO A701
+ *
+ * 2008-1-1 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+ 
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/mach-types.h>
+#include "mioa701.h"
+
+
+struct mioa701_leds {
+	int gpio;
+	struct led_classdev led;
+};
+
+#define ledtoml(Led) container_of((Led), struct mioa701_leds, led)
+static void mioa701_led_brightness_set(struct led_classdev *led_cdev, enum led_brightness value);
+#define PGSRn(n) __REG2(0x40F00020, (n<<2))
+
+static void PGSRset(int gpio, int val)
+{
+	int reg;
+	
+	if (gpio >= 96)
+		reg = 3;
+	else if (gpio >= 64)
+		reg = 2;
+	else if (gpio >= 32)
+		reg = 1;
+	else
+		reg = 0;
+		
+	if (val)
+		PGSRn(reg) |= GPIO_bit(gpio);
+	else
+		PGSRn(reg) &= ~GPIO_bit(gpio);
+}
+
+static struct mioa701_leds leds[] = {
+	{
+		.gpio   = MIO_GPIO_LED_nBLUE,
+		.led  = {
+			.name	       = "mioa701:blue",
+			.brightness_set = mioa701_led_brightness_set,
+		}
+	},
+	{
+		.gpio   = MIO_GPIO_LED_nOrange,
+		.led  = {
+			.name	       = "mioa701:orange",
+			.brightness_set = mioa701_led_brightness_set,
+		}
+	},
+	{
+		.gpio   = MIO_GPIO_LED_nVibra,
+		.led  = {
+			.name	       = "mioa701:vibra",
+			.brightness_set = mioa701_led_brightness_set,
+		}
+	},
+	{
+		.gpio   = MIO_GPIO_LED_nKeyboard,
+		.led  = {
+			.name	       = "mioa701:keyboard",
+			.brightness_set = mioa701_led_brightness_set,
+		}
+	},
+};
+
+static void mioa701_led_brightness_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+	struct mioa701_leds *ml = ledtoml(led_cdev);
+	int gpioval = (value == 0);
+
+	gpio_set_value(ml->gpio, gpioval);
+}
+
+static int mioa701_led_probe(struct platform_device *dev)
+{
+	int i,ret=0;
+
+	for (i = 0; i < ARRAY_SIZE(leds); i++) {
+		ret = led_classdev_register(&dev->dev, &leds[i].led);
+		pxa_gpio_mode(leds[i].gpio | GPIO_OUT | GPIO_DFLT_HIGH);
+		leds[i].led.brightness_set(&leds[i].led, LED_OFF);
+
+		if (unlikely(ret)) {
+			printk(KERN_WARNING "Unable to register mioa701_led %s\n", leds[i].led.name);
+		}
+	}
+	return ret;
+}
+
+static int mioa701_led_remove(struct platform_device *dev)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(leds); i++) {
+		leds[i].led.brightness_set(&leds[i].led, LED_OFF);
+		led_classdev_unregister(&leds[i].led);
+	}
+
+	return 0;
+}
+
+static int mioa701_led_suspend(struct platform_device *dev, pm_message_t state)
+{
+	int i;
+	int gpio, val;
+
+	for (i = 0; i < ARRAY_SIZE(leds); i++) {
+		gpio = leds[i].gpio;
+		val = gpio_get_value(gpio);
+		PGSRset(gpio, val);
+		led_classdev_suspend(&leds[i].led);
+	}
+
+	return 0;
+}
+
+static int mioa701_led_resume(struct platform_device *dev)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(leds); i++)
+		led_classdev_resume(&leds[i].led);
+	
+	return 0;
+}
+
+static struct platform_driver mioa701_led_driver = {
+	.driver = {
+		.name   = "mioa701-leds",
+	},
+	.probe  = mioa701_led_probe,
+	.remove = mioa701_led_remove,
+	.suspend = mioa701_led_suspend,
+	.resume = mioa701_led_resume,
+};
+
+static int mioa701_led_init (void)
+{
+        return platform_driver_register(&mioa701_led_driver);
+}
+
+static void mioa701_led_exit (void)
+{
+	platform_driver_unregister(&mioa701_led_driver);
+}
+
+module_init (mioa701_led_init);
+module_exit (mioa701_led_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("mioa701 Led Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_mci.c b/arch/arm/mach-pxa/mioa701/mioa701_mci.c
new file mode 100644
index 0000000..0ae1306
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_mci.c
@@ -0,0 +1,104 @@
+/* PCMCIA SD-Card interface for MIO A701
+ *
+ * 2007-1-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/mmc.h> // MMC_VDD_32_33
+
+#include "mioa701.h"
+
+static struct pxamci_platform_data mioa701_mci_info;
+
+/**
+ * SDIO/MMC Card controller
+ * The card detect interrupt isn't debounced so we delay it by 250ms
+ * to give the card a chance to fully insert/eject.
+ */
+static int mioa701_mci_init(struct device *dev, irq_handler_t detect_int, 
+			    void *data)
+{
+	int err;
+  
+	/*
+	 * setup GPIO
+	 */
+	pxa_gpio_mode(GPIO92_MMCDAT0_MD);
+	pxa_gpio_mode(GPIO109_MMCDAT1_MD);
+	pxa_gpio_mode(GPIO110_MMCDAT2_MD);
+	pxa_gpio_mode(GPIO111_MMCDAT3_MD);
+	pxa_gpio_mode(GPIO112_MMCCMD_MD);
+	pxa_gpio_mode(GPIO32_MMCCLK_MD);
+
+	/* enable RE/FE interrupt on card insertion and removal */
+	GRER0 |= 1 << MIO_GPIO_SDIO_INSERT;
+	GFER0 |= 1 << MIO_GPIO_SDIO_INSERT;
+  
+	err = request_irq(gpio_to_irq(MIO_GPIO_SDIO_INSERT), detect_int,
+			  IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+			  "MMC card detect", data);
+	if (err) {
+		printk(KERN_ERR "mioa701_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
+		return -1;
+	}
+	mioa701_mci_info.detect_delay = msecs_to_jiffies(250);
+
+	return 0;
+}
+
+static void mioa701_mci_setpower(struct device *dev, unsigned int vdd)
+{
+	struct pxamci_platform_data* p_d = dev->platform_data;
+	if ((1 << vdd) & p_d->ocr_mask)
+		gpio_set_value(MIO_GPIO_SDIO_EN, 1);    // enable SDIO slot power
+	else
+		gpio_set_value(MIO_GPIO_SDIO_EN, 0);    // disable SDIO slot power
+}
+
+static int mioa701_mci_get_ro(struct device *dev)
+{
+	return gpio_get_value(MIO_GPIO_SDIO_RO);
+}
+
+static void mioa701_mci_exit(struct device *dev, void *data)
+{
+	free_irq(gpio_to_irq(MIO_GPIO_SDIO_INSERT), data);
+}
+
+static struct pxamci_platform_data mioa701_mci_info = {
+	.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
+	.init     = mioa701_mci_init,
+	.get_ro   = mioa701_mci_get_ro,
+	.setpower = mioa701_mci_setpower,
+	.exit     = mioa701_mci_exit,
+};
+
+static int __init mioa701_mcimod_init(void)
+{
+	/* XXX: does this turns on USB ? */
+	gpio_set_value(MIO_GPIO_USB_EN0, 1);
+	gpio_set_value(MIO_GPIO_USB_EN1, 1);
+
+	pxa_set_mci_info(&mioa701_mci_info);
+	return 0;
+}
+
+static void __exit mioa701_mcimod_exit(void)
+{
+	pxa_set_mci_info(NULL);
+	return;
+}
+
+module_init(mioa701_mcimod_init);
+module_exit(mioa701_mcimod_exit);
+
+/* Module information */
+MODULE_AUTHOR("Robert Jarzmik (rjarzmik@yahoo.fr)");
+MODULE_DESCRIPTION("MMC/SD manager for MIO A701");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_phone.c b/arch/arm/mach-pxa/mioa701/mioa701_phone.c
new file mode 100644
index 0000000..72f9465
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_phone.c
@@ -0,0 +1,207 @@
+/* Phone interface driver for Sagem XS200 on MIO A701
+ *
+ * 2007-12-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <asm/arch/serial.h>
+
+#include "mioa701.h"
+
+#define PWER_GPIO113 (0x2 << 19)
+#define OUTLO (GPIO_OUT | GPIO_DFLT_LOW)
+#define OUTHI (GPIO_OUT | GPIO_DFLT_HIGH)
+
+extern struct platform_pxa_serial_funcs mioa701_phone_funcs;
+
+static int is_phone_on(void)
+{
+	return (gpio_get_value(MIO_GPIO_GSM_MOD_ON_STATE) != 0);
+}
+
+irqreturn_t phone_power_irq(int irq, void* dev_id, struct pt_regs *regs)
+{
+	printk("Mioa701: GSM power changed to %s\n",
+	       is_phone_on() ? "on" : "off");
+	return IRQ_HANDLED;
+}
+
+static void phone_init_gpios(void)
+{
+	/* configure XS200 GPIOS */
+	pxa_gpio_mode(MIO_GPIO_GSM_nMOD_ON_CMD         | OUTHI);
+	pxa_gpio_mode(MIO_GPIO_GSM_nMOD_OFF_CMD        | OUTHI);
+	pxa_gpio_mode(MIO_GPIO_GSM_nMOD_DTE_UART_STATE | OUTHI);
+	pxa_gpio_mode(MIO_GPIO_GSM_MOD_RESET_CMD       | OUTLO);
+
+	pxa_gpio_mode(MIO_GPIO_GSM_EVENT | GPIO_IN);
+}
+
+static void ffuart_init_gpios(void)
+{
+	pxa_gpio_mode(MIO_GPIO_GSM_RXD_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_CTS_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_DCD_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_DSR_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_TXD_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_DTR_MD);
+	pxa_gpio_mode(MIO_GPIO_GSM_RTS_MD);
+}
+
+static void phone_reset(void)
+{
+	phone_init_gpios();
+	msleep(20);
+	gpio_set_value(MIO_GPIO_GSM_MOD_RESET_CMD, 1);
+	msleep(110);
+	gpio_set_value(MIO_GPIO_GSM_MOD_RESET_CMD, 0);
+}
+
+static void phone_off(void)
+{
+	gpio_set_value(MIO_GPIO_GSM_nMOD_DTE_UART_STATE, 0);
+	msleep(110);
+	gpio_set_value(MIO_GPIO_GSM_nMOD_DTE_UART_STATE, 1);
+	gpio_set_value(MIO_GPIO_GSM_nMOD_OFF_CMD, 0);
+	msleep(110);
+	gpio_set_value(MIO_GPIO_GSM_nMOD_OFF_CMD, 1);
+	msleep(110);
+	printk("MioA701 phone: GSM turned off.\n");
+}
+
+static void phone_on(void)
+{
+	int tries;
+
+	phone_reset();
+	msleep(300);
+	gpio_set_value(MIO_GPIO_GSM_nMOD_ON_CMD, 0);
+	msleep(110);
+	gpio_set_value(MIO_GPIO_GSM_nMOD_ON_CMD, 1);
+
+	tries = 0;
+	do {
+		msleep(50);
+	} while ( (FFMSR & MSR_CTS) && (tries++ < 300) );
+	if (tries >= 300) {
+		printk("MioA701 phone: expect garbage at GSM start.\n");
+	} else {
+		printk("MioA701 phone: GSM turned on in %d ms\n", tries*50);
+	}
+}
+
+static void mioa701_phone_configure(int state)
+{
+	switch (state) {
+	
+	case PXA_UART_CFG_PRE_STARTUP:
+		break;
+
+	case PXA_UART_CFG_POST_STARTUP:
+		//phone_on();
+		try_module_get(THIS_MODULE);
+		break;
+
+	case PXA_UART_CFG_PRE_SHUTDOWN:
+		//phone_off();
+		break;
+
+	case PXA_UART_CFG_POST_SHUTDOWN:
+		module_put(THIS_MODULE);
+
+	default:
+		break;
+	}
+}
+
+
+static int mioa701_phone_probe(struct platform_device *dev)
+{
+	int tries = 0;
+
+	phone_init_gpios();
+	ffuart_init_gpios();
+	do {
+		phone_off();
+		phone_on();
+		msleep(200);
+		if (!is_phone_on())
+			msleep(1300);
+	}
+	while ((tries++ < 4) && (!is_phone_on()));
+	printk(KERN_NOTICE "Mioa701 Phone: turned phone on in %d tries\n", tries);
+
+	set_irq_type (gpio_to_irq(MIO_GPIO_GSM_MOD_ON_STATE), IRQT_BOTHEDGE);
+	return request_irq(gpio_to_irq(MIO_GPIO_GSM_MOD_ON_STATE), phone_power_irq,
+			  IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+			  "GSM XS200 Power Irq", NULL);
+}
+
+static int
+mioa701_phone_remove(struct platform_device *dev)
+{
+	phone_off();
+	free_irq(gpio_to_irq(MIO_GPIO_GSM_MOD_ON_STATE), NULL);
+	return 0;
+}
+
+static int mioa701_phone_suspend(struct platform_device *dev, pm_message_t state)
+{
+	PWER  |= PWER_GPIO113;
+	PGSR0 |= GPIO_bit(MIO_GPIO_GSM_MOD_ON_STATE);
+	PGSR1 |= GPIO_bit(MIO_GPIO_GSM_RXD_MD) | GPIO_bit(MIO_GPIO_GSM_DCD_MD)
+		| GPIO_bit(MIO_GPIO_GSM_TXD_MD);
+	PGSR2 |= GPIO_bit(MIO_GPIO_GSM_nMOD_ON_CMD)
+		| GPIO_bit(MIO_GPIO_GSM_nMOD_OFF_CMD);
+	PGSR3 |= GPIO_bit(MIO_GPIO_GSM_EVENT) 
+		| GPIO_bit(MIO_GPIO_GSM_nMOD_DTE_UART_STATE);
+
+	return 0;
+}
+
+static struct platform_driver phone_driver = {
+	.driver	  = {
+		.name	  = "mioa701-phone",
+	},
+	.probe	  = mioa701_phone_probe,
+	.remove	  = mioa701_phone_remove,
+	.suspend  = mioa701_phone_suspend,
+};
+
+static int __init mioa701_phone_init( void )
+{
+	printk(KERN_NOTICE "mioa701 Phone Driver\n");
+	mioa701_phone_funcs.configure = mioa701_phone_configure;
+	pxa_set_ffuart_info(&mioa701_phone_funcs);
+
+	/* If out of windows through Haret, let's do some cleanup */
+	phone_init_gpios();
+	phone_off();
+	phone_reset();
+
+	return platform_driver_register( &phone_driver );
+}
+
+static void __exit mioa701_phone_exit( void )
+{
+	pxa_set_ffuart_info(NULL);
+	mioa701_phone_funcs.configure = NULL;
+	platform_driver_unregister(&phone_driver);
+}
+
+module_init(mioa701_phone_init);
+module_exit(mioa701_phone_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("MIO A701 Phone Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_pm.c b/arch/arm/mach-pxa/mioa701/mioa701_pm.c
new file mode 100644
index 0000000..2c53b9a
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_pm.c
@@ -0,0 +1,34 @@
+/* Power managment interface from MIO A701
+ *
+ * 2007-12-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+
+#include "mioa701.h"
+
+extern int  mioa701_suspend_init(void);
+extern void mioa701_suspend_exit(void);
+extern int  mioa701_battery_init(void);
+extern void mioa701_battery_exit(void);
+
+static int __init mioa701_pm_init(void)
+{
+	return mioa701_suspend_init();
+}
+
+static void __exit mioa701_pm_exit(void)
+{
+	mioa701_suspend_exit();
+        return;
+}
+
+module_init(mioa701_pm_init);
+module_exit(mioa701_pm_exit);
+
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("MIO A701 Power Managment Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_suspend.c b/arch/arm/mach-pxa/mioa701/mioa701_suspend.c
new file mode 100644
index 0000000..96d1b77
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_suspend.c
@@ -0,0 +1,198 @@
+/* Power managment interface from MIO A701
+ *
+ * 2007-1-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ *
+ * MIO A701 reboot sequence is highly ROM dependant. From the one dissassembled,
+ * this sequence is as follows :
+ *   - disables interrupts
+ *   - initialize SDRAM (self refresh RAM into active RAM)
+ *   - initialize GPIOs (depends on value at 0xa020b020)
+ *   - initialize coprossessors
+ *   - if edge detect on PWR_SCL(GPIO3), then proceed to cold start
+ *   - or if value at 0xa020b000 not equal to 0x0f0f0f0f, proceed to cold start
+ *   - else do a resume, ie. jump to addr 0xa0100000
+ */
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxa-pm_ll.h>
+
+#include "mioa701.h"
+
+#define RESUME_ENABLE_ADDR 0xa020b000
+#define RESUME_ENABLE_VAL  0x0f0f0f0f
+#define RESUME_BT_ADDR     0xa020b020
+#define RESUME_VECTOR_ADDR 0xa0100000
+#define BOOTSTRAP_WORDS    mioa701_bootstrap_lg/4
+
+/* Assembler externals mioa701_bootresume.S */
+extern u32 mioa701_bootstrap;
+extern u32 mioa701_jumpaddr;
+extern u32 mioa701_bootstrap_lg;
+
+
+static u32 *save_buffer;
+
+static void install_bootstrap(unsigned long resume_addr)
+{
+	int i;
+	u32 *rom_bootstrap  = phys_to_virt(RESUME_VECTOR_ADDR);
+	u32 *src = &mioa701_bootstrap;
+
+	mioa701_jumpaddr = resume_addr;
+	for (i=0; i < BOOTSTRAP_WORDS; i++)
+		rom_bootstrap[i] = src[i];
+}
+
+
+static void mioa701_pxa_ll_pm_suspend(unsigned long resume_addr)
+{
+	int i = 0;
+	u32 *mem_resume_vector  = phys_to_virt(RESUME_VECTOR_ADDR);
+	u32 *mem_resume_enabler = phys_to_virt(RESUME_ENABLE_ADDR);
+	u32 *mem_resume_bt      = phys_to_virt(RESUME_BT_ADDR);
+
+	for (i=0; i< BOOTSTRAP_WORDS; i++)
+		save_buffer[i] = mem_resume_vector[i];
+	save_buffer[i++] = *mem_resume_enabler;
+	save_buffer[i++] = *mem_resume_bt;
+
+	*mem_resume_enabler = RESUME_ENABLE_VAL;
+	*mem_resume_bt      = 0;
+
+	install_bootstrap(resume_addr);
+}
+
+static void mioa701_pxa_ll_pm_resume(void)
+{
+	int i = 0;
+	u32 *mem_resume_vector  = phys_to_virt(RESUME_VECTOR_ADDR);
+	u32 *mem_resume_enabler = phys_to_virt(RESUME_ENABLE_ADDR);
+	u32 *mem_resume_bt      = phys_to_virt(RESUME_BT_ADDR);
+
+	for (i=0; i<BOOTSTRAP_WORDS; i++)
+		mem_resume_vector[i] = save_buffer[i];
+	*mem_resume_enabler = save_buffer[i++];
+	*mem_resume_bt      = save_buffer[i++];
+
+	OSCC |= OSCC_TOUT_EN | OSCC_OON;
+}
+
+static struct pxa_ll_pm_ops mioa701_ll_pm_ops = {
+	.suspend = mioa701_pxa_ll_pm_suspend,
+	.resume  = mioa701_pxa_ll_pm_resume,
+};
+
+static int mioa701_pm_probe(struct platform_device *dev)
+{
+	return 0;
+}
+
+static int mioa701_pm_remove(struct platform_device *dev)
+{
+	return 0;
+}
+
+static int mioa701_pm_suspend(struct platform_device *dev, pm_message_t state)
+{
+	PWER |=   PWER_GPIO0 
+		| PWER_GPIO1 /* reset */
+		| PWER_RTC;
+	PRER |=   PWER_GPIO0
+		| PWER_GPIO1
+		| PWER_RTC;
+	// haret: PWER = 0x8010e801 (WERTC | WEUSIM | WE15 | WE14 | WE13 | WE11 | WE0
+	// haret: PSSR = 0x00000005
+	// haret: PRER = 0x0000e001 (RE15 | RE14 | RE13 | RE0)
+
+	// PGSR0 = 0x02b0401a; // GPIOs: 1, 3, 4, 14, 20, 21, 23(gps), 25(gsm)
+	/* I2C bus */
+	PGSR0 |= GPIO_bit(3) | GPIO_bit(4);
+	/* Unknown GPIO14, GPIO20, GPIO21 */
+	PGSR0 |= GPIO_bit(14) | GPIO_bit(20) | GPIO_bit(21);
+
+	// PGSR1 = 0x02525c96; // GPIOs: 33, 34(gsm), 36(gsm), 39(gsm), 42(bt),
+	//                               43(bt), 44(bt), 46(gps), 49, 52, 54, 57
+	/* Unknown GPIO33, GPIO49, GPIO57 */
+	PGSR1 |= GPIO_bit(33) | GPIO_bit(49) | GPIO_bit(57);
+
+	// PGSR2 = 0x054d2000; // GPIOs: 77, 80, 82(leds), 83(bt), 86, 88(gsm), 90(gsm)
+	/* Unknown GPIO77, GPIO80, GPIO86 */
+	PGSR2 |= GPIO_bit(77) | GPIO_bit(80) | GPIO_bit(86) ;
+
+	// PGSR3 = 0x007e038c; // GPIOs: 98(leds), 99(sound), 103(key), 104(key)
+	//				105(key), 113(gsm), 114(gsm), 115(led), 
+	//				116, 117(i2c), 118(i2c)
+	/* Keyboard */
+	PGSR3 |= GPIO_bit(103) | GPIO_bit(104) | GPIO_bit(105);
+	/* Power I2C */
+	PGSR3 |= GPIO_bit(117) | GPIO_bit(118);
+	/* Unknown GPIO 116 */
+	PGSR3 |= GPIO_bit(116);
+
+	/*
+	PGSR0 = 0x02b0401a; // GPIOs: 1, 3, 4, 14, 20, 21, 23(gps), 25(gsm)
+	PGSR1 = 0x02525c96; // GPIOs: 33, 34(gsm), 36(gsm), 39(gsm), 42(bt),
+	PGSR2 = 0x054d2000; // GPIOs: 77, 80, 82(leds), 83(bt), 86, 88(gsm), 90(gsm)
+	PGSR3 = 0x007e038c; // GPIOs: 98(leds), 99(sound), 103(key), 104(key)
+	*/
+
+
+	/* 3.6864 MHz oscillator power-down enable */
+	//PCFR  = 0x000004f1; // PCFR_FVC | PCFR_DCEN || PCFR_PI2CEN | PCFR_GPREN | PCFR_OPDE
+	PCFR = PCFR_OPDE | PCFR_PI2CEN | PCFR_GPROD | PCFR_GPR_EN;
+
+	PSLR  = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */
+
+	return 0;
+}
+
+static int mioa701_pm_resume(struct platform_device *dev)
+{
+	return 0;
+}
+
+static struct platform_driver mioa701_pm = {
+        .driver = {
+		.name = "mioa701-pm",
+        },
+	.probe   = mioa701_pm_probe,
+	.remove  = mioa701_pm_remove,
+	.suspend = mioa701_pm_suspend,
+	.resume  = mioa701_pm_resume,
+};
+
+static void init_registers(void)
+{
+	PWER = 0;
+	PFER = 0;
+	PRER = 0;
+	PGSR0 = 0;
+	PGSR1 = 0;
+	PGSR2 = 0;
+	PGSR3 = 0;
+}
+
+int mioa701_suspend_init(void)
+{
+	save_buffer = kmalloc(mioa701_bootstrap_lg+2*sizeof(u32), GFP_KERNEL);
+	if (!save_buffer)
+		return -ENOMEM;
+	pxa_pm_set_ll_ops(&mioa701_ll_pm_ops);
+	init_registers();
+        return platform_driver_register(&mioa701_pm);
+}
+
+void mioa701_suspend_exit(void)
+{
+	platform_driver_unregister(&mioa701_pm);
+	if (save_buffer)
+		kfree(save_buffer);
+	printk(KERN_CRIT "Unregistering mioa701 suspend will hang next"
+	       "resume !!!\n");
+}
diff --git a/arch/arm/mach-pxa/mioa701/mioa701_udc.c b/arch/arm/mach-pxa/mioa701/mioa701_udc.c
new file mode 100644
index 0000000..65a9708
--- /dev/null
+++ b/arch/arm/mach-pxa/mioa701/mioa701_udc.c
@@ -0,0 +1,90 @@
+/* USB UDC interface enabler from MIO A701
+ *
+ * 2007-1-12 Robert Jarzmik
+ *
+ * This code is licenced under the GPLv2.
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/udc.h>
+#include <asm/gpio.h>
+
+#include "mioa701.h"
+
+static void mioa701_udc_command(int cmd)
+{
+	switch (cmd) {
+	case PXA2XX_UDC_CMD_DISCONNECT:
+		printk("UDC disconnected.\n");
+		break;
+	case PXA2XX_UDC_CMD_CONNECT:
+		printk("UDC connect.\n");
+		break;
+	default:
+		printk("udc_control: unknown command (0x%x)!\n", cmd);
+		break;
+	}
+}
+
+static int mioa701_udc_is_connected(void)
+{
+	return gpio_get_value(MIO_GPIO_USB_DETECT) == 0;
+}
+
+static struct pxa2xx_udc_mach_info mioa701_udc_info __initdata = {
+	.udc_is_connected = mioa701_udc_is_connected,
+	.udc_command      = mioa701_udc_command,
+};
+
+static struct pxa2xx_udc_mach_info empty_udc_info __initdata;
+
+static int mioa701_udc_probe(struct platform_device * dev)
+{
+	pxa_set_udc_info(&mioa701_udc_info);
+	return 0;
+}
+
+static int mioa701_udc_remove(struct platform_device * dev)
+{
+	pxa_set_udc_info(&empty_udc_info);
+	return 0;
+}
+
+static int mioa701_udc_suspend(struct platform_device *dev, pm_message_t state)
+{
+	PWER |= GPIO_bit(MIO_GPIO_USB_DETECT);
+	PFER |= GPIO_bit(MIO_GPIO_USB_DETECT);
+	PRER |= GPIO_bit(MIO_GPIO_USB_DETECT);
+	return 0;
+}
+
+static struct platform_driver mioa701_udc_driver = {
+	.driver	  = {
+		.name     = "mioa701_udc",
+	},
+	.probe    = mioa701_udc_probe,
+	.remove   = mioa701_udc_remove,
+	.suspend  = mioa701_udc_suspend,
+};
+
+static int __init mioa701_udc_init(void)
+{
+	return platform_driver_register(&mioa701_udc_driver);
+}
+
+static void __exit mioa701_udc_exit( void )
+{
+        platform_driver_unregister(&mioa701_udc_driver);
+        return;
+}
+
+
+module_init(mioa701_udc_init);
+module_exit(mioa701_udc_exit);
+MODULE_AUTHOR("Robert Jarzmik");
+MODULE_DESCRIPTION("MIO A701 UDC Support Driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/pxa27x_gpio.c b/arch/arm/mach-pxa/pxa27x_gpio.c
new file mode 100644
index 0000000..846dbca
--- /dev/null
+++ b/arch/arm/mach-pxa/pxa27x_gpio.c
@@ -0,0 +1,609 @@
+/*
+ * linux/kernel/gpio.c
+ *
+ * (C) 2004 Robert Schwebel, Pengutronix
+ *
+ * modified by Benedikt Spranger, Pengutronix
+ * modified by Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>, Pengutronix
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/device.h>
+#include <linux/sysdev.h>
+#include <linux/timer.h>
+#include <linux/proc_fs.h>
+#include <asm/arch/gpio.h>
+#include <asm/hardware.h>
+#include <linux/parser.h>
+
+#define DRIVER_NAME "gpio"
+
+#define GPIO_USER (1<<0)
+#define GPIO_OUTPUT (1<<1)
+
+static char __initdata mapping[255] = "";
+
+MODULE_AUTHOR("John Lenz, Robert Schwebel");
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("Generic GPIO Infrastructure");
+module_param_string(mapping, mapping, sizeof(mapping), 0);
+MODULE_PARM_DESC(mapping,
+                 "period delimited options string to map GPIO pins to userland:\n"
+                 "\n"
+                 " <pin>:[out|in][hi|lo]\n"
+                 "\n"
+                 " example: gpio.mapping=5:out:hi.8:in\n"
+        );
+
+static ssize_t gpio_show_level(struct class_device *dev, char *buf);
+static ssize_t gpio_store_level(struct class_device *dev, const char *buf, size_t size);
+static ssize_t gpio_show_policy(struct class_device *dev, char *buf);
+
+struct gpio_properties {
+        unsigned int pin_nr;
+        unsigned char policy; /* GPIO_xxx */
+        char pin_level; /* -1=tristate, 0, 1 */
+        char owner[20];
+        struct gpio_device *gpio_dev;
+};
+
+struct gpio_device {
+        spinlock_t lock; /* protects the props field */
+        struct gpio_properties props;
+        struct class_device class_dev;
+        struct list_head list;
+};
+#define to_gpio_device(d) container_of(d, struct gpio_device, class_dev)
+
+static LIST_HEAD(gpio_list);
+static rwlock_t gpio_list_lock = RW_LOCK_UNLOCKED;
+
+/* gpio_device is static, so we don't have to free it here */
+static void gpio_class_release(struct class_device *dev)
+{
+        return;
+}
+
+static struct class gpio_class = {
+        .name = "gpio",
+        .release = gpio_class_release,
+};
+
+
+/*
+ * Attribute: /sys/class/gpio/gpioX/level
+ */
+static struct class_device_attribute attr_gpio_level = {
+        .attr = { .name = "level", .mode = 0644, .owner = THIS_MODULE },
+        .show = gpio_show_level,
+        .store = gpio_store_level,
+};
+
+/**
+ * gpio_show_level - shows the current level of an input GPIO pin
+ * or the current setting of an output pin
+ * @dev:
+ * @buf:
+ *
+ * Called when a read from /sys/class/gpio/gpioX/level occures
+ * FIXME: size of @buf?
+ */
+static ssize_t gpio_show_level(struct class_device *dev, char *buf)
+{
+        struct gpio_device *gpio_dev = to_gpio_device(dev);
+        ssize_t ret_size = 0;
+
+        spin_lock(&gpio_dev->lock);
+        //RJK if (!(gpio_dev->props.policy & GPIO_OUTPUT))
+        gpio_dev->props.pin_level = (gpio_get_value(gpio_dev->props.pin_nr) > 0);
+
+        ret_size += sprintf(buf, "%i\n", gpio_dev->props.pin_level);
+        spin_unlock(&gpio_dev->lock);
+
+        printk("RJK: gets GPIO %d to value %d\n", gpio_dev->props.pin_nr, gpio_dev->props.pin_level);
+        return ret_size;
+}
+
+/**
+ * gpio_store_level - sets a new level for an output GPIO pin
+ * @dev:
+ * @buf:
+ * @size:
+ *
+ * Called when a write to /sys/class/gpio/gpioX/level occures
+ */
+static ssize_t gpio_store_level(struct class_device *dev, const char *buf, size_t size)
+{
+        struct gpio_device *gpio_dev = to_gpio_device(dev);
+        long value;
+
+        spin_lock(&gpio_dev->lock);
+        if (!(gpio_dev->props.policy & GPIO_OUTPUT)) {
+                spin_unlock(&gpio_dev->lock);
+                return -EINVAL;
+        }
+
+        value = simple_strtol(buf, NULL, 10);
+
+        if (value)
+                value = 1;
+        gpio_dev->props.pin_level = value;
+
+        /* set real hardware */
+        switch (value) {
+        case 0: gpio_set_value(gpio_dev->props.pin_nr, 0);
+                break;
+        case 1: gpio_set_value(gpio_dev->props.pin_nr, 1);
+                break;
+        default: break;
+        }
+        spin_unlock(&gpio_dev->lock);
+        printk("RJK: sets GPIO %d to value %d\n", gpio_dev->props.pin_nr, (int)value);
+        return size;
+}
+
+/*
+ * Attribute: /sys/class/gpio/gpioX/policy
+ */
+static struct class_device_attribute attr_gpio_policy = {
+        .attr = { .name = "policy", .mode = 0444, .owner = THIS_MODULE },
+        .show = gpio_show_policy,
+        .store = NULL,
+};
+
+/**
+ * gpio_show_policy - shows the current policy
+ * @dev:
+ * @buf: to write the answer in
+ *
+ * Called when a read from /sys/class/gpio/gpioX/policy occures
+ * FIXME: size of @buf?
+ */
+static ssize_t gpio_show_policy(struct class_device *dev, char *buf)
+{
+        struct gpio_device *gpio_dev = to_gpio_device(dev);
+        ssize_t ret_size = 0;
+
+        spin_lock(&gpio_dev->lock);
+        if (gpio_dev->props.policy & GPIO_USER)
+                ret_size += sprintf(buf,"userspace\n");
+        else
+                ret_size += sprintf(buf,"kernel\n");
+        spin_unlock(&gpio_dev->lock);
+
+        return ret_size;
+}
+
+/**
+ * gpio_read_proc - gets called when you read from /proc/gpio ;-)
+ * @page:
+ * @start:
+ * @off:
+ * @count:
+ * @eof:
+ * @data:
+ */
+static int gpio_read_proc(char *page, char **start, off_t off,
+                          int count, int *eof, void *data)
+{
+        char *p = page;
+        int size = 0;
+        struct gpio_device *gpio_dev;
+        struct list_head *lact, *ltmp;
+
+        if (off != 0)
+                goto end;
+
+        p += sprintf(p, "GPIO POLICY DIRECTION OWNER\n");
+        read_lock(&gpio_list_lock);
+        list_for_each_safe(lact, ltmp, &gpio_list) {
+                gpio_dev = list_entry(lact, struct gpio_device, list);
+                spin_lock(&gpio_dev->lock);
+                p += sprintf(p, "%3i: ", gpio_dev->props.pin_nr);
+
+                if (gpio_dev->props.policy & GPIO_USER)
+                        p += sprintf(p, "user space ");
+                else
+                        p += sprintf(p, "kernel ");
+
+                if (gpio_dev->props.policy & GPIO_OUTPUT)
+                        p += sprintf(p, "output ");
+                else
+                        p += sprintf(p, "input ");
+
+                p += sprintf(p, "%s\n", gpio_dev->props.owner);
+                spin_unlock(&gpio_dev->lock);
+        }
+        read_unlock(&gpio_list_lock);
+end:
+        size = (p - page);
+        if (size <= off + count)
+                *eof = 1;
+        *start = page + off;
+        size -= off;
+        if (size > count)
+                size = count;
+        if (size < 0)
+                size = 0;
+
+        return size;
+}
+
+/**
+ * request_gpio - register a new object of gpio_device class.
+ *
+ * @pin_nr: GPIO pin which is registered
+ * @owner: name of the driver that owns this pin
+ * @policy: set policy for this pin, which is one of these:
+ * - GPIO_USER or GPIO_KERNEL
+ * - GPIO_INPUT or GPIO_OUTPUT
+ * For user space registered pins a sysfs entry is added.
+ * @init_level: initially configured pin level
+ */
+int request_gpio(unsigned int pin_nr, const char *owner,
+                 unsigned char policy, unsigned char init_level)
+{
+        int rc;
+        struct gpio_device *gpio_dev;
+        struct list_head *lact, *ltmp;
+
+        write_lock(&gpio_list_lock);
+        list_for_each_safe(lact, ltmp, &gpio_list) {
+                gpio_dev = list_entry(lact, struct gpio_device, list);
+                if (pin_nr == gpio_dev->props.pin_nr) {
+                        printk(KERN_ERR "gpio pin %i is already used by %s\n",
+                               pin_nr, gpio_dev->props.owner);
+                        write_unlock(&gpio_list_lock);
+                        return -EBUSY;
+                }
+        }
+
+        gpio_dev = kmalloc(sizeof(struct gpio_device), GFP_KERNEL);
+
+        if (unlikely(!gpio_dev)) {
+                printk(KERN_ERR "%s: couldn't allocate memory\n", DRIVER_NAME);
+                write_unlock(&gpio_list_lock);
+                return -ENOMEM;
+        }
+
+        gpio_dev->props.pin_nr = pin_nr;
+        INIT_LIST_HEAD(&gpio_dev->list);
+        list_add_tail(&gpio_dev->list, &gpio_list);
+        write_unlock(&gpio_list_lock);
+
+        spin_lock_init(&gpio_dev->lock);
+        gpio_dev->props.policy = policy;
+        gpio_dev->props.pin_level = init_level;
+        gpio_dev->props.gpio_dev = gpio_dev;
+
+        strncpy(gpio_dev->props.owner, owner, 20);
+
+        memset(&gpio_dev->class_dev, 0, sizeof(gpio_dev->class_dev));
+        gpio_dev->class_dev.class = &gpio_class;
+        snprintf(gpio_dev->class_dev.class_id, BUS_ID_SIZE, "gpio%i", pin_nr);
+
+        rc = class_device_register(&gpio_dev->class_dev);
+        if (unlikely(rc)) {
+                printk(KERN_ERR "%s: class registering failed\n", DRIVER_NAME);
+                kfree(gpio_dev);
+                return rc;
+        }
+
+        /* register the attributes */
+        if (policy & GPIO_USER)
+                class_device_create_file(&gpio_dev->class_dev,&attr_gpio_level);
+
+        class_device_create_file(&gpio_dev->class_dev, &attr_gpio_policy);
+
+        /* set real hardware */
+        spin_lock(&gpio_dev->lock);
+        pxa_gpio_mode(pin_nr);
+        if (policy & GPIO_OUTPUT) {
+                switch (init_level) {
+                case 0: gpio_set_value(gpio_dev->props.pin_nr, 0); break;
+                case 1: gpio_set_value(gpio_dev->props.pin_nr, 1); break;
+                default: break;
+                }
+                gpio_direction_output(pin_nr, GPIO_DFLT_HIGH);
+        }
+        spin_unlock(&gpio_dev->lock);
+
+        ret