diff --git a/.gitignore b/.gitignore
index b93fb7e..d26f8af 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,3 +74,5 @@ GTAGS
 *.orig
 *~
 \#*#
+
+include/asm-arm
diff --git a/arch/arm/configs/scb9320_defconfig b/arch/arm/configs/scb9320_defconfig
new file mode 100644
index 0000000..3c9e857
--- /dev/null
+++ b/arch/arm/configs/scb9320_defconfig
@@ -0,0 +1,1147 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31
+# Wed Feb  3 21:36:24 2010
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+# CONFIG_CLASSIC_RCU is not set
+# CONFIG_TREE_RCU is not set
+CONFIG_PREEMPT_RCU=y
+# CONFIG_RCU_TRACE is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+# CONFIG_BUG is not set
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+
+#
+# Performance Counters
+#
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_FREEZER is not set
+
+#
+# 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_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+CONFIG_ARCH_MXC=y
+# CONFIG_ARCH_STMP3XXX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Freescale MXC Implementations
+#
+CONFIG_ARCH_MX1=y
+# CONFIG_ARCH_MX2 is not set
+# CONFIG_ARCH_MX3 is not set
+
+#
+# MX1 platforms:
+#
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_MACH_SCB9328 is not set
+CONFIG_MACH_SCB9320=y
+CONFIG_MACH_SCB9320_DM9000=y
+CONFIG_MACH_SCB9320_MMC=y
+CONFIG_MACH_SCB9320_NAND=y
+CONFIG_MACH_SCB9320_EVB9328PRO=m
+CONFIG_MACH_SCB9320_EVB9328LITE=m
+CONFIG_MACH_SCB9320_CAN2WEBPRO=m
+CONFIG_MACH_SCB9320_CAN2WEBADVANCED=m
+
+#
+# board specific devices
+#
+CONFIG_MACH_SCB9320_IO_CHARDEV=m
+# CONFIG_MXC_IRQ_PRIOR is not set
+# CONFIG_MXC_PWM is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_HIGHMEM 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_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE 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_LRO 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_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA 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
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+# CONFIG_LIB80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
+CONFIG_MAC80211_DEFAULT_PS_VALUE=0
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+# CONFIG_STANDALONE is not set
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_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
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_SCB9XXX=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+# CONFIG_BLK_DEV is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+CONFIG_DM9000_DEBUGLEVEL=4
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# 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 is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE is not set
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_IMX=m
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+# CONFIG_SPI is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_AB3100_CORE is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_SOUND is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+CONFIG_USB_ISP116X_HCD=m
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL 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_SEVSEG 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_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
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
+CONFIG_USB_GADGET_IMX=y
+CONFIG_USB_IMX=m
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+# CONFIG_USB_AUDIO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_USB_G_PRINTER=m
+CONFIG_USB_CDC_COMPOSITE=m
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_NOP_USB_XCEIV is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+# CONFIG_MMC_BLOCK is not set
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+CONFIG_MMC_IMX=y
+# CONFIG_MMC_MXC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+# CONFIG_DNOTIFY is not set
+# CONFIG_INOTIFY is not set
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# 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_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=y
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+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
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
diff --git a/arch/arm/configs/scb9520_defconfig b/arch/arm/configs/scb9520_defconfig
new file mode 100644
index 0000000..45236d4
--- /dev/null
+++ b/arch/arm/configs/scb9520_defconfig
@@ -0,0 +1,1160 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31
+# Mon Feb  1 17:12:30 2010
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# 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_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+
+#
+# Performance Counters
+#
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_FREEZER=y
+
+#
+# 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_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_STMP3XXX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx/PXA3xx Implementations
+#
+# CONFIG_ARCH_GUMSTIX is not set
+# CONFIG_MACH_INTELMOTE2 is not set
+# CONFIG_MACH_STARGATE2 is not set
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_MACH_MP900C is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_ARCH_VIPER is not set
+# CONFIG_ARCH_PXA_ESERIES is not set
+# CONFIG_TRIZEPS_PXA is not set
+# CONFIG_MACH_H5000 is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_EXEDA is not set
+# CONFIG_MACH_COLIBRI is not set
+# CONFIG_MACH_COLIBRI300 is not set
+# CONFIG_MACH_COLIBRI320 is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_LITTLETON is not set
+# CONFIG_MACH_TAVOREVB is not set
+# CONFIG_MACH_SAAR is not set
+# CONFIG_MACH_ARMCORE is not set
+# CONFIG_MACH_CM_X300 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_MACH_MIOA701 is not set
+# CONFIG_MACH_PCM027 is not set
+# CONFIG_ARCH_PXA_PALM is not set
+# CONFIG_MACH_CSB726 is not set
+# CONFIG_PXA_EZX is not set
+CONFIG_MACH_SCB9520=y
+CONFIG_PXA27x=y
+
+#
+# board specific devices
+#
+CONFIG_SCB9520_128MB=y
+# CONFIG_SCB9520_64MB is not set
+CONFIG_MACH_SCB9520_IO_CHARDEV=y
+CONFIG_PLAT_PXA=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_PABRT_NOIFAR=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 is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+CONFIG_COMMON_CLKDEV=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0x40000000
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_HIGHMEM 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_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+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 is not set
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_APM_EMULATION=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE 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_LRO 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_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA 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
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_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
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_PXA2XX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IMPA7 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_H1900 is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_SCB9XXX=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+# CONFIG_BLK_DEV is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+CONFIG_DM9000_DEBUGLEVEL=0
+CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# 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 is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+# CONFIG_SPI is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_AB3100_CORE is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_SOUND is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_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
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+# CONFIG_USB_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL 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_SEVSEG 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_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
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# 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
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_SA1100 is not set
+CONFIG_RTC_DRV_PXA=y
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+# CONFIG_DNOTIFY is not set
+# CONFIG_INOTIFY is not set
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# 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_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# 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=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_PAGE_POISONING is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
diff --git a/arch/arm/mach-mx1/Kconfig b/arch/arm/mach-mx1/Kconfig
index eb7660f..dc7028c 100644
--- a/arch/arm/mach-mx1/Kconfig
+++ b/arch/arm/mach-mx1/Kconfig
@@ -16,4 +16,46 @@ config MACH_SCB9328
 	help
 	  Say Y here if you are using a Synertronixx scb9328 board
 
+config MACH_SCB9320
+	bool "synertronixx scb9320 platform"
+	help
+	  Say Y here if you are using the synertronixx scb9320 board
+
+config MACH_SCB9320_DM9000
+	bool "scb9320 dm9000 setup"
+	depends on MACH_SCB9320
+
+config MACH_SCB9320_MMC
+	bool "scb9320 mmc setup"
+	depends on MACH_SCB9320
+
+config MACH_SCB9320_NAND
+	bool "scb9320 nand flash setup"
+	depends on MACH_SCB9320
+
+choice
+	prompt "i.MX CPU Boards Platform"
+	depends on MACH_SCB9320
+
+config MACH_SCB9320_EVB9328PRO
+	tristate "evb9328pro"
+
+config MACH_SCB9320_EVB9328LITE
+	tristate "evb9328lite"
+
+config MACH_SCB9320_CAN2WEBPRO
+	tristate "can2webpro"
+
+config MACH_SCB9320_CAN2WEBADVANCED
+	tristate "can2webadvanced"
+
+endchoice
+
+comment "board specific devices"
+	depends on MACH_SCB9320
+
+config MACH_SCB9320_IO_CHARDEV
+	tristate "scb9320 io device interface"
+	depends on MACH_SCB9320
+
 endif
diff --git a/arch/arm/mach-mx1/Makefile b/arch/arm/mach-mx1/Makefile
index 7f86fe0..77cda93 100644
--- a/arch/arm/mach-mx1/Makefile
+++ b/arch/arm/mach-mx1/Makefile
@@ -11,4 +11,14 @@ obj-$(CONFIG_MX1_VIDEO)	+= ksym_mx1.o mx1_camera_fiq.o
 
 # Specific board support
 obj-$(CONFIG_ARCH_MX1ADS) += mx1ads.o
-obj-$(CONFIG_MACH_SCB9328) += scb9328.o
\ No newline at end of file
+obj-$(CONFIG_MACH_SCB9328) += scb9328.o
+obj-$(CONFIG_MACH_SCB9320) += scb9320.o
+
+# Specific scb9320 base board support
+obj-$(CONFIG_MACH_SCB9320_EVB9328PRO)      += scb9320-evb9328pro.o
+obj-$(CONFIG_MACH_SCB9320_EVB9328LITE)     += scb9320-evb9328lite.o
+obj-$(CONFIG_MACH_SCB9320_CAN2WEBPRO)      += scb9320-can2webpro.o
+obj-$(CONFIG_MACH_SCB9320_CAN2WEBADVANCED) += scb9320-can2webadvanced.o
+
+# Support for scb9320 io character device
+obj-$(CONFIG_MACH_SCB9320_IO_CHARDEV) += scb9320-io-dev.o
diff --git a/arch/arm/mach-mx1/clock.c b/arch/arm/mach-mx1/clock.c
index 0d0f306..18a6520 100644
--- a/arch/arm/mach-mx1/clock.c
+++ b/arch/arm/mach-mx1/clock.c
@@ -262,6 +262,8 @@ static int clk48m_set_rate(struct clk *clk, unsigned long rate)
 	unsigned int reg;
 	unsigned long parent_rate;
 
+	return 0;
+
 	parent_rate = clk_get_rate(clk->parent);
 
 	div = parent_rate / rate;
diff --git a/arch/arm/mach-mx1/devices.c b/arch/arm/mach-mx1/devices.c
index 76d1ffb..6e47ba6 100644
--- a/arch/arm/mach-mx1/devices.c
+++ b/arch/arm/mach-mx1/devices.c
@@ -26,6 +26,8 @@
 #include <mach/irqs.h>
 #include <mach/hardware.h>
 
+#if 0
+
 #include "devices.h"
 
 static struct resource imx_csi_resources[] = {
@@ -228,6 +230,7 @@ struct platform_device imx_usb_device = {
 	.num_resources	= ARRAY_SIZE(imx_usb_resources),
 	.resource	= imx_usb_resources,
 };
+#endif
 
 /* GPIO port description */
 static struct mxc_gpio_port imx_gpio_ports[] = {
diff --git a/arch/arm/mach-mx1/scb9320-can2webadvanced.c b/arch/arm/mach-mx1/scb9320-can2webadvanced.c
new file mode 100644
index 0000000..dba5c40
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320-can2webadvanced.c
@@ -0,0 +1,137 @@
+/*
+ * linux/arch/arm/mach-imx/scb9320-can2webadvanced.c
+ *
+ * Copyright (c) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/serial_8250.h>
+#include <mach/hardware.h>
+#include <mach/scb9320.h>
+#include <mach/gpio.h>
+
+static struct plat_serial8250_port uart16c550_platform_data[] = {
+	[0] = {
+		.mapbase = (unsigned long) (SCB9320_CAN2WEBADV_UART1_PHYS),
+		.irq = SCB9320_CAN2WEBADV_UART_IRQ,
+		.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+		.iotype = UPIO_MEM,
+		.regshift = 0,
+		.uartclk = SCB9320_CAN2WEBADV_UART_CLK,
+	}, {},
+};
+
+static struct platform_device uart16c550_device = {
+	.name = "serial8250",
+	.id = 0,
+};
+
+static void sja1000_seton(int x)
+{
+	DR(1) &= ~(x << 21);
+}
+
+static void sja1000_setoff(int x)
+{
+	DR(1) |= (x << 21);
+}
+
+static struct sja1000_platform_data sja1000_pdata = {
+	.seton  = sja1000_seton,
+	.setoff = sja1000_setoff,
+};
+
+static struct resource sja1000_resources[] = {
+	{
+		.start  = CAN2WEBADV_SJA1000_PHYS,
+		.end    = CAN2WEBADV_SJA1000_PHYS + 0x7,
+		.flags  = IORESOURCE_MEM,
+	},
+	{
+		.start  = CAN2WEBADV_SJA1000_IRQ,
+		.end    = CAN2WEBADV_SJA1000_IRQ,
+		.flags  = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
+	},
+};
+
+static struct platform_device sja1000_device = {
+	.name           = "sja1000",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(sja1000_resources),
+	.resource       = sja1000_resources,
+};
+
+static int sja1000_pins[] = {
+	PA02_CAN2WEBADV_IRQ,
+	PB21_CAN2WEBADV_FASTMD,
+	PB22_CAN2WEBADV_120OHM
+};
+
+static void sja1000_init(void)
+{
+	CS3_UPPER = CS3_UPPERVAL_CAN2WEBADV;
+	CS3_LOWER = CS3_LOWERVAL_CAN2WEBADV;
+
+	printk(KERN_ERR "chipselect 3 upper value: 0x%08x\n", CS3_UPPER);
+	printk(KERN_ERR "chipselect 3 lower value: 0x%08x\n", CS3_LOWER);
+
+	scb9320_setup_gpios(sja1000_pins, "SJA1000");
+}
+
+static void uart16c550_init(void)
+{
+	struct plat_serial8250_port *pdata;
+
+	pdata = scb9320_uart16c550.pdata;
+
+	pdata->membase = ioremap(SCB9320_CAN2WEBADV_UART1_PHYS, 1);
+	set_irq_type(pdata->irq, IRQF_TRIGGER_FALLING);
+
+	CS1_UPPER = CS1_UPPERVAL_CAN2WEBADV;
+	CS1_LOWER = CS1_LOWERVAL_CAN2WEBADV;
+
+	printk(KERN_ERR "chipselect 1 upper value: 0x%08x\n", CS1_UPPER);
+	printk(KERN_ERR "chipselect 1 lower value: 0x%08x\n", CS1_LOWER);
+}
+
+static struct scb9320_dev *scb9320_devices[] = {
+	&scb9320_sja1000,
+	&scb9320_uart16c550,
+};
+
+static int __init scb9320_board_init(void)
+{
+	printk(KERN_ERR "scb9320-can2webadvanced board\n");
+
+	scb9320_sja1000.pdev     = &sja1000_device;
+	scb9320_sja1000.init     = sja1000_init;
+	scb9320_sja1000.pdata    = &sja1000_pdata;
+	scb9320_uart16c550.pdev  = &uart16c550_device;
+	scb9320_uart16c550.init  = uart16c550_init;
+	scb9320_uart16c550.pdata = uart16c550_platform_data;
+
+	scb9320_add_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+
+	return 0;
+}
+
+static void __exit scb9320_board_exit(void)
+{
+	scb9320_del_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+}
+
+module_init(scb9320_board_init);
+module_exit(scb9320_board_exit);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("can2webadvanced board setup");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-mx1/scb9320-can2webpro.c b/arch/arm/mach-mx1/scb9320-can2webpro.c
new file mode 100644
index 0000000..6d396d6
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320-can2webpro.c
@@ -0,0 +1,104 @@
+/*
+ * linux/arch/arm/mach-imx/scb9320-can2webpro.c
+ *
+ * Copyright (c) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include <mach/hardware.h>
+#include <mach/scb9320.h>
+#include <mach/gpio.h>
+
+static void sja1000_seton(int x)
+{
+	DR(1) &= ~(x << 21);
+}
+
+static void sja1000_setoff(int x)
+{
+	DR(1) |= (x << 21);
+}
+
+static struct sja1000_platform_data sja1000_pdata = {
+	.seton  = sja1000_seton,
+	.setoff = sja1000_setoff,
+};
+
+static struct resource sja1000_resources[] = {
+	{
+		.start  = CAN2WEBPRO_SJA1000_PHYS,
+		.end    = CAN2WEBPRO_SJA1000_PHYS + 0x7,
+		.flags  = IORESOURCE_MEM,
+	},
+	{
+		.start  = CAN2WEBPRO_SJA1000_IRQ,
+		.end    = CAN2WEBPRO_SJA1000_IRQ,
+		.flags  = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
+	},
+};
+
+static struct platform_device sja1000_device = {
+	.name           = "sja1000",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(sja1000_resources),
+	.resource       = sja1000_resources,
+};
+
+static int sja1000_pins[] = {
+	PA02_CAN2WEBPRO_IRQ,
+	PB21_CAN2WEBPRO_FASTMD,
+	PB22_CAN2WEBPRO_120OHM,
+	PB23_CAN2WEBPRO_LED0,
+	PB24_CAN2WEBPRO_LED1,
+	PB25_CAN2WEBPRO_LED2,
+	PB26_CAN2WEBPRO_LED3
+};
+
+static void sja1000_init(void)
+{
+	CS3_UPPER = CS3_UPPERVAL_CAN2WEBPRO;
+	CS3_LOWER = CS3_LOWERVAL_CAN2WEBPRO;
+
+	printk(KERN_ERR "chipselect 3 upper value: 0x%08x\n", CS3_UPPER);
+	printk(KERN_ERR "chipselect 3 lower value: 0x%08x\n", CS3_LOWER);
+
+	scb9320_setup_gpios(sja1000_pins, "SJA1000");
+}
+
+static struct scb9320_dev *scb9320_devices[] = {
+	&scb9320_sja1000,
+	&scb9320_isp116x,
+};
+
+static int __init scb9320_can2webpro_init(void)
+{
+	printk(KERN_ERR "scb9320-can2webpro board\n");
+
+	scb9320_sja1000.pdev  = &sja1000_device;
+	scb9320_sja1000.init  = sja1000_init;
+	scb9320_sja1000.pdata = &sja1000_pdata;
+
+	scb9320_add_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+
+	return 0;
+}
+
+static void __exit scb9320_can2webpro_exit(void)
+{
+	scb9320_del_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+}
+
+module_init(scb9320_can2webpro_init);
+module_exit(scb9320_can2webpro_exit);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("can2webpro board setup");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-mx1/scb9320-evb9328lite.c b/arch/arm/mach-mx1/scb9320-evb9328lite.c
new file mode 100644
index 0000000..0a95917
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320-evb9328lite.c
@@ -0,0 +1,101 @@
+/*
+ * linux/arch/arm/mach-imx/scb9320-evb9328lite.c
+ *
+ * Copyright (c) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <mach/hardware.h>
+#include <mach/scb9320.h>
+#include <mach/gpio.h>
+
+static void io_seton(int x)
+{
+	DR(1) |= (x << 21);
+}
+
+static void io_setoff(int x)
+{
+	DR(1) &= ~(x << 21);
+}
+
+static int io_get(void)
+{
+	u8 buttons = 0;
+
+	buttons = (SSR(1) >> 25) & 0x7;
+	buttons |= ((SSR(0) >> 15) & 1) << 3;
+	buttons = (buttons & 0xf) | 0xf0;
+
+	return buttons;
+}
+
+static struct scb9320_io_platform_data io_pdata = {
+	.seton  = io_seton,
+	.setoff = io_setoff,
+	.get    = io_get,
+};
+
+static struct platform_device io_device = {
+	.name           = "scb9320-io",
+	.id             = 0,
+};
+
+static int io_pins[] = {
+	(21 | GPIO_OUT | GPIO_GPIO | GPIO_PORTB),
+	(22 | GPIO_OUT | GPIO_GPIO | GPIO_PORTB),
+	(23 | GPIO_OUT | GPIO_GPIO | GPIO_PORTB),
+	(24 | GPIO_OUT | GPIO_GPIO | GPIO_PORTB),
+	(25 | GPIO_IN  | GPIO_GPIO | GPIO_PORTB),
+	(26 | GPIO_IN  | GPIO_GPIO | GPIO_PORTB),
+	(27 | GPIO_IN  | GPIO_GPIO | GPIO_PORTB),
+	(15 | GPIO_IN  | GPIO_GPIO | GPIO_PORTA),
+};
+
+static void io_init(void)
+{
+	struct scb9320_io_platform_data *pdata;
+
+	pdata = scb9320_io.pdata;
+	scb9320_io.pdev->dev.platform_data = scb9320_io.pdata;
+
+	scb9320_setup_gpios(io_pins, "IO");
+
+	pdata->setoff(0xf);
+}
+
+static struct scb9320_dev *scb9320_devices[] = {
+	&scb9320_io,
+};
+
+static int __init scb9320_evb9328lite_init(void)
+{
+	printk(KERN_ERR "scb9320-evb9328lite board\n");
+
+	scb9320_io.pdev  = &io_device;
+	scb9320_io.init  = io_init;
+	scb9320_io.pdata = &io_pdata;
+
+	scb9320_add_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+
+	return 0;
+}
+
+static void __exit scb9320_evb9328lite_exit(void)
+{
+	scb9320_del_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+}
+
+module_init(scb9320_evb9328lite_init);
+module_exit(scb9320_evb9328lite_exit);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("evb9328lite board setup");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-mx1/scb9320-evb9328pro.c b/arch/arm/mach-mx1/scb9320-evb9328pro.c
new file mode 100644
index 0000000..89a6316
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320-evb9328pro.c
@@ -0,0 +1,142 @@
+/*
+ * linux/arch/arm/mach-imx/scb9320-evb9328pro.c
+ *
+ * Copyright (c) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <linux/irq.h>
+#include <linux/serial_8250.h>
+#include <mach/hardware.h>
+#include <mach/scb9320.h>
+#include <asm/mach/map.h>
+
+static struct plat_serial8250_port uart16c550_platform_data[] = {
+	[0] = {
+		.mapbase = (unsigned long) SCB9320_EVB9328PRO_UART1_PHYS,
+		.irq = SCB9320_EVB9328PRO_UART_IRQ,
+		.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+		.iotype = UPIO_MEM,
+		.regshift = 0,
+		.uartclk = SCB9320_EVB9328PRO_UART_CLK,
+	},
+	[1] = {
+		.mapbase = (unsigned long) SCB9320_EVB9328PRO_UART2_PHYS,
+		.irq = SCB9320_EVB9328PRO_UART_IRQ,
+		.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+		.iotype = UPIO_MEM,
+		.regshift = 0,
+		.uartclk = SCB9320_EVB9328PRO_UART_CLK,
+	}, {},
+};
+
+static struct platform_device uart16c550_device = {
+	.name = "serial8250",
+	.id = 0,
+};
+
+static struct scb9320_io_platform_data io_pdata;
+
+static void io_seton(int x)
+{
+	struct scb9320_io_platform_data *pdata;
+
+	pdata = scb9320_io.pdev->dev.platform_data;
+
+	pdata->lshadow |= (x);
+	*pdata->base = pdata->lshadow;
+}
+
+static void io_setoff(int x)
+{
+	struct scb9320_io_platform_data *pdata;
+
+	pdata = scb9320_io.pdev->dev.platform_data;
+
+	pdata->lshadow &= ~(x);
+	*pdata->base = pdata->lshadow;
+}
+
+static int io_get(void)
+{
+	struct scb9320_io_platform_data *pdata;
+
+	pdata = scb9320_io.pdev->dev.platform_data;
+
+	return *pdata->base;
+}
+
+static struct platform_device io_device = {
+	.name           = "scb9320-io",
+	.id             = 0,
+};
+
+static void io_init(void)
+{
+	struct scb9320_io_platform_data *pdata;
+
+	pdata = scb9320_io.pdata;
+	scb9320_io.pdev->dev.platform_data = scb9320_io.pdata;
+
+	pdata->seton   = io_seton;
+	pdata->setoff  = io_setoff;
+	pdata->get     = io_get;
+
+	pdata->base    = ioremap(IMX_CS3_PHYS, 1);
+	pdata->lshadow = 0;
+
+	pdata->setoff(0xf);
+}
+
+static void uart16c550_init(void)
+{
+	struct plat_serial8250_port *pdata;
+
+	pdata = scb9320_uart16c550.pdata;
+
+	pdata[0].membase = ioremap(SCB9320_EVB9328PRO_UART1_PHYS, 1);
+	pdata[1].membase = ioremap(SCB9320_EVB9328PRO_UART2_PHYS, 1);
+	set_irq_type(pdata->irq, IRQF_TRIGGER_FALLING);
+}
+
+static struct scb9320_dev *scb9320_devices[] = {
+	&scb9320_io,
+	&scb9320_uart16c550,
+	&scb9320_imx_i2c,
+	&scb9320_imx_usb,
+};
+
+static int __init scb9320_evb9328pro_init(void)
+{
+	printk(KERN_ERR "scb9320-evb9328pro board\n");
+
+	scb9320_io.pdev          = &io_device;
+	scb9320_io.init          = io_init;
+	scb9320_io.pdata         = &io_pdata;
+	scb9320_uart16c550.pdev  = &uart16c550_device;
+	scb9320_uart16c550.init  = uart16c550_init;
+	scb9320_uart16c550.pdata = uart16c550_platform_data;
+
+	scb9320_add_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+
+	return 0;
+}
+
+static void __exit scb9320_evb9328pro_exit(void)
+{
+	scb9320_del_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+}
+
+module_init(scb9320_evb9328pro_init);
+module_exit(scb9320_evb9328pro_exit);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("evb9328pro board setup");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-mx1/scb9320-io-dev.c b/arch/arm/mach-mx1/scb9320-io-dev.c
new file mode 100644
index 0000000..952a8ea
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320-io-dev.c
@@ -0,0 +1,126 @@
+/*
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ *
+ * File Name:   scb9320-io.c
+ *
+ * Author:      Konstantin Kletschke, synertronixx GmbH
+ *
+ * Description: Kernel module to demonstrate leds and switches of scb9320
+ *
+ * History:     07/2004 initial
+ *              03/2008 some cleanup and rewrite
+ *              06/2009 integration into kernel (evk9328leds > scb9320-io)
+ *
+ * Copyright (C) 2004 Konstantin Kletschke <kletschke@synertronixx.de>
+ * Copyright (C) 2008 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ */
+
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/device.h>
+#include <linux/uaccess.h>
+#include <linux/io.h>
+#include <mach/scb9320.h>
+
+#define DRIVER_MAJOR 240
+
+static int scb9320_io_open(struct inode *scb9320, struct file *instance)
+{
+	if (!(scb9320_io.pdev))
+		return -1;
+
+	return 0;
+}
+
+static ssize_t scb9320_io_write(struct file *file, const char __user *user,
+				size_t count, loff_t *offset)
+{
+	u8 value;
+	struct scb9320_io_platform_data *pdata;
+
+	if ((pdata = scb9320_io.pdev->dev.platform_data) == NULL)
+		return -1;
+
+	if (count != sizeof(value))
+		return -1;
+
+	if (copy_from_user((void *)&value, user, count) != 0)
+		return -1;
+
+	if (pdata->seton)
+		pdata->seton(value & 0xff);
+	if (pdata->setoff)
+		pdata->setoff(~value & 0xff);
+
+	return count;
+}
+
+static ssize_t scb9320_io_read(struct file *file, char __user *user,
+			       size_t count, loff_t *offset)
+{
+	u8 value;
+	struct scb9320_io_platform_data *pdata;
+
+	if ((pdata = scb9320_io.pdev->dev.platform_data) == NULL)
+		return -1;
+
+	if (count != sizeof(value))
+		return -1;
+
+	if (pdata->get)
+		value = pdata->get();
+
+	if (copy_to_user(user, (void *)&value, count) != 0)
+		return -1;
+
+	return count;
+}
+
+const static struct file_operations fops = {
+	.owner = THIS_MODULE,
+	.open  = scb9320_io_open,
+	.write = scb9320_io_write,
+	.read  = scb9320_io_read
+};
+
+static int __init scb9320_io_init(void)
+{
+	if (register_chrdev(DRIVER_MAJOR, "scb9320io", &fops) != 0) {
+		printk(KERN_ERR "unable to register device\n");
+		return -EIO;
+	}
+
+	printk(KERN_ERR "scb9320 io character device initialized \n");
+
+	return 0;
+}
+
+static void __exit scb9320_io_release(void)
+{
+	printk(KERN_ERR "scb9320 io character device released\n");
+
+	unregister_chrdev(DRIVER_MAJOR, "scb9320io");
+}
+
+module_init(scb9320_io_init);
+module_exit(scb9320_io_release);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("scb9320 io character device");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-mx1/scb9320.c b/arch/arm/mach-mx1/scb9320.c
new file mode 100644
index 0000000..1ff9f95
--- /dev/null
+++ b/arch/arm/mach-mx1/scb9320.c
@@ -0,0 +1,655 @@
+/*
+ * linux/arch/arm/mach-imx/scb9320.c
+ *
+ * Copyright (c) 2004 Sascha Hauer <saschahauer@web.de>
+ * Copyright (c) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/irq.h>
+
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/time.h>
+#include <mach/common.h>
+#include <mach/gpio.h>
+#include <mach/scb9320.h>
+
+#include <linux/mtd/physmap.h>
+#include <linux/dm9000.h>
+#include <linux/serial_8250.h>
+#include <linux/usb/isp116x.h>
+#include <linux/mtd/scb9xxx.h>
+#include <mach/imx-uart.h>
+#include <mach/usb.h>
+
+/**
+ * begin of pin description section
+ */
+
+static int imx_uart1_pins[] = {
+	PC9_PF_UART1_CTS,
+	PC10_PF_UART1_RTS,
+	PC11_PF_UART1_TXD,
+	PC12_PF_UART1_RXD,
+};
+
+static int imx_uart2_pins[] = {
+	PB28_PF_UART2_CTS,
+	PB29_PF_UART2_RTS,
+	PB30_PF_UART2_TXD,
+	PB31_PF_UART2_RXD,
+};
+
+static int imx_i2c_pins[] = {
+	PA15_PF_I2C_SDA,
+	PA16_PF_I2C_SCL,
+};
+
+static int imx_usb_pins[] = {
+	PB20_PF_USBD_AFE,
+	PB21_PF_USBD_OE,
+	PB22_PF_USBD_RCV,
+	PB23_PF_USBD_SUSPND,
+	PB24_PF_USBD_VP,
+	PB25_PF_USBD_VM,
+	PB26_PF_USBD_VPO,
+	PB27_PF_USBD_VMO,
+};
+
+static int imx_mmc_pins[] = {
+	PC5_BGW211_BOOTA,
+	PC8_BGW211_BOOTB,
+	PC6_BGW211_PWREN,
+};
+
+static int nand_pins[] = {
+	PB18_NAND_ALE,
+	PB17_NAND_CLE,
+	PB15_NAND_RDY,
+};
+
+/**
+ * begin of platform device section
+ */
+
+/* (physmap) flash device */
+
+static struct resource flash_resource = {
+	.start  = IMX_CS0_PHYS,
+	.end    = IMX_CS0_PHYS + (32 * 1024 * 1024) - 1,
+	.flags  = IORESOURCE_MEM,
+};
+
+static struct mtd_partition defaultparts[] = {
+	{
+		.name   = "U-boot",
+		.size   = 0x00020000,
+		.offset = 0,
+		.mask_flags = MTD_WRITEABLE  /* force read-only */
+	}, {
+		.name   = "U-boot_env",
+		.size   = 0x00020000,
+		.offset = 0x00020000,
+	}, {
+		.name   = "kernel",
+		.size   = 0x00200000,
+		.offset = 0x00040000,
+	}, {
+		.name   = "root",
+		.size   = MTDPART_SIZ_FULL,
+		.offset = 0x00240000,
+	}
+};
+/* cmdline: mtdparts=physmap-flash.0:128k(U-boot)ro,...,5m(root),-(fs) */
+
+static struct physmap_flash_data flash_data = {
+	.width          = 2,
+	.parts          = defaultparts,
+	.nr_parts       = ARRAY_SIZE(defaultparts),
+};
+
+static struct platform_device flash_device = {
+	.name           = "physmap-flash",
+	.id             = 0,
+	.resource       = &flash_resource,
+	.num_resources  = 1,
+};
+
+/* imx uart1 device */
+
+static int uart1_imx_init(struct platform_device *pdev)
+{
+	return scb9320_setup_gpios(imx_uart1_pins, "UART1");
+}
+
+static void uart1_imx_exit(struct platform_device *pdev)
+{
+	scb9320_release_gpios(imx_uart1_pins, "UART1");
+}
+
+static struct imxuart_platform_data imx_uart1_pdata = {
+	.init           = uart1_imx_init,
+	.exit           = uart1_imx_exit,
+	.flags          = IMXUART_HAVE_RTSCTS,
+};
+
+static struct resource imx_uart1_resources[] = {
+	[0] = {
+		.start  = UART1_BASE_ADDR,
+		.end    = UART1_BASE_ADDR + 0xFF,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start  = UART1_MINT_RX,
+		.end    = UART1_MINT_RX,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[2] = {
+		.start  = UART1_MINT_TX,
+		.end    = UART1_MINT_TX,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[3] = {
+		.start  = UART1_MINT_RTS,
+		.end    = UART1_MINT_RTS,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device imx_uart1_device = {
+	.name           = "imx-uart",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(imx_uart1_resources),
+	.resource       = imx_uart1_resources,
+};
+
+/* imx uart2 device */
+
+static int uart2_imx_init(struct platform_device *pdev)
+{
+	return scb9320_setup_gpios(imx_uart2_pins, "UART2");
+}
+
+static void uart2_imx_exit(struct platform_device *pdev)
+{
+	scb9320_release_gpios(imx_uart2_pins, "UART2");
+}
+
+static struct imxuart_platform_data imx_uart2_pdata = {
+	.init           = uart2_imx_init,
+	.exit           = uart2_imx_exit,
+	.flags          = IMXUART_HAVE_RTSCTS,
+};
+
+static struct resource imx_uart2_resources[] = {
+	[0] = {
+		.start  = UART2_BASE_ADDR,
+		.end    = UART2_BASE_ADDR + 0xFF,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start  = UART2_MINT_RX,
+		.end    = UART2_MINT_RX,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[2] = {
+		.start  = UART2_MINT_TX,
+		.end    = UART2_MINT_TX,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[3] = {
+		.start  = UART2_MINT_RTS,
+		.end    = UART2_MINT_RTS,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device imx_uart2_device = {
+	.name           = "imx-uart",
+	.id             = 1,
+	.num_resources  = ARRAY_SIZE(imx_uart2_resources),
+	.resource       = imx_uart2_resources,
+};
+
+/* imx usb device */
+
+static struct resource imx_usb_resources[] = {
+	[0] = {
+		.start  = USBD_BASE_ADDR,
+		.end    = USBD_BASE_ADDR + 0xFFF,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start  = USBD_INT0,
+		.end    = USBD_INT0,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[2] = {
+		.start  = USBD_INT1,
+		.end    = USBD_INT1,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[3] = {
+		.start  = USBD_INT2,
+		.end    = USBD_INT2,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[4] = {
+		.start  = USBD_INT3,
+		.end    = USBD_INT3,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[5] = {
+		.start  = USBD_INT4,
+		.end    = USBD_INT4,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[6] = {
+		.start  = USBD_INT5,
+		.end    = USBD_INT5,
+		.flags  = IORESOURCE_IRQ,
+	},
+	[7] = {
+		.start  = USBD_INT6,
+		.end    = USBD_INT6,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+static struct imxusb_platform_data imx_usb_pdata = {
+};
+
+struct platform_device imx_usb_device = {
+	.name           = "imx_udc",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(imx_usb_resources),
+	.resource       = imx_usb_resources,
+};
+
+/* imx i2c device */
+
+static struct resource imx_i2c_resources[] = {
+	[0] = {
+		.start  = I2C_BASE_ADDR,
+		.end    = I2C_BASE_ADDR + 0x10,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start  = I2C_INT,
+		.end    = I2C_INT,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+struct platform_device imx_i2c_device = {
+	.name           = "imx-i2c",
+	.id             = 0,
+	.resource       = imx_i2c_resources,
+	.num_resources  = ARRAY_SIZE(imx_i2c_resources),
+};
+
+/* dm9000 device */
+
+static struct resource dm9000_resources[] = {
+	[0] = {
+		.name   = "address area",
+		.start  = SCB9320_ETH_PHYS,
+		.end    = SCB9320_ETH_PHYS + 0x1,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.name   = "data area",
+		.start  = SCB9320_ETH_PHYS + 0x4,
+		.end    = SCB9320_ETH_PHYS + 0x5,
+		.flags  = IORESOURCE_MEM,
+	},
+	[2] = {
+		.start  = SCB9320_ETH_IRQ,
+		.end    = SCB9320_ETH_IRQ,
+		.flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
+	},
+};
+
+static struct dm9000_plat_data dm9000_setup = {
+	.flags = DM9000_PLATF_16BITONLY
+};
+
+struct platform_device dm9000_device = {
+	.name           = "dm9000",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(dm9000_resources),
+	.resource       = dm9000_resources,
+};
+
+/* isp116x device */
+
+static struct resource isp116x_resources[] = {
+	{
+		.start  = SCB9320_ISP116X_PHYS,
+		.end    = SCB9320_ISP116X_PHYS + 0x1,
+		.flags  = IORESOURCE_MEM,
+	},
+	{
+		.start  = SCB9320_ISP116X_PHYS + 0x2,
+		.end    = SCB9320_ISP116X_PHYS + 0x3,
+		.flags  = IORESOURCE_MEM,
+	},
+	{
+		.start  = SCB9320_ISP116X_IRQ,
+		.end    = SCB9320_ISP116X_IRQ,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+static void scb9320_isp116x_hcd_delay(struct device *dev, int delay) {}
+
+static struct isp116x_platform_data isp116x_setup = {
+	.sel15Kres      = 1,
+	.delay          = scb9320_isp116x_hcd_delay,
+};
+
+struct platform_device isp116x_device = {
+	.name           = "isp116x-hcd",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(isp116x_resources),
+	.resource       = isp116x_resources,
+	.dev = {
+		.coherent_dma_mask = 0xffffffffUL,
+	}
+};
+
+/* mmc device (bgw211 via mmc) */
+
+static int scb9320_bgw211_present(struct device *dev)
+{
+	return (SSR(2) & (1<<6)) >> 6;
+}
+
+static struct imxmmc_platform_data imx_mmc_pdata = {
+	.card_present = scb9320_bgw211_present,
+};
+
+static struct resource imx_mmc_resources[] = {
+	[0] = {
+		.start  = MMC_BASE_ADDR,
+		.end    = MMC_BASE_ADDR + 0xFF,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start  = SDHC_INT,
+		.end    = SDHC_INT,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
+static u64 imxmmmc_dmamask = 0xffffffffUL;
+
+static struct platform_device imx_mmc_device = {
+	.name           = "imx-mmc",
+	.id             = 0,
+	.dev = {
+		.dma_mask = &imxmmmc_dmamask,
+		.coherent_dma_mask = 0xffffffff,
+	},
+	.num_resources  = ARRAY_SIZE(imx_mmc_resources),
+	.resource       = imx_mmc_resources,
+};
+
+/* nand device */
+
+static struct mtd_partition nand_partition[] = {
+	{
+		.name   = "NAND Flash 1",
+		.offset = 0,
+		.size   = 0x4000000,
+	},
+	{
+		.name   = "NAND Flash 2",
+		.offset = 0x4000000,
+		.size   = MTDPART_SIZ_FULL,
+	},
+};
+
+static struct mtd_partition *nand_partitions(int size, int *num_partitions)
+{
+	*num_partitions = ARRAY_SIZE(nand_partition);
+	return nand_partition;
+}
+
+static struct scb9xxx_nand_pdata nand_pdata = {
+	.nr_chips       = 1,
+	.partition_info = nand_partitions,
+};
+
+static struct resource scb9320_nand_resources[] = {
+	[0] = {
+		.name   = "data area",
+		.start  = IMX_CS4_PHYS,
+		.end    = IMX_CS4_PHYS,
+		.flags  = IORESOURCE_MEM,
+	},
+	[1] = {
+		.name   = "command area",
+		.start  = IMX_CS4_PHYS,
+		.end    = IMX_CS4_PHYS,
+		.flags  = IORESOURCE_MEM,
+	},
+};
+
+struct platform_device nand_device = {
+	.name           = "nand",
+	.id             = 0,
+	.num_resources  = ARRAY_SIZE(scb9320_nand_resources),
+	.resource       = scb9320_nand_resources,
+};
+
+/**
+ * begin of init functions section
+ */
+
+inline void scb9320_add_device(struct scb9320_dev *dev)
+{
+	if (dev->pdev)
+		printk(KERN_ERR
+		       "scb9320: initialize device %s\n", dev->pdev->name);
+	else
+		printk(KERN_ERR
+		       "scb9320: initialize device (warning, no pdev!)\n");
+
+	if (dev->init)
+		dev->init();
+
+	if ((dev->pdev) && (dev->pdata))
+		dev->pdev->dev.platform_data = dev->pdata;
+
+	if (dev->pdev)
+		platform_device_register(dev->pdev);
+}
+
+void scb9320_add_devices(struct scb9320_dev **devs, int num)
+{
+	int i;
+
+	for (i = 0; i < num; i++)
+		scb9320_add_device(devs[i]);
+}
+EXPORT_SYMBOL(scb9320_add_devices);
+
+void scb9320_del_devices(struct scb9320_dev **devs, int num)
+{
+	int i;
+
+	for (i = 0; i < num; i++) {
+		if (devs[i]->pdev) {
+			devs[i]->pdev->dev.kobj.state_initialized = 0;
+			platform_device_del(devs[i]->pdev);
+		}
+	}
+}
+EXPORT_SYMBOL(scb9320_del_devices);
+
+static void imx_i2c_init(void)
+{
+	scb9320_setup_gpios(imx_i2c_pins, "I2C");
+}
+
+static void imx_usb_init(void)
+{
+	scb9320_setup_gpios(imx_usb_pins, "USB");
+}
+
+static void isp116x_init(void)
+{
+	set_irq_type(SCB9320_ISP116X_IRQ, IRQF_TRIGGER_FALLING);
+}
+
+static void imx_mmc_init(void)
+{
+	scb9320_setup_gpios(imx_mmc_pins, "MMC");
+
+	DR(2) &= ~(1<<5); /* SDIO-mode */
+	DR(2) |=  (1<<8); /* SDIO-mode */
+	DR(2) &= ~(1<<6); /* pwr disable */
+}
+
+static void nand_init(void)
+{
+	scb9320_setup_gpios(nand_pins, "NAND");
+
+	CS4_UPPER = CS4_UPPERVAL_NAND;
+	CS4_LOWER = CS4_LOWERVAL_NAND;
+
+	printk(KERN_ERR "chipselect 4 upper value: 0x%08x\n", CS4_UPPER);
+	printk(KERN_ERR "chipselect 4 lower value: 0x%08x\n", CS4_LOWER);
+}
+
+/* platform devices and init functions */
+
+struct scb9320_dev scb9320_flash = {
+	.pdev   = &flash_device,
+	.pdata  = &flash_data,
+	.init   = NULL,
+};
+
+struct scb9320_dev scb9320_imx_uart1 = {
+	.pdev   = &imx_uart1_device,
+	.pdata  = &imx_uart1_pdata,
+	.init   = NULL,
+};
+
+struct scb9320_dev scb9320_imx_uart2 = {
+	.pdev   = &imx_uart2_device,
+	.pdata  = &imx_uart2_pdata,
+	.init   = NULL,
+};
+
+struct scb9320_dev scb9320_imx_i2c = {
+	.pdev   = &imx_i2c_device,
+	.pdata  = NULL,
+	.init   = imx_i2c_init,
+};
+EXPORT_SYMBOL(scb9320_imx_i2c);
+
+struct scb9320_dev scb9320_imx_usb = {
+	.pdev   = &imx_usb_device,
+	.pdata  = &imx_usb_pdata,
+	.init   = imx_usb_init,
+};
+EXPORT_SYMBOL(scb9320_imx_usb);
+
+struct scb9320_dev scb9320_io = {
+	.pdev   = NULL,
+	.pdata  = NULL,
+	.init   = NULL,
+};
+EXPORT_SYMBOL(scb9320_io);
+
+struct scb9320_dev scb9320_dm9000 = {
+	.pdev   = &dm9000_device,
+	.pdata  = &dm9000_setup,
+	.init   = NULL,
+};
+EXPORT_SYMBOL(scb9320_dm9000);
+
+struct scb9320_dev scb9320_isp116x = {
+	.pdev   = &isp116x_device,
+	.pdata  = &isp116x_setup,
+	.init   = isp116x_init,
+};
+EXPORT_SYMBOL(scb9320_isp116x);
+
+struct scb9320_dev scb9320_uart16c550 = {
+	.pdev   = NULL,
+	.pdata  = NULL,
+	.init   = NULL,
+};
+EXPORT_SYMBOL(scb9320_uart16c550);
+
+struct scb9320_dev scb9320_imx_mmc = {
+	.pdev   = &imx_mmc_device,
+	.pdata  = &imx_mmc_pdata,
+	.init   = imx_mmc_init,
+};
+EXPORT_SYMBOL(scb9320_imx_mmc);
+
+struct scb9320_dev scb9320_sja1000 = {
+	.pdev   = NULL,
+	.pdata  = NULL,
+	.init   = NULL,
+};
+EXPORT_SYMBOL(scb9320_sja1000);
+
+struct scb9320_dev scb9320_nand = {
+	.pdev   = &nand_device,
+	.pdata  = &nand_pdata,
+	.init   = nand_init,
+};
+EXPORT_SYMBOL(scb9320_nand);
+
+static struct scb9320_dev *scb9320_devices[] = {
+	&scb9320_flash,
+	&scb9320_imx_uart1,
+	&scb9320_imx_uart2,
+#ifdef CONFIG_MACH_SCB9320_DM9000
+	&scb9320_dm9000,
+#endif /* CONFIG_MACH_SCB9320_DM9000 */
+#ifdef CONFIG_MACH_SCB9320_MMC
+	&scb9320_imx_mmc,
+#endif /* CONFIG_MACH_SCB9320_MMC */
+#ifdef CONFIG_MACH_SCB9320_NAND
+	&scb9320_nand,
+#endif /* CONFIG_MACH_SCB9320_NAND */
+};
+
+static void __init scb9320_init(void)
+{
+	printk(KERN_ERR "scb9320 board\n");
+
+	scb9320_add_devices(scb9320_devices, ARRAY_SIZE(scb9320_devices));
+}
+
+static void __init scb9320_timer_init(void)
+{
+	mx1_clocks_init(32768);
+}
+
+static struct sys_timer scb9320_timer = {
+	.init = scb9320_timer_init,
+};
+
+MACHINE_START(SCB9328, "synertronixx scb9320")
+	.phys_io        = 0x00200000,
+	.io_pg_offst    = ((0xe0200000) >> 18) & 0xfffc,
+	.boot_params    = 0x08000100,
+	.map_io         = mx1_map_io,
+	.init_irq       = mxc_init_irq,
+	.timer          = &scb9320_timer,
+	.init_machine   = scb9320_init,
+MACHINE_END
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 89c992b..36f7267 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -489,6 +489,12 @@ config MACH_EZX_E2
 	default y
 	depends on PXA_EZX
 
+config MACH_SCB9520
+	bool "synertronixx scb9520"
+	select PXA27x
+	select IWMMXT
+	default y
+
 endmenu
 
 config PXA25x
@@ -548,4 +554,27 @@ config PXA_HAVE_BOARD_IRQS
 config PXA_HAVE_ISA_IRQS
 	bool
 
+
+comment "board specific devices"
+        depends on MACH_SCB9520
+
+choice
+        prompt "scb9520 SBC SDRAM Mapping"
+        depends on MACH_SCB9520
+        help
+          Choose Mapping of SDRAM Variant
+
+config SCB9520_128MB
+        bool "Two 64MB chips in partitions 0 and 1"
+
+config SCB9520_64MB
+        bool "One 64MB chip in partition 1"
+
+endchoice
+
+
+config MACH_SCB9520_IO_CHARDEV
+        tristate "scb9520 io device interface"
+        depends on MACH_SCB9520
+
 endif
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index d4c6122..709262a 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -77,6 +77,7 @@ obj-$(CONFIG_MACH_SAAR)		+= saar.o
 obj-$(CONFIG_MACH_ARMCORE)      += cm-x2xx.o cm-x255.o cm-x270.o
 obj-$(CONFIG_MACH_CM_X300)      += cm-x300.o
 obj-$(CONFIG_PXA_EZX)           += ezx.o
+obj-$(CONFIG_MACH_SCB9520)      += scb9520.o
 
 obj-$(CONFIG_MACH_INTELMOTE2)   += imote2.o
 obj-$(CONFIG_MACH_STARGATE2)	+= stargate2.o
@@ -89,6 +90,9 @@ led-$(CONFIG_ARCH_LUBBOCK)	+= leds-lubbock.o
 led-$(CONFIG_MACH_MAINSTONE)	+= leds-mainstone.o
 led-$(CONFIG_ARCH_PXA_IDP)	+= leds-idp.o
 
+# Support for scb9320 io character device
+obj-$(CONFIG_MACH_SCB9520_IO_CHARDEV) += scb9520-io-dev.o
+
 obj-$(CONFIG_LEDS)		+= $(led-y)
 
 ifeq ($(CONFIG_PCI),y)
diff --git a/arch/arm/mach-pxa/Makefile.boot b/arch/arm/mach-pxa/Makefile.boot
index 1ead671..9a3a547 100644
--- a/arch/arm/mach-pxa/Makefile.boot
+++ b/arch/arm/mach-pxa/Makefile.boot
@@ -1,2 +1,2 @@
-   zreladdr-y	:= 0xa0008000
-
+zreladdr-$(CONFIG_SCB9520_128MB) := 0xa0008000
+zreladdr-$(CONFIG_SCB9520_64MB) := 0xa4008000
diff --git a/arch/arm/mach-pxa/include/mach/memory.h b/arch/arm/mach-pxa/include/mach/memory.h
index f626730..0fef7c8 100644
--- a/arch/arm/mach-pxa/include/mach/memory.h
+++ b/arch/arm/mach-pxa/include/mach/memory.h
@@ -15,7 +15,11 @@
 /*
  * Physical DRAM offset.
  */
+#if defined (CONFIG_SCB9520_128MB)
 #define PHYS_OFFSET	UL(0xa0000000)
+#elif defined (CONFIG_SCB9520_64MB)
+#define PHYS_OFFSET	UL(0xa4000000)
+#endif
 
 /*
  * The nodes are matched with the physical SDRAM banks as follows:
diff --git a/arch/arm/mach-pxa/include/mach/scb9520.h b/arch/arm/mach-pxa/include/mach/scb9520.h
new file mode 100644
index 0000000..aea4ee7
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/scb9520.h
@@ -0,0 +1,37 @@
+/************************************************************************
+ * Include file for synertronixx SCB9520
+ * Copyright (c) Konstantin Kletschke
+ * 2007
+ ************************************************************************/
+
+/*
+ * Includes/Defines
+ */
+#ifndef _SCB9520_H_
+#define _SCB9520_H_
+
+/* physical memory regions */
+#define SCB9520_FLASH_PHYS      0x0
+#define SCB9520_FLASH_SIZE	0x02000000	/* Flash size 32 MB */
+
+/* Ethernet Controller Davicom DM9000 */
+#define GPIO_DM9000		101
+#define SCB9520_ETH_IRQ	IRQ_GPIO(GPIO_DM9000)
+
+/* DIL 64 TIN used by CS3 */
+#define GPIO_TIN 13
+#define SCB9520_TIN_IRQ IRQ_GPIO(GPIO_TIN)
+
+#if 0
+/* LEDS using tx2 / rx2 */
+#define GPIO_SYS_BUSY_LED	46
+#define GPIO_HEARTBEAT_LED	47
+#endif
+
+#define CPLD_NAND_CE1  0x01
+#define CPLD_NAND_CE2  0x02
+#define CPLD_NAND_ALE  0x04
+#define CPLD_NAND_CLE  0x08
+#define CPLD_NAND_RYBY 0x20
+
+#endif /* _SCB9520_H_ */
diff --git a/arch/arm/mach-pxa/scb9520-io-dev.c b/arch/arm/mach-pxa/scb9520-io-dev.c
new file mode 100644
index 0000000..504c708
--- /dev/null
+++ b/arch/arm/mach-pxa/scb9520-io-dev.c
@@ -0,0 +1,111 @@
+/*
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ * Author:      Torsten Koschorrek, synertronixx GmbH
+ *
+ * Description: Kernel module to demonstrate leds and switches of scb9520
+ *
+ * Copyright (C) 2009 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ */
+
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/device.h>
+#include <linux/uaccess.h>
+#include <linux/io.h>
+#include <mach/scb9520.h>
+#include <mach/mfp-pxa27x.h>
+#include <mach/pxa2xx-regs.h>
+
+#define DRIVER_MAJOR 240
+
+void __iomem *base;
+
+static int scb9520_io_open(struct inode *scb9520, struct file *instance)
+{
+	return 0;
+}
+
+static ssize_t scb9520_io_write(struct file *file, const char __user *user,
+				size_t count, loff_t *offset)
+{
+	u8 value;
+
+	if (count != sizeof(value))
+		return -1;
+
+	if (copy_from_user((void *)&value, user, count) != 0)
+		return -1;
+
+	writeb(value, base);
+
+	return count;
+}
+
+static ssize_t scb9520_io_read(struct file *file, char __user *user,
+			       size_t count, loff_t *offset)
+{
+	u8 value;
+
+	if (count != sizeof(value))
+		return -1;
+
+	value = readb(base);
+
+	if (copy_to_user(user, (void *)&value, count) != 0)
+		return -1;
+
+	return count;
+}
+
+const static struct file_operations fops = {
+	.owner = THIS_MODULE,
+	.open  = scb9520_io_open,
+	.write = scb9520_io_write,
+	.read  = scb9520_io_read
+};
+
+static int __init scb9520_io_init(void)
+{
+	if (register_chrdev(DRIVER_MAJOR, "scb9520io", &fops) != 0) {
+		printk(KERN_ERR "unable to register device\n");
+		return -EIO;
+	}
+
+	base = ioremap(PXA_CS3_PHYS, 0x2);
+
+	printk(KERN_ERR "scb9520 io character device initialized \n");
+
+	return 0;
+}
+
+static void __exit scb9520_io_release(void)
+{
+	printk(KERN_ERR "scb9520 io character device released\n");
+
+	iounmap(base);
+
+	unregister_chrdev(DRIVER_MAJOR, "scb9520io");
+}
+
+module_init(scb9520_io_init);
+module_exit(scb9520_io_release);
+
+MODULE_AUTHOR("Torsten Koschorrek");
+MODULE_DESCRIPTION("scb9520 io character device");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/scb9520.c b/arch/arm/mach-pxa/scb9520.c
new file mode 100644
index 0000000..c6fe409
--- /dev/null
+++ b/arch/arm/mach-pxa/scb9520.c
@@ -0,0 +1,223 @@
+/*
+ *  linux/arch/arm/mach-pxa/scb9520.c
+ *
+ *  Support for the synertronixx GmbH scb9520 PXA270 based Module Platform.
+ *
+ *  Author:	Konstantin Kletschke
+ *  Created:	19 03, 2007
+ *  Copyright:	synertonixx GmbH
+ *
+ *  Copyright 2007 Konstantin Kletschke <kletschke@synertronixx.de>
+ *  Copyright 2010 Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+#include <linux/irq.h>
+#include <linux/serial_8250.h>
+#include <linux/mtd/physmap.h>
+#include <linux/mtd/scb9xxx.h>
+#include <linux/dm9000.h>
+
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/pxa2xx-regs.h>
+#include <mach/mfp-pxa27x.h>
+#include <mach/scb9520.h>
+#include <mach/ohci.h>
+
+#include "generic.h"
+#include "devices.h"
+
+static struct mtd_partition defaultparts[] = {
+	{
+		.name =		"U-boot",
+		.size =		0x00020000,
+		.offset =	0,
+		.mask_flags =	MTD_WRITEABLE  /* force read-only */
+	},{
+		.name =		"U-boot_env",
+		.size =		0x00020000,
+		.offset =	0x00020000,
+	},{
+		.name =		"kernel",
+		.size =		0x00200000,
+		.offset =	0x00040000,
+	},{
+		.name =		"root",
+		.size =		MTDPART_SIZ_FULL,
+		.offset =	0x00240000,
+	}
+};
+
+static struct physmap_flash_data scb9520_flash_data = {
+	.width  = 2,
+	.parts = defaultparts,
+	.nr_parts = ARRAY_SIZE(defaultparts),
+};
+
+static struct resource scb9520_flash_resource = {
+	.start          = 0x0,
+	.end            = 0x02000000 - 1,
+	.flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device scb9520_flash = {
+	.name           = "physmap-flash",
+	.id             = 0,
+	.dev            = {
+		.platform_data  = &scb9520_flash_data,
+	},
+	.resource       = &scb9520_flash_resource,
+	.num_resources  = 1,
+};
+
+static struct mtd_partition nand_partition[] = {
+        {
+                .name   = "NAND Flash",
+                .offset = 0,
+                .size   = MTDPART_SIZ_FULL,
+        },
+};
+
+static struct mtd_partition *nand_partitions(int size, int *num_partitions)
+{
+        *num_partitions = ARRAY_SIZE(nand_partition);
+        return nand_partition;
+}
+
+static struct scb9xxx_nand_pdata nand_pdata = {
+        .ce1            = CPLD_NAND_CE1,
+        .ce2            = CPLD_NAND_CE2,
+        .ale            = CPLD_NAND_ALE,
+        .cle            = CPLD_NAND_CLE,
+        .rdy            = CPLD_NAND_RYBY,
+	.nr_chips	= 2,
+        .partition_info = nand_partitions,
+};
+
+static struct resource scb9520_nand_resources[] = {
+        [0] = {
+                .name  = "data area",
+                .start = PXA_CS4_PHYS + 0,
+                .end   = PXA_CS4_PHYS + 0,
+                .flags = IORESOURCE_MEM,
+        },
+        [1] = {
+                .name  = "command area",
+                .start = PXA_CS4_PHYS + 2,
+                .end   = PXA_CS4_PHYS + 2,
+                .flags = IORESOURCE_MEM,
+        },
+};
+
+static struct platform_device nand_device = {
+        .name          = "nand",
+        .id            = 0,
+        .num_resources = ARRAY_SIZE(scb9520_nand_resources),
+        .resource      = scb9520_nand_resources,
+        .dev = {
+                .platform_data = &nand_pdata,
+        }
+};
+
+static struct resource dm9000_resources[] = {
+	[0] = {
+		.name   = "address area",
+		.start	= PXA_CS2_PHYS + 0,
+		.end	= PXA_CS2_PHYS + 3,
+		.flags	= IORESOURCE_MEM
+	},
+	[1] = {
+		.name   = "data area",
+		.start	= PXA_CS2_PHYS + 4,
+		.end	= PXA_CS2_PHYS + 4 + 500,
+		.flags	= IORESOURCE_MEM
+	},
+	[2] = {
+		.start	= SCB9520_ETH_IRQ,
+		.end	= SCB9520_ETH_IRQ,
+		.flags	= IORESOURCE_IRQ | IRQF_TRIGGER_FALLING
+	},
+};
+
+static struct dm9000_plat_data dm9000_setup = {
+        .flags = DM9000_PLATF_16BITONLY
+};
+
+static struct platform_device dm9000_device = {
+	.name		= "dm9000",
+	.id		= 0,
+	.num_resources	= ARRAY_SIZE(dm9000_resources),
+	.resource	= dm9000_resources,
+	.dev = {
+		.platform_data = &dm9000_setup,
+	}
+};
+
+static struct plat_serial8250_port evb9520_serial_port[] = {
+	{
+		.mapbase	= (unsigned long)(PXA_CS3_PHYS + 0x30000),
+		.irq		= SCB9520_TIN_IRQ,
+		.flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP ,
+		.iotype		= UPIO_MEM,
+		.regshift	= 1,
+		.uartclk	= (4*1843200),
+	},
+	{},
+};
+
+static struct platform_device uart_devices = {
+	.name		= "serial8250",
+	.id		= 0,
+	.dev		= {
+		.platform_data	= evb9520_serial_port,
+	},
+};
+
+static struct pxaohci_platform_data scb9520_ohci_platform_data = {
+	.port_mode      = PMM_PERPORT_MODE,
+	.flags		= NO_OC_PROTECTION | ENABLE_PORT1,
+};
+
+static unsigned long scb9520_evb9520_pin_config[] __initdata = {
+	/* stuart */
+	GPIO46_STUART_RXD,
+	GPIO47_STUART_TXD,
+	/* io, vfd, serial8250 */
+	GPIO79_nCS_3,
+	/* ohci */
+	GPIO88_USBH1_PWR,
+	GPIO89_USBH1_PEN,
+	/* i2c */
+	GPIO117_I2C_SCL,
+	GPIO118_I2C_SDA,
+};
+
+static struct platform_device * scb9520_devices[] __initdata = {
+	&pxa_device_i2c,
+	&uart_devices,
+	&dm9000_device,
+	&scb9520_flash,
+	&nand_device,
+};
+
+static void __init scb9520_init(void)
+{
+	platform_add_devices(scb9520_devices, ARRAY_SIZE(scb9520_devices));
+	pxa2xx_mfp_config(ARRAY_AND_SIZE(scb9520_evb9520_pin_config));
+	pxa_set_ohci_info(&scb9520_ohci_platform_data);
+	set_irq_type(SCB9520_TIN_IRQ, IRQF_TRIGGER_FALLING);
+}
+
+MACHINE_START(SCB9520, "synertronixx GmbH scb9520 module")
+	.phys_io	= 0x40000000,
+	.io_pg_offst	= (io_p2v(0x40000000) >> 18) & 0xfffc,
+	.init_machine	= scb9520_init,
+	.map_io		= pxa_map_io,
+	.init_irq	= pxa27x_init_irq,
+	.timer		= &pxa_timer,
+MACHINE_END
+
diff --git a/arch/arm/plat-mxc/include/mach/scb9320.h b/arch/arm/plat-mxc/include/mach/scb9320.h
new file mode 100644
index 0000000..0ecbe7f
--- /dev/null
+++ b/arch/arm/plat-mxc/include/mach/scb9320.h
@@ -0,0 +1,199 @@
+#ifndef _SCB9320_H_
+#define _SCB9320_H_
+
+#define PC5_BGW211_BOOTA	(GPIO_PORTC | GPIO_OUT | GPIO_GPIO |  5)
+#define PC8_BGW211_BOOTB	(GPIO_PORTC | GPIO_OUT | GPIO_GPIO |  8)
+#define PC6_BGW211_PWREN	(GPIO_PORTC | GPIO_OUT | GPIO_GPIO |  6)
+
+#define PB18_NAND_ALE		(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 18)
+#define PB17_NAND_CLE		(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 17)
+#define PB15_NAND_RDY		(GPIO_PORTB | GPIO_IN  | GPIO_GPIO | 15)
+
+#define PA02_CAN2WEBADV_IRQ	(GPIO_PORTA | GPIO_IN  | GPIO_GPIO | 2)
+#define PB21_CAN2WEBADV_FASTMD	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 21)
+#define PB22_CAN2WEBADV_120OHM	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 22)
+
+#define PA02_CAN2WEBPRO_IRQ	(GPIO_PORTA | GPIO_IN  | GPIO_GPIO | 2)
+#define PB21_CAN2WEBPRO_FASTMD	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 21)
+#define PB22_CAN2WEBPRO_120OHM	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 22)
+#define PB23_CAN2WEBPRO_LED0	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 23)
+#define PB24_CAN2WEBPRO_LED1	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 24)
+#define PB25_CAN2WEBPRO_LED2	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 25)
+#define PB26_CAN2WEBPRO_LED3	(GPIO_PORTB | GPIO_OUT | GPIO_GPIO | 26)
+
+/* begin compatibility stuff (imx -> mxc) */
+
+#include <linux/dma-mapping.h>
+#include <mach/iomux.h>
+#include <mach/gpio.h>
+
+#define IMX_EIM_BASE  EIM_BASE_ADDR
+
+#define __REG(x)    (*((volatile u32 *)IO_ADDRESS(x)))
+#define __REG2(x, y) (*(volatile u32 *)((u32)&__REG(x) + (y)))
+
+#define DR(x)      __REG2(GPIO_BASE_ADDR + 0x1c, ((x) & 3) << 8)
+#define SSR(x)     __REG2(GPIO_BASE_ADDR + 0x24, ((x) & 3) << 8)
+
+/* compat for imxmmc.c */
+
+typedef enum {
+	DMA_PRIO_HIGH = 0,
+	DMA_PRIO_MEDIUM = 1,
+	DMA_PRIO_LOW = 2
+} imx_dma_prio;
+typedef int imx_dmach_t;
+#define DMA_MODE_READ		0
+#define DMA_MODE_WRITE		1
+
+int imx_dma_setup_sg(imx_dmach_t dma_ch,
+		 struct scatterlist *sg, unsigned int sgcount, unsigned int dma_length,
+		 unsigned int dev_addr, unsigned int dmamode);
+int imx_dma_setup_handlers(imx_dmach_t dma_ch,
+		void (*irq_handler) (int, void *),
+		void (*err_handler) (int, void *, int), void *data);
+void imx_dma_enable(imx_dmach_t dma_ch);
+void imx_dma_disable(imx_dmach_t dma_ch);
+void imx_dma_free(imx_dmach_t dma_ch);
+imx_dmach_t imx_dma_request_by_prio(const char *name, imx_dma_prio prio);
+
+struct imxmmc_platform_data {
+	int (*card_present)(struct device *);
+	int (*get_ro)(struct device *);
+};
+
+#define IMX_DMAC_BASE DMA_BASE_ADDR
+
+#define CCR(x)  __REG2(IMX_DMAC_BASE + 0x8c, (x) << 6)	/* Control Registers */
+#define RSSR(x) __REG2(IMX_DMAC_BASE + 0x90, (x) << 6)	/* Request source select Registers */
+#define BLR(x)  __REG2(IMX_DMAC_BASE + 0x94, (x) << 6)	/* Burst length Registers */
+
+#define CCR_DMOD_LINEAR    (0x0 << 12)
+#define CCR_DMOD_FIFO      (0x2 << 12)
+#define CCR_SMOD_LINEAR    (0x0 << 10)
+#define CCR_SMOD_FIFO      (0x2 << 10)
+#define CCR_DSIZ_32        (0x0 << 6)
+#define CCR_DSIZ_16        (0x2 << 6)
+#define CCR_SSIZ_32        (0x0 << 4)
+#define CCR_SSIZ_16        (0x2 << 4)
+#define CCR_REN            (1<<3)
+
+#define imx_gpio_mode(gpio_mode) mxc_gpio_mode(gpio_mode)
+
+/* end compatibility stuff (imx -> mxc) */
+
+#define SCB9320_ETH_PHYS		(IMX_CS5_PHYS)
+#define SCB9320_ETH_IRQ 		(IRQ_GPIOC(3))
+
+#define SCB9320_EVB9328PRO_UART1_PHYS	(IMX_CS3_PHYS + 0x30000)
+#define SCB9320_EVB9328PRO_UART2_PHYS	(IMX_CS3_PHYS + 0x10000)
+#define SCB9320_EVB9328PRO_UART_IRQ	(IRQ_GPIOA(1))
+#define SCB9320_EVB9328PRO_UART_CLK	(4 * 1843200)
+
+#define SCB9320_CAN2WEBADV_UART1_PHYS	(IMX_CS1_PHYS + (1 << 16))
+#define SCB9320_CAN2WEBADV_UART_IRQ	(IRQ_GPIOA(1))
+#define SCB9320_CAN2WEBADV_UART_CLK	(8 * 1843200)
+
+#define CAN2WEBADV_SJA1000_PHYS 	(IMX_CS3_PHYS + 0xC000)
+#define CAN2WEBADV_SJA1000_IRQ		(IRQ_GPIOA(2))
+
+#define CAN2WEBPRO_SJA1000_PHYS 	(IMX_CS3_PHYS + 0xC000)
+#define CAN2WEBPRO_SJA1000_IRQ		(IRQ_GPIOA(2))
+
+#define SCB9320_ISP116X_PHYS		(IMX_CS1_PHYS)
+#define SCB9320_ISP116X_IRQ		(IRQ_GPIOA(1))
+
+#define CS1_UPPER			__REG(IMX_EIM_BASE + 0x08)
+#define CS1_LOWER			__REG(IMX_EIM_BASE + 0x0c)
+#define CS3_UPPER			__REG(IMX_EIM_BASE + 0x18)
+#define CS3_LOWER			__REG(IMX_EIM_BASE + 0x1c)
+#define CS4_UPPER			__REG(IMX_EIM_BASE + 0x20)
+#define CS4_LOWER			__REG(IMX_EIM_BASE + 0x24)
+
+/* CSx_UPPER: slow value: 0x000ffe7f */
+/* CSx_LOWER: slow value: 0xfffffb03 */
+
+/* Board: CAN2WebAdvanced
+ * SC16C550B(5V): t6s'=10ns, t7w=20ns, t7h'=5ns
+ * TL16C550C:     td4 =7ns,  tw7=40ns, th3 =10ns, tcrw=87ns
+ * gates:         CPLD(CS_Ax)=10ns, bus_trans=7.5ns
+ * worst case:    (10+10+40+8+10)ns = 78ns (delay)
+ * dead cycles:   87ns - 78ns = 9ns
+ * wait states:   87ns / (1/.072) = 6.264 -> (7-1=6)
+ * CS1U: 6 wait states, 1 dead cycle
+ * CS1L: 1 half clock /OE and /WE assert r/w
+ */
+#define CS1_UPPERVAL_CAN2WEBADV 	0x00000701
+#define CS1_LOWERVAL_CAN2WEBADV 	0x10100303
+
+#define CS3_UPPERVAL_CAN2WEBADV 	0x00001500
+#define CS3_LOWERVAL_CAN2WEBADV 	0x00000303
+
+#define CS3_UPPERVAL_CAN2WEBPRO 	0x00001500
+#define CS3_LOWERVAL_CAN2WEBPRO 	0x00000303
+
+/* NAND Flash driver */
+#define CS4_UPPERVAL_NAND		0x00000200
+#define CS4_LOWERVAL_NAND		0x00000b03
+
+#ifndef __ASSEMBLER__
+
+#include <linux/platform_device.h>
+
+typedef struct {
+	int  (*probe)(void);
+	void (*remove)(void);
+	void (*isr)(void *);
+	void *context;
+	struct mmc_card *card;
+} sd_client_t;
+
+struct imxi2c_platform_data {
+	int (*init)(struct device *dev);
+	void (*exit)(struct device *dev);
+	int bitrate;
+};
+
+struct scb9320_io_platform_data {
+	volatile u8 *base;
+	char lshadow;
+	void (*seton)(int);
+	void (*setoff)(int);
+	int  (*get)(void);
+};
+
+struct sja1000_platform_data {
+	void (*seton)(int);
+	void (*setoff)(int);
+};
+
+struct scb9320_dev {
+	struct platform_device *pdev;
+	void *pdata;
+	void (*init)(void);
+};
+
+/*     struct scb9320_dev scb9320_flash;     */
+/*     struct scb9320_dev scb9320_imx_uart1; */
+/*     struct scb9320_dev scb9320_imx_uart2; */
+extern struct scb9320_dev scb9320_imx_i2c;
+extern struct scb9320_dev scb9320_imx_usb;
+extern struct scb9320_dev scb9320_imx_mmc;
+extern struct scb9320_dev scb9320_io;
+extern struct scb9320_dev scb9320_dm9000;
+extern struct scb9320_dev scb9320_uart16c550;
+extern struct scb9320_dev scb9320_isp116x;
+extern struct scb9320_dev scb9320_sja1000;
+extern struct scb9320_dev scb9320_nand;
+
+void scb9320_add_devices(struct scb9320_dev **devs, int num);
+void scb9320_del_devices(struct scb9320_dev **devs, int num);
+
+#define scb9320_setup_gpios(pinarray, name)				\
+	mxc_gpio_setup_multiple_pins(pinarray, ARRAY_SIZE(pinarray), name)
+#define scb9320_release_gpios(pinarray, name)				\
+	mxc_gpio_release_multiple_pins(pinarray, ARRAY_SIZE(pinarray))
+
+#endif
+
+#endif /* _SCB9320_H_ */
diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
index bf98d7c..5de934e 100644
--- a/drivers/mmc/host/imxmmc.c
+++ b/drivers/mmc/host/imxmmc.c
@@ -28,16 +28,13 @@
 #include <asm/dma.h>
 #include <asm/irq.h>
 #include <asm/sizes.h>
-#include <mach/mmc.h>
-#include <mach/imx-dma.h>
+#include <mach/scb9320.h>
 
 #include "imxmmc.h"
 
 #define DRIVER_NAME "imx-mmc"
 
-#define IMXMCI_INT_MASK_DEFAULT (INT_MASK_BUF_READY | INT_MASK_DATA_TRAN | \
-				 INT_MASK_WRITE_OP_DONE | INT_MASK_END_CMD_RES | \
-				 INT_MASK_AUTO_CARD_DETECT | INT_MASK_DAT0_EN | INT_MASK_SDIO)
+#define IMXMCI_INT_MASK_DEFAULT (INT_MASK_END_CMD_RES | INT_MASK_AUTO_CARD_DETECT | INT_MASK_DAT0_EN)
 
 struct imxmci_host {
 	struct mmc_host		*mmc;
@@ -307,6 +304,11 @@ static void imxmci_setup_data(struct imxmci_host *host, struct mmc_data *data)
 
 	wmb();
 
+	if (host->actual_bus_width == MMC_BUS_WIDTH_4)
+		BLR(host->dma) = 0;
+	else
+		BLR(host->dma) = 16;
+
 	set_bit(IMXMCI_PEND_DMA_DATA_b, &host->pending_events);
 	clear_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events);
 
@@ -398,10 +400,14 @@ static void imxmci_finish_request(struct imxmci_host *host, struct mmc_request *
 	if (req && req->cmd)
 		host->prev_cmd_code = req->cmd->opcode;
 
+	if (req->cmd->arg == 0x00400a00)
+		req->cmd->resp[0] = 42;
+
 	host->req = NULL;
 	host->cmd = NULL;
 	host->data = NULL;
 	mmc_request_done(host->mmc, req);
+	imxmci_start_clock(host);
 }
 
 static int imxmci_finish_data(struct imxmci_host *host, unsigned int stat)
@@ -643,9 +649,22 @@ static irqreturn_t imxmci_irq(int irq, void *devid)
 	u32 stat = readw(host->base + MMC_REG_STATUS);
 	int handled = 1;
 
-	writew(host->imask | INT_MASK_SDIO | INT_MASK_AUTO_CARD_DETECT,
+	writew(host->imask | INT_MASK_AUTO_CARD_DETECT,
 			host->base + MMC_REG_INT_MASK);
 
+	if (!(stat & STATUS_SDIO_INT_ACTIVE)) {
+		if ((host->pending_events & 0x10) && (host->pending_events & 0x8))
+			udelay (20);
+	} else {
+		if (host->mmc->card != NULL) {
+			struct device *dev = &(host->mmc->card->dev);
+			sd_client_t *sd_client = (sd_client_t *)dev->driver_data;
+
+			if (sd_client->isr)
+				sd_client->isr(sd_client->context);
+		}
+	}
+
 	atomic_set(&host->stuck_timeout, 0);
 	host->status_reg = stat;
 	set_bit(IMXMCI_PEND_IRQ_b, &host->pending_events);
@@ -782,6 +801,20 @@ static void imxmci_request(struct mmc_host *mmc, struct mmc_request *req)
 
 	WARN_ON(host->req != NULL);
 
+	switch (req->cmd->opcode) {
+	case 52:
+		if (((req->cmd->arg & 0x3fffe00) >> 9) == 0x7) {
+			if ((req->cmd->arg & 0xff) == 0x82) {
+				host->actual_bus_width = MMC_BUS_WIDTH_4;
+				mmc->ios.bus_width = MMC_BUS_WIDTH_4;
+			} else {
+				host->actual_bus_width = MMC_BUS_WIDTH_1;
+				mmc->ios.bus_width = MMC_BUS_WIDTH_1;
+			}
+		}
+		break;
+	}
+
 	host->req = req;
 
 	cmdat = 0;
@@ -960,7 +993,7 @@ static int __init imxmci_probe(struct platform_device *pdev)
 
 	mmc->ops = &imxmci_ops;
 	mmc->f_min = 150000;
-	mmc->f_max = CLK_RATE/2;
+	mmc->f_max = CLK_RATE;
 	mmc->ocr_avail = MMC_VDD_32_33;
 	mmc->caps = MMC_CAP_4_BIT_DATA;
 
@@ -989,7 +1022,7 @@ static int __init imxmci_probe(struct platform_device *pdev)
 	host->res = r;
 	host->irq = irq;
 
-	host->clk = clk_get(&pdev->dev, "perclk2");
+	host->clk = clk_get(&pdev->dev, "sdhc_clk");
 	if (IS_ERR(host->clk)) {
 		ret = PTR_ERR(host->clk);
 		goto out;
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index ce96c09..318a2bf 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -433,6 +433,12 @@ config MTD_NAND_SH_FLCTL
 	  Several Renesas SuperH CPU has FLCTL. This option enables support
 	  for NAND Flash using FLCTL. This driver support SH7723.
 
+config MTD_NAND_SCB9XXX
+	tristate "NAND flash support for SCB9xxx board"
+	depends on MTD_NAND && (MACH_SCB9520 || MACH_SCB9320)
+	help
+	  NAND support for SCB9xxx board
+
 config MTD_NAND_DAVINCI
         tristate "Support NAND on DaVinci SoC"
         depends on ARCH_DAVINCI
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index f3a786b..c500c23 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -38,6 +38,7 @@ obj-$(CONFIG_MTD_NAND_FSL_ELBC)		+= fsl_elbc_nand.o
 obj-$(CONFIG_MTD_NAND_FSL_UPM)		+= fsl_upm.o
 obj-$(CONFIG_MTD_NAND_SH_FLCTL)		+= sh_flctl.o
 obj-$(CONFIG_MTD_NAND_MXC)		+= mxc_nand.o
+obj-$(CONFIG_MTD_NAND_SCB9XXX)		+= scb9xxx.o
 obj-$(CONFIG_MTD_NAND_SOCRATES)		+= socrates_nand.o
 obj-$(CONFIG_MTD_NAND_TXX9NDFMC)	+= txx9ndfmc.o
 
diff --git a/drivers/mtd/nand/scb9xxx.c b/drivers/mtd/nand/scb9xxx.c
new file mode 100644
index 0000000..037d6c2
--- /dev/null
+++ b/drivers/mtd/nand/scb9xxx.c
@@ -0,0 +1,293 @@
+/*
+ *   drivers/mtd/nand/scb9xxx.c
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   Copyright (c) by Torsten Koschorrek <koschorrek@synertronixx.de>
+ *
+ *   NAND Flash driver for scb9320 and scb9520 derives from:
+ *      1. Freescale Semiconductor Document Number: AN2416 Rev. 1, 11/2005
+ *         Application Note: NAND Flash Access MC9328MX1, ...
+ *         Examples 1-7
+ *      2. at91_nand.c: _exit and _probe functions
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/scb9xxx.h>
+#include <linux/io.h>
+#include <mach/hardware.h>
+#ifdef CONFIG_MACH_SCB9320
+#include <mach/scb9320.h>
+#else
+#include <mach/scb9520.h>
+#endif
+
+#undef SCB9XXX_DEBUG
+
+#ifdef CONFIG_MACH_SCB9320
+
+static void scb9xxx_nand_cle(struct mtd_info *mtd, int value)
+{
+	if (value)
+		DR(1) |= (1<<17);
+	else
+		DR(1) &= ~(1<<17);
+}
+
+static void scb9xxx_nand_ale(struct mtd_info *mtd, int value)
+{
+	if (value)
+		DR(1) |= (1<<18);
+	else
+		DR(1) &= ~(1<<18);
+}
+
+static int scb9xxx_nand_ryby(struct mtd_info *mtd)
+{
+	return ((SSR(1) & (1 << 15)) >> 15);
+}
+
+#else
+
+static void scb9xxx_nand_cle(struct mtd_info *mtd, int value)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+
+	if (value)
+		writeb(pdata->ce | 0x08, pdata->cmd_base);
+	else
+		writeb(pdata->ce,        pdata->cmd_base);
+}
+
+static void scb9xxx_nand_ale(struct mtd_info *mtd, int value)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+
+	if (value)
+		writeb(pdata->ce | 0x04, pdata->cmd_base);
+	else
+		writeb(pdata->ce,        pdata->cmd_base);
+}
+
+static int scb9xxx_nand_ryby(struct mtd_info *mtd)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+	int notrdy = pdata->rdy;
+	int val = readb(pdata->cmd_base);
+
+	return !(val & notrdy);
+}
+
+#endif
+
+static void scb9xxx_nand_chip(struct mtd_info *mtd, int chip)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+
+	switch (chip) {
+	case 1:
+		pdata->ce = pdata->ce2;
+		break;
+	case 0:
+	default:
+		pdata->ce = pdata->ce1;
+		break;
+	}
+
+	return;
+}
+
+static void scb9xxx_nand_cmd_ctrl(struct mtd_info *mtd, int cmd,
+				   unsigned int ctrl)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+
+	if (ctrl & NAND_CLE) {
+		scb9xxx_nand_cle(mtd, 1);
+		writeb(cmd, pdata->io_base);
+		scb9xxx_nand_cle(mtd, 0);
+		return;
+	}
+
+        if (ctrl & NAND_ALE) {
+		scb9xxx_nand_ale(mtd, 1);
+		writeb(cmd, pdata->io_base);
+		scb9xxx_nand_ale(mtd, 0);
+		return;
+	}
+
+	return;
+}
+
+static void scb9xxx_nand_select_chip(struct mtd_info *mtd, int chip)
+{
+	scb9xxx_nand_chip(mtd, chip);
+
+	return;
+}
+
+static int scb9xxx_nand_dev_ready(struct mtd_info *mtd)
+{
+	return scb9xxx_nand_ryby(mtd);
+}
+
+#ifdef SCB9XXX_DEBUG
+
+/******************************************************************************
+ *   nand-flash init and test functions
+ *****************************************************************************/
+
+static void scb9xxx_nand_read_id(struct mtd_info *mtd)
+{
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+	int i;
+
+	for (i = 0; i < pdata->nr_chips; i++) {
+		scb9xxx_nand_select_chip(mtd, i);
+		scb9xxx_nand_cmd_ctrl(mtd, NAND_CMD_READID, NAND_CLE);
+		scb9xxx_nand_cmd_ctrl(mtd, NAND_CMD_READ0, NAND_ALE);
+
+		printk("scb9xxx_nand: Chip No #%i ", i);
+		printk("VendorID 0x%02x DeviceID 0x%02x ",
+		       readb(pdata->io_base),
+		       readb(pdata->io_base));
+		printk("Signature Byte2 0x%02x Signature Byte3 0x%02x\n",
+		       readb(pdata->io_base),
+		       readb(pdata->io_base));
+
+		/* disable nce */
+		writeb(0x00, pdata->cmd_base);
+	}
+}
+
+#endif
+
+/******************************************************************************
+ * module init/probe and exit functions
+ *****************************************************************************/
+
+static int __devinit scb9xxx_nand_probe(struct platform_device *pdev)
+{
+	struct mtd_info *mtd;
+	struct nand_chip *nand_chip;
+	struct scb9xxx_nand_pdata *pdata;
+	int res;
+#ifdef CONFIG_MTD_PARTITIONS
+	struct mtd_partition *partitions = NULL;
+	int num_partitions = 0;
+#endif
+
+	mtd = kzalloc(sizeof(struct mtd_info), GFP_KERNEL);
+	nand_chip = kzalloc(sizeof(struct nand_chip), GFP_KERNEL);
+
+	platform_set_drvdata(pdev, mtd);
+	pdata = pdev->dev.platform_data;
+
+	pdata->io_base = scb9xxx_nand_ioremap(pdev->resource[0]);
+	pdata->cmd_base = scb9xxx_nand_ioremap(pdev->resource[1]);
+
+	if ((pdata->io_base == NULL) || (pdata->cmd_base == NULL)) {
+		printk(KERN_ERR "scb9xxx_nand: ioremap failed\n");
+		return -EIO;
+	}
+
+	nand_chip->IO_ADDR_R = pdata->io_base;
+	nand_chip->IO_ADDR_W = pdata->io_base;
+	nand_chip->cmd_ctrl = scb9xxx_nand_cmd_ctrl;
+	nand_chip->select_chip = scb9xxx_nand_select_chip;
+	nand_chip->dev_ready = scb9xxx_nand_dev_ready;
+	nand_chip->ecc.mode = NAND_ECC_SOFT;
+	nand_chip->priv = pdata;
+
+	mtd->priv = nand_chip;
+	mtd->subpage_sft = 0;
+	mtd->owner = THIS_MODULE;
+
+#ifdef SCB9XXX_DEBUG
+	scb9xxx_nand_read_id(mtd);
+#endif
+
+	nand_chip->numchips = (pdev!= NULL) ? pdata->nr_chips : 1;
+	if (nand_scan(mtd, nand_chip->numchips)) {
+		res = -ENXIO;
+		goto out;
+	}
+
+#ifdef CONFIG_MTD_PARTITIONS
+	if (pdata->partition_info)
+		partitions = pdata->partition_info(mtd->size,
+							 &num_partitions);
+
+	if ((!partitions) || (num_partitions == 0)) {
+		printk(KERN_ERR "scb9xxx_nand: "
+		       "No parititions defined, or unsupported device.\n");
+		res = ENXIO;
+		goto release;
+	}
+
+	res = add_mtd_partitions(mtd, partitions, num_partitions);
+#else
+	res = add_mtd_device(mtd);
+#endif
+
+	if (!res)
+		return res;
+
+release:
+	nand_release(mtd);
+out:
+	platform_set_drvdata(pdev, NULL);
+	iounmap(pdata->io_base);
+	iounmap(pdata->cmd_base);
+	return res;
+}
+
+static int __devexit scb9xxx_nand_remove(struct platform_device *pdev)
+{
+	struct mtd_info *mtd = platform_get_drvdata(pdev);
+	struct scb9xxx_nand_pdata *pdata = scb9xxx_nand_get_pdata(mtd);
+
+	nand_release(mtd);
+
+	iounmap(pdata->io_base);
+	iounmap(pdata->cmd_base);
+
+	return 0;
+}
+
+static struct platform_driver scb9xxx_nand_driver = {
+	.probe = scb9xxx_nand_probe,
+	.remove = scb9xxx_nand_remove,
+	.driver = {
+		.name = "nand",
+		.owner = THIS_MODULE,
+	}
+};
+
+static int __init scb9xxx_nand_init(void)
+{
+	printk(KERN_INFO "scb9xxx NAND flash driver\n");
+
+	return platform_driver_register(&scb9xxx_nand_driver);
+}
+
+static void __exit scb9xxx_nand_exit(void)
+{
+	platform_driver_unregister(&scb9xxx_nand_driver);
+}
+
+module_init(scb9xxx_nand_init);
+module_exit(scb9xxx_nand_exit);
+
+MODULE_AUTHOR("Torsten Koschorrek <koschorrek@synertronixx.de>");
+MODULE_DESCRIPTION("NAND/Flash driver for synertronixx scb9xxx");
+MODULE_LICENSE("GPL");
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c
index a48a8a1..385e9f7 100644
--- a/drivers/serial/pxa.c
+++ b/drivers/serial/pxa.c
@@ -682,7 +682,7 @@ serial_pxa_console_setup(struct console *co, char *options)
 }
 
 static struct console serial_pxa_console = {
-	.name		= "ttyS",
+	.name		= "ttySA",
 	.write		= serial_pxa_console_write,
 	.device		= uart_console_device,
 	.setup		= serial_pxa_console_setup,
@@ -719,9 +719,9 @@ struct uart_ops serial_pxa_pops = {
 static struct uart_driver serial_pxa_reg = {
 	.owner		= THIS_MODULE,
 	.driver_name	= "PXA serial",
-	.dev_name	= "ttyS",
+	.dev_name	= "ttySA",
 	.major		= TTY_MAJOR,
-	.minor		= 64,
+	.minor		= 66,
 	.nr		= 4,
 	.cons		= PXA_CONSOLE,
 };
diff --git a/include/linux/mtd/scb9xxx.h b/include/linux/mtd/scb9xxx.h
new file mode 100644
index 0000000..c1c9963
--- /dev/null
+++ b/include/linux/mtd/scb9xxx.h
@@ -0,0 +1,16 @@
+#define scb9xxx_nand_ioremap(res) ioremap(res.start, res.end - res.start + 1)
+
+#define scb9xxx_nand_get_pdata(mtd) (((struct nand_chip *)(mtd->priv))->priv)
+
+struct scb9xxx_nand_pdata {
+	void __iomem          *io_base;		/* mapped io address */
+	void __iomem          *cmd_base;	/* mapped cmd address */
+	int                   ce;
+	int                   ce1;
+	int                   ce2;
+	int                   ale;
+	int                   cle;
+	int                   rdy;
+	int                   nr_chips;
+	struct mtd_partition* (*partition_info)(int, int*);
+};
