diff --git a/.config b/.config
deleted file mode 100644
index 83e1515..0000000
--- a/.config
+++ /dev/null
@@ -1,2278 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux/arm 3.0.8 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_HAVE_PWM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_NO_IOPORT=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_ARCH_HAS_CPUFREQ=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_HAVE_IRQ_WORK=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_DEFAULT_HOSTNAME="(none)"
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_FHANDLE is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_HAVE_SPARSE_IRQ=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_CHIP=y
-# CONFIG_SPARSE_IRQ is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_PREEMPT_RCU=y
-# CONFIG_TINY_RCU is not set
-# CONFIG_TINY_PREEMPT_RCU is not set
-CONFIG_PREEMPT_RCU=y
-# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_BOOST is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=17
-CONFIG_CGROUPS=y
-CONFIG_CGROUP_DEBUG=y
-CONFIG_CGROUP_FREEZER=y
-# CONFIG_CGROUP_DEVICE is not set
-# CONFIG_CPUSETS is not set
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
-# CONFIG_CGROUP_MEM_RES_CTLR is not set
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_RT_GROUP_SCHED=y
-# CONFIG_BLK_CGROUP is not set
-# CONFIG_NAMESPACES is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_PANIC_TIMEOUT=0
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-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_ASHMEM=y
-CONFIG_AIO=y
-CONFIG_EMBEDDED=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-# CONFIG_PERF_EVENTS is not set
-# CONFIG_PERF_COUNTERS is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-
-#
-# GCOV-based kernel profiling
-#
-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_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_SPIN_UNLOCK is not set
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_READ_UNLOCK is not set
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_WRITE_UNLOCK is not set
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX 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_MXS 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_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LOKI is not set
-# CONFIG_ARCH_LPC32XX 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_W90X900 is not set
-# CONFIG_ARCH_NUC93X is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE 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_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-CONFIG_ARCH_S5PV210=y
-# CONFIG_ARCH_EXYNOS4 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-CONFIG_PLAT_SAMSUNG=y
-
-#
-# Boot options
-#
-# CONFIG_S3C_BOOT_WATCHDOG is not set
-# CONFIG_S3C_BOOT_ERROR_RESET is not set
-CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
-CONFIG_S3C_LOWLEVEL_UART_PORT=2
-CONFIG_SAMSUNG_CLKSRC=y
-CONFIG_SAMSUNG_IRQ_VIC_TIMER=y
-CONFIG_SAMSUNG_IRQ_UART=y
-CONFIG_SAMSUNG_GPIOLIB_4BIT=y
-CONFIG_S3C_GPIO_CFG_S3C24XX=y
-CONFIG_S3C_GPIO_CFG_S3C64XX=y
-CONFIG_S3C_GPIO_PULL_UPDOWN=y
-CONFIG_S5P_GPIO_DRVSTR=y
-CONFIG_SAMSUNG_GPIO_EXTRA=0
-CONFIG_S3C_GPIO_SPACE=0
-CONFIG_S3C_GPIO_TRACK=y
-# CONFIG_S3C_ADC is not set
-CONFIG_S3C_DEV_HSMMC=y
-CONFIG_S3C_DEV_HSMMC1=y
-CONFIG_S3C_DEV_HSMMC2=y
-CONFIG_S3C_DEV_HSMMC3=y
-CONFIG_S3C_DEV_I2C1=y
-CONFIG_S3C_DEV_I2C2=y
-CONFIG_S3C_DEV_FB=y
-CONFIG_S3C_DEV_WDT=y
-CONFIG_S3C_DEV_NAND=y
-CONFIG_S3C_DEV_RTC=y
-CONFIG_SAMSUNG_DEV_ADC=y
-CONFIG_S3C64XX_DEV_SPI=y
-CONFIG_SAMSUNG_DEV_TS=y
-CONFIG_SAMSUNG_DEV_PWM=y
-CONFIG_S3C24XX_PWM=y
-CONFIG_S3C_PL330_DMA=y
-
-#
-# Power management
-#
-# CONFIG_SAMSUNG_PM_DEBUG is not set
-# CONFIG_SAMSUNG_PM_CHECK is not set
-
-#
-# Power Domain
-#
-# CONFIG_SAMSUNG_PD is not set
-CONFIG_PLAT_S5P=y
-CONFIG_S5P_EXT_INT=y
-CONFIG_S5P_HRT=y
-
-#
-# System MMU
-#
-CONFIG_S5P_DEV_USB_EHCI=y
-CONFIG_S5P_DEV_USB_OHCI=y
-CONFIG_S5P_HIGH_RES_TIMERS=y
-CONFIG_HRT_RTC=y
-CONFIG_S5P_DEV_MFC=y
-CONFIG_S5P_SETUP_MFC=y
-CONFIG_S5P_DEV_USB_HSDEVICE=y
-CONFIG_CPU_S5PV210=y
-CONFIG_S5PV210_SETUP_I2C1=y
-CONFIG_S5PV210_SETUP_I2C2=y
-CONFIG_S5PV210_SETUP_IDE=y
-CONFIG_S5PV210_SETUP_FB_24BPP=y
-CONFIG_S5PV210_SETUP_SDHCI=y
-CONFIG_S5PV210_SETUP_SDHCI_GPIO=y
-CONFIG_S5PV210_SETUP_FIMC=y
-CONFIG_S5PV210_SETUP_USB_PHY=y
-CONFIG_S5PV210_POWER_DOMAIN=y
-
-#
-# S5PC110 Machines
-#
-# CONFIG_MACH_AQUILA is not set
-# CONFIG_MACH_GONI is not set
-# CONFIG_MACH_SMDKC110 is not set
-
-#
-# S5PV210 Machines
-#
-CONFIG_MACH_SMDKV210=y
-# CONFIG_MACH_TORBRECK is not set
-CONFIG_S5PV210_PM=y
-CONFIG_S5PV210_SETUP_FIMC0=y
-CONFIG_S5PV210_SETUP_FIMC1=y
-CONFIG_S5PV210_SETUP_FIMC2=y
-CONFIG_S5PV210_SETUP_CSIS=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMBEE is not set
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_CPU_HAS_PMU=y
-# CONFIG_ARM_ERRATA_430973 is not set
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-CONFIG_ARM_VIC=y
-CONFIG_ARM_VIC_NR=4
-CONFIG_PL330=y
-# CONFIG_FIQ_DEBUGGER 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_NONE is not set
-# CONFIG_PREEMPT_VOLUNTARY is not set
-CONFIG_PREEMPT=y
-CONFIG_HZ=200
-# CONFIG_THUMB2_KERNEL is not set
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_DEFAULT=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_SPARSEMEM_MANUAL=y
-CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
-CONFIG_SPARSEMEM_EXTREME=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-# CONFIG_ARM_FLUSH_CONSOLE_ON_RESTART is not set
-
-#
-# Boot options
-#
-# CONFIG_USE_OF is not set
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_CMDLINE="console=ttySAC2,115200 init=/init"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_AUTO_ZRELADDR=y
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-# 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
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_HAVE_AOUT=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_HAS_WAKELOCK=y
-CONFIG_HAS_EARLYSUSPEND=y
-CONFIG_WAKELOCK=y
-CONFIG_WAKELOCK_STAT=y
-CONFIG_USER_WAKELOCK=y
-CONFIG_EARLYSUSPEND=y
-# CONFIG_NO_USER_SPACE_SCREEN_ACCESS_CONTROL is not set
-# CONFIG_CONSOLE_EARLYSUSPEND is not set
-CONFIG_FB_EARLYSUSPEND=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM_EMULATION is not set
-CONFIG_PM_RUNTIME_CLK=y
-# CONFIG_SUSPEND_TIME is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_PACKET is not set
-# CONFIG_UNIX is not set
-# CONFIG_NET_KEY is not set
-# CONFIG_INET is not set
-CONFIG_ANDROID_PARANOID_NETWORK=y
-CONFIG_NET_ACTIVITY_STATS=y
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_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
-# CONFIG_DNS_RESOLVER is not set
-# CONFIG_BATMAN_ADV 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_WIRELESS=y
-# CONFIG_CFG80211 is not set
-# CONFIG_LIB80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_RFKILL_REGULATOR is not set
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=0
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-# CONFIG_MTD_CHAR is not set
-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_SM_FTL is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS 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_IDS=y
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_S3C=y
-CONFIG_MTD_NAND_S3C_DEBUG=y
-CONFIG_MTD_NAND_S3C_HWECC=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_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_UBI is not set
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-
-#
-# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
-#
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MG_DISK is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_AD525X_DPOT is not set
-CONFIG_ANDROID_PMEM=y
-
-#
-# Reserved memory configurations
-#
-CONFIG_ANDROID_PMEM_MEMSIZE_PMEM=8192
-CONFIG_ANDROID_PMEM_MEMSIZE_PMEM_GPU1=3072
-CONFIG_ANDROID_PMEM_MEMSIZE_PMEM_ADSP=6144
-# CONFIG_INTEL_MID_PTI is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_SENSORS_AK8975 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_UID_STAT is not set
-# CONFIG_BMP085 is not set
-# CONFIG_APANIC is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-# CONFIG_EEPROM_AT24 is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_IWMC3200TOP is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-# CONFIG_TI_ST is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_ISCSI_BOOT_SYSFS is not set
-# CONFIG_LIBFC is not set
-# CONFIG_LIBFCOE is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
-# CONFIG_NETDEVICES is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-# CONFIG_INPUT_SPARSEKMAP is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_KEYRESET is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_PS2_ELANTECH is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-CONFIG_TOUCHSCREEN_FORLINX=y
-CONFIG_TOUCHSCREEN_FT5306=y
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_EGALAX is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_S3C2410 is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_MAX11801 is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_WM97XX is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-CONFIG_DEVMEM=y
-CONFIG_DEVKMEM=y
-CONFIG_FL210_LEDS=y
-CONFIG_FL210_HELLO_MODULE=y
-# CONFIG_FL210_BUZZER is not set
-CONFIG_FL210_ADC=y
-CONFIG_FL210_TEM=y
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SAMSUNG=y
-CONFIG_SERIAL_SAMSUNG_UARTS_4=y
-CONFIG_SERIAL_SAMSUNG_UARTS=4
-CONFIG_SERIAL_SAMSUNG_CONSOLE=y
-CONFIG_SERIAL_S5PV210=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_TTY_PRINTK is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_DCC_TTY is not set
-# CONFIG_RAMOOPS is not set
-CONFIG_S3C_MEM=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_DESIGNWARE is not set
-CONFIG_I2C_GPIO=y
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-CONFIG_HAVE_S3C2410_I2C=y
-CONFIG_I2C_S3C2410=y
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# 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_STUB 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_SPI is not set
-
-#
-# PPS support
-#
-# CONFIG_PPS is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-
-#
-# Enable Device Drivers -> PPS to see the PTP clock options.
-#
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIOLIB=y
-# CONFIG_GPIO_SYSFS is not set
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_BASIC_MMIO is not set
-# CONFIG_GPIO_IT8761E is not set
-CONFIG_GPIO_PLAT_SAMSUNG=y
-CONFIG_GPIO_S5PV210=y
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_ADP5588 is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_BQ20Z75 is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-CONFIG_BATTERY_S3C=y
-# CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_GPIO is not set
-# CONFIG_HWMON is not set
-# CONFIG_THERMAL is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_HAVE_S3C2410_WATCHDOG=y
-CONFIG_S3C2410_WATCHDOG=y
-# CONFIG_MAX63XX_WATCHDOG is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_88PM860X 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_HTC_I2CPLD is not set
-# CONFIG_UCB1400_CORE is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_TC3589X 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_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8698 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_TPS65910 is not set
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_DEBUG=y
-# CONFIG_REGULATOR_DUMMY is not set
-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_AD5398 is not set
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-# CONFIG_MEDIA_CONTROLLER is not set
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2_COMMON=y
-CONFIG_VIDEO_MEDIA=y
-
-#
-# Multimedia drivers
-#
-CONFIG_RC_CORE=y
-CONFIG_LIRC=y
-CONFIG_RC_MAP=y
-CONFIG_IR_NEC_DECODER=y
-CONFIG_IR_RC5_DECODER=y
-CONFIG_IR_RC6_DECODER=y
-CONFIG_IR_JVC_DECODER=y
-CONFIG_IR_SONY_DECODER=y
-CONFIG_IR_RC5_SZ_DECODER=y
-CONFIG_IR_LIRC_CODEC=y
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_RC_LOOPBACK is not set
-# CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
-CONFIG_MEDIA_TUNER_CUSTOMISE=y
-
-#
-# Customize TV tuners
-#
-# CONFIG_MEDIA_TUNER_SIMPLE is not set
-# CONFIG_MEDIA_TUNER_TDA8290 is not set
-# CONFIG_MEDIA_TUNER_TDA827X is not set
-# CONFIG_MEDIA_TUNER_TDA18271 is not set
-# CONFIG_MEDIA_TUNER_TDA9887 is not set
-# CONFIG_MEDIA_TUNER_TEA5761 is not set
-# CONFIG_MEDIA_TUNER_TEA5767 is not set
-# CONFIG_MEDIA_TUNER_MT20XX is not set
-# CONFIG_MEDIA_TUNER_MT2060 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MT2131 is not set
-# CONFIG_MEDIA_TUNER_QT1010 is not set
-# CONFIG_MEDIA_TUNER_XC2028 is not set
-# CONFIG_MEDIA_TUNER_XC5000 is not set
-# CONFIG_MEDIA_TUNER_MXL5005S is not set
-# CONFIG_MEDIA_TUNER_MXL5007T is not set
-# CONFIG_MEDIA_TUNER_MC44S803 is not set
-# CONFIG_MEDIA_TUNER_MAX2165 is not set
-# CONFIG_MEDIA_TUNER_TDA18218 is not set
-# CONFIG_MEDIA_TUNER_TDA18212 is not set
-CONFIG_VIDEO_V4L2=y
-CONFIG_VIDEOBUF_GEN=y
-CONFIG_VIDEOBUF2_CORE=y
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_FIXED_MINOR_RANGES=y
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-CONFIG_VIDEO_IR_I2C=y
-
-#
-# Encoders, decoders, sensors and other helper chips
-#
-
-#
-# Audio decoders, processors and mixers
-#
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-
-#
-# RDS decoders
-#
-# CONFIG_VIDEO_SAA6588 is not set
-
-#
-# Video decoders
-#
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_VPX3220 is not set
-
-#
-# Video and audio decoders
-#
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_CX25840 is not set
-
-#
-# MPEG video encoders
-#
-# CONFIG_VIDEO_CX2341X is not set
-
-#
-# Video encoders
-#
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_AK881X is not set
-
-#
-# Camera sensor devices
-#
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_TCM825X is not set
-
-#
-# Video improvement chips
-#
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Miscelaneous helper chips
-#
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-CONFIG_SOC_CAMERA=y
-# CONFIG_SOC_CAMERA_IMX074 is not set
-# CONFIG_SOC_CAMERA_MT9M001 is not set
-# CONFIG_SOC_CAMERA_MT9M111 is not set
-# CONFIG_SOC_CAMERA_MT9T031 is not set
-# CONFIG_SOC_CAMERA_MT9T112 is not set
-# CONFIG_SOC_CAMERA_MT9V022 is not set
-# CONFIG_SOC_CAMERA_RJ54N1 is not set
-# CONFIG_SOC_CAMERA_TW9910 is not set
-# CONFIG_SOC_CAMERA_PLATFORM is not set
-# CONFIG_SOC_CAMERA_OV2640 is not set
-# CONFIG_SOC_CAMERA_OV6650 is not set
-# CONFIG_SOC_CAMERA_OV772X is not set
-CONFIG_SOC_CAMERA_OV9640=y
-# CONFIG_SOC_CAMERA_OV9740 is not set
-# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
-# CONFIG_VIDEO_SH_MOBILE_CEU is not set
-# CONFIG_VIDEO_SAMSUNG_S5P_FIMC is not set
-CONFIG_V4L_USB_DRIVERS=y
-CONFIG_USB_VIDEO_CLASS=y
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=y
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_VIDEO_S5K4BA is not set
-# CONFIG_VIDEO_S5KA3DFX is not set
-# CONFIG_VIDEO_S5K4ECGX is not set
-CONFIG_VIDEO_SAMSUNG=y
-CONFIG_VIDEO_SAMSUNG_V4L2=y
-CONFIG_VIDEO_FIMC=y
-CONFIG_VIDEO_FIMC_RANGE_NARROW=y
-# CONFIG_VIDEO_FIMC_RANGE_WIDE is not set
-# CONFIG_VIDEO_FIMC_DEBUG is not set
-# CONFIG_VIDEO_FIMC_MIPI is not set
-CONFIG_VIDEO_MFC50=y
-CONFIG_VIDEO_MFC_MAX_INSTANCE=4
-# CONFIG_VIDEO_MFC50_DEBUG is not set
-CONFIG_VIDEO_G2D=y
-# CONFIG_VIDEO_G2D_DEBUG is not set
-CONFIG_VIDEO_JPEG_V2=y
-# CONFIG_VIDEO_JPEG_DEBUG is not set
-CONFIG_VIDEO_TV20=y
-CONFIG_HDMI_CEC=y
-CONFIG_HDMI_HPD=y
-# CONFIG_TV_FB is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SI470X is not set
-# CONFIG_USB_MR800 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-
-#
-# Graphics support
-#
-# CONFIG_DRM is not set
-# CONFIG_ION is not set
-CONFIG_PVR_SGX=y
-CONFIG_PVR_BUILD_RELEASE=y
-# CONFIG_PVR_BUILD_DEBUG is not set
-CONFIG_PVR_NEED_PVR_DPF=y
-CONFIG_PVR_NEED_PVR_ASSERT=y
-CONFIG_PVR_PERCONTEXT_PB=y
-CONFIG_PVR_ACTIVE_POWER_MANAGEMENT=y
-CONFIG_PVR_ACTIVE_POWER_LATENCY_MS=100
-CONFIG_PVR_SGX_LOW_LATENCY_SCHEDULING=y
-CONFIG_PVR_USSE_EDM_STATUS_DEBUG=y
-CONFIG_PVR_DUMP_MK_TRACE=y
-# CONFIG_PVR_PDUMP is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_WMT_GE_ROPS is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-CONFIG_FB_S3C=y
-# CONFIG_FB_S3C_SPLASH_SCREEN is not set
-CONFIG_FB_S3C_LCD_INIT=y
-# CONFIG_FB_S3C_DEBUG is not set
-# CONFIG_FB_S3C_TRACE_UNDERRUN is not set
-CONFIG_FB_S3C_DEFAULT_WINDOW=2
-CONFIG_FB_S3C_NR_BUFFERS=2
-CONFIG_FB_S3C_NUM_OVLY_WIN=1
-CONFIG_FB_S3C_NUM_BUF_OVLY_WIN=3
-# CONFIG_FB_S3C_VIRTUAL is not set
-# CONFIG_FB_S3C_LB070WV6 is not set
-CONFIG_FB_S3C_LTE480WV=y
-# CONFIG_FB_S3C_101WA01S is not set
-# CONFIG_FB_S3C_TL2796 is not set
-# CONFIG_FB_S3C_HT101HD1 is not set
-# CONFIG_FB_S3C_NT35580 is not set
-# CONFIG_FB_S3C_LVDS is not set
-# CONFIG_FB_S3C_AMS701KA is not set
-# CONFIG_FB_S3C_MDNIE is not set
-# CONFIG_FB_S3C_CMC623 is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_S3C_DEBUG_REGWRITE is not set
-# CONFIG_FB_UDL is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_BROADSHEET is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_PLATFORM is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-CONFIG_BACKLIGHT_PWM=y
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_JACK=y
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-CONFIG_SND_DEBUG_VERBOSE=y
-CONFIG_SND_PCM_XRUN_DEBUG=y
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_USB=y
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_6FIRE is not set
-CONFIG_SND_SOC=y
-# CONFIG_SND_SOC_CACHE_LZO is not set
-CONFIG_SND_SOC_AC97_BUS=y
-CONFIG_SND_SOC_SAMSUNG=y
-CONFIG_SND_SAMSUNG_AC97=y
-# CONFIG_SND_SOC_SAMSUNG_SMDK_WM8580 is not set
-# CONFIG_SND_SOC_SAMSUNG_SMDK_WM8960 is not set
-CONFIG_SND_SOC_SAMSUNG_SMDK_WM9713=y
-# CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF is not set
-# CONFIG_SND_SOC_SMDK_WM8580_PCM is not set
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_WM9713=y
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# Special HID drivers
-#
-# CONFIG_HID_A4TECH is not set
-# CONFIG_HID_ACRUX is not set
-# CONFIG_HID_APPLE is not set
-# CONFIG_HID_BELKIN is not set
-# CONFIG_HID_CHERRY is not set
-# CONFIG_HID_CHICONY is not set
-# CONFIG_HID_PRODIKEYS is not set
-# CONFIG_HID_CYPRESS is not set
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-# CONFIG_HID_EZKEY is not set
-# CONFIG_HID_KEYTOUCH is not set
-# CONFIG_HID_KYE is not set
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_TWINHAN is not set
-# CONFIG_HID_KENSINGTON is not set
-# CONFIG_HID_LCPOWER is not set
-# CONFIG_HID_LOGITECH is not set
-# CONFIG_HID_MICROSOFT is not set
-# CONFIG_HID_MONTEREY is not set
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_ROCCAT_ARVO is not set
-# CONFIG_HID_ROCCAT_KONE is not set
-# CONFIG_HID_ROCCAT_KONEPLUS is not set
-# CONFIG_HID_ROCCAT_KOVAPLUS is not set
-# CONFIG_HID_ROCCAT_PYRA is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_TOPSEED is not set
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# 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=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND 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_EHCI_HCD=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_EHCI_S5P=y
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_S5P=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_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-# CONFIG_USB_UAS is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK 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_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_SISUSBVGA 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_YUREX is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_FUSB300 is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-CONFIG_USB_GADGET_S3C_OTGD=y
-# CONFIG_USB_GADGET_PXA_U2O is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-
-#
-# NOTE: S3C OTG device role enables the controller driver below
-#
-CONFIG_USB_S3C_OTGD=y
-CONFIG_USB_GADGET_S3C_OTGD_DMA_MODE=y
-# CONFIG_USB_GADGET_S3C_OTGD_SLAVE_MODE is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_ETH is not set
-# CONFIG_USB_G_NCM is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_MASS_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-CONFIG_USB_G_ANDROID=y
-CONFIG_USB_ANDROID_RNDIS_DWORD_ALIGNED=y
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_WEBCAM is not set
-
-#
-# OTG and related infrastructure
-#
-# CONFIG_USB_OTG_WAKELOCK is not set
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ULPI is not set
-# CONFIG_NOP_USB_XCEIV is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-# CONFIG_MMC_EMBEDDED_SDIO is not set
-# CONFIG_MMC_PARANOID_SD_INIT is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_MMC_BLOCK_DEFERRED_RESUME is not set
-# CONFIG_SDIO_UART is not set
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_SDHCI_S3C=y
-CONFIG_MMC_SDHCI_S3C_DMA=y
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_PCA9532 is not set
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_GPIO_PLATFORM=y
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_PWM is not set
-# CONFIG_LEDS_REGULATOR is not set
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_LT3593 is not set
-CONFIG_LEDS_TRIGGERS=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-CONFIG_LEDS_TRIGGER_GPIO=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_LEDS_TRIGGER_SLEEP=y
-
-#
-# iptables trigger is under Netfilter config (LED target)
-#
-# CONFIG_NFC_DEVICES is not set
-CONFIG_SWITCH=m
-# CONFIG_SWITCH_GPIO is not set
-# CONFIG_ACCESSIBILITY 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_INTF_ALARM=y
-CONFIG_RTC_INTF_ALARM_DEV=y
-# 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_DS3232 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_ISL12022 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_BQ32K 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
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 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_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-CONFIG_HAVE_S3C_RTC=y
-CONFIG_RTC_DRV_S3C=y
-# CONFIG_DMADEVICES is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-CONFIG_STAGING=y
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_USBIP_CORE is not set
-# CONFIG_ECHO is not set
-# CONFIG_BRCMUTIL is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_TRANZPORT is not set
-
-#
-# Android
-#
-CONFIG_ANDROID=y
-CONFIG_ANDROID_BINDER_IPC=y
-CONFIG_ANDROID_LOGGER=y
-CONFIG_ANDROID_RAM_CONSOLE=y
-CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y
-# CONFIG_ANDROID_RAM_CONSOLE_ERROR_CORRECTION is not set
-# CONFIG_ANDROID_RAM_CONSOLE_EARLY_INIT is not set
-CONFIG_ANDROID_TIMED_OUTPUT=y
-# CONFIG_ANDROID_TIMED_GPIO is not set
-CONFIG_ANDROID_LOW_MEMORY_KILLER=y
-# CONFIG_POHMELFS is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_IIO is not set
-# CONFIG_XVMALLOC is not set
-# CONFIG_ZRAM is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_LIRC_STAGING is not set
-# CONFIG_EASYCAP is not set
-CONFIG_MACH_NO_WESTBRIDGE=y
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_XATTR=y
-# CONFIG_EXT4_FS_POSIX_ACL is not set
-# CONFIG_EXT4_FS_SECURITY is not set
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
-CONFIG_JBD2=y
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_QUOTACTL is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-CONFIG_GENERIC_ACL=y
-
-#
-# 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_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_TMPFS_XATTR=y
-# 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_ECRYPT_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_YAFFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-# CONFIG_LOGFS is not set
-CONFIG_CRAMFS=y
-# 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=y
-CONFIG_ROMFS_BACKED_BY_BLOCK=y
-# CONFIG_ROMFS_BACKED_BY_MTD is not set
-# CONFIG_ROMFS_BACKED_BY_BOTH is not set
-CONFIG_ROMFS_ON_BLOCK=y
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
-CONFIG_SOLARIS_X86_PARTITION=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-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 is not set
-# 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 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=1
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-CONFIG_STACKTRACE=y
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-CONFIG_RCU_CPU_STALL_VERBOSE=y
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_PREEMPT_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_ENABLE_DEFAULT_TRACERS is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_STACK_TRACER is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_ARM_UNWIND=y
-CONFIG_DEBUG_USER=y
-# CONFIG_OC_ETM is not set
-CONFIG_DEBUG_S3C_UART=2
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-# CONFIG_CRYPTO_FIPS is not set
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_MANAGER2 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_NULL is not set
-# 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 is not set
-# 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
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_GHASH 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=y
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_S5P is not set
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-# 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_LZO_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_DMA=y
-CONFIG_NLATTR=y
-CONFIG_AVERAGE=y
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index 17e6de6..601f11a 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -8,10 +8,9 @@
# Configuration options for the S5PV210/S5PC110
if ARCH_S5PV210
-# jhk add s3c_dev_nand
+
config CPU_S5PV210
bool
-
select S3C_PL330_DMA
select S5P_EXT_INT
select S5P_HRT
@@ -157,7 +156,6 @@ config MACH_SMDKV210
select HAVE_PWM
select SAMSUNG_DEV_PWM
select SAMSUNG_DEV_TS
-
select S3C_DEV_NAND
select S5PV210_SETUP_FB_24BPP
select S5PV210_SETUP_I2C1
select S5PV210_SETUP_I2C2
diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c
index fda0758..173f28b 100644
--- a/arch/arm/mach-s5pv210/clock.c
+++ b/arch/arm/mach-s5pv210/clock.c
@@ -409,13 +409,6 @@ static struct clk init_clocks_off[] = {
.enable
= s5pv210_clk_ip1_ctrl,
.ctrlbit
= (1<<16),
}, {
-
.name
= "nand",
-
.id
= -1,
-
.parent
= &clk_hclk_psys.clk,
-
.enable
= s5pv210_clk_ip1_ctrl,
-
.ctrlbit
= ((1 << 28) | (1 << 24)),
-
.dev
= &s3c_device_nand.dev,
-
}, {
.name
= "usbhost",
.id
= -1,
.parent
= &clk_hclk_psys.clk,
diff --git a/arch/arm/mach-s5pv210/include/mach/map.h b/arch/arm/mach-s5pv210/include/mach/map.h
index 189a3d3..83e08d7 100755
--- a/arch/arm/mach-s5pv210/include/mach/map.h
+++ b/arch/arm/mach-s5pv210/include/mach/map.h
@@ -29,11 +29,7 @@
#define S5PC110_PA_ONENAND
0xB0000000
#define S5PC110_PA_ONENAND_DMA
0xB0600000
-/* NAND //jhk*/
-#define S5PV210_PA_NAND
(0xB0E00000)
-#define S5P_PA_NAND
S5PV210_PA_NAND
-#define S5PV210_SZ_NAND
SZ_1M
-#define S5P_SZ_NAND
S5PV210_SZ_NAND
+
#define S5PV210_PA_CHIPID
0xE0000000
#define S5PV210_PA_SYSCON
0xE0100000
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c
index e9b26fb..bc39222 100755
--- a/arch/arm/mach-s5pv210/mach-smdkv210.c
+++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
@@ -1204,9 +1204,6 @@ static struct platform_device *mango210_devices[] __initdata = {
//#ifdef CONFIG_SND_S3C_SOC_PCM
&s5pv210_device_pcm0,
//#endif
-#if defined CONFIG_MTD_NAND_S3C
-
&s3c_device_nand, //jhk
-#endif
&s3c_device_rtc,
&s3c_device_ts,
&s3c_device_wdt,
@@ -1647,9 +1644,6 @@ static void __init mango210_map_io(void)
#ifndef CONFIG_S5P_HIGH_RES_TIMERS
s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
#endif
-#ifdef CONFIG_MTD_NAND_S3C
-
s3c_device_nand.name = "s5pv210-nand";
-#endif
s5p_reserve_bootmem(s5pv210_media_devs,
ARRAY_SIZE(s5pv210_media_devs), S5P_RANGE_MFC);
}
diff --git a/arch/arm/plat-s5p/devs.c b/arch/arm/plat-s5p/devs.c
index 6e9875f..e06f5ac 100755
--- a/arch/arm/plat-s5p/devs.c
+++ b/arch/arm/plat-s5p/devs.c
@@ -85,21 +85,6 @@ static int __init ethaddr_setup(char *line)
}
__setup("ethaddr=", ethaddr_setup);
#endif
-/* NAND Controller by jhk */
-static struct resource s3c_nand_resource[] = {
-
[0] = {
-
.start
= S5P_PA_NAND,
-
.end
= S5P_PA_NAND + S5P_SZ_NAND - 1,
-
.flags
= IORESOURCE_MEM,
-
}
-};
-
-struct platform_device s3c_device_nand = {
-
.name
= "s5pv210-nand",
-
.id
= -1,
-
.num_resources
= ARRAY_SIZE(s3c_nand_resource),
-
.resource
= s3c_nand_resource,
-};
#if defined(CONFIG_VIDEO_FIMC) || defined(CONFIG_CPU_FREQ) /* TODO: use existing dev */
static struct resource s3c_fimc0_resource[] = {
[0] = {
diff --git a/arch/arm/plat-s5p/include/plat/regs-nand.h b/arch/arm/plat-s5p/include/plat/regs-nand.h
deleted file mode 100644
index 2db2923..0000000
--- a/arch/arm/plat-s5p/include/plat/regs-nand.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* arch/arm/plat-s5p/include/plat/regs-nand.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *
http://www.samsung.com/
- *
- * Register definition file for Samsung NAND driver
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARM_REGS_S5P_NAND
-#define __ASM_ARM_REGS_S5P_NAND
-
-
-#define S5P_NFREG(x) (x)
-
-/* for s3c_nand.c */
-#define S3C_NFCONF
S5P_NFREG(0x00)
-#define S3C_NFCONT
S5P_NFREG(0x04)
-#define S3C_NFCMMD
S5P_NFREG(0x08)
-#define S3C_NFADDR
S5P_NFREG(0x0c)
-#define S3C_NFDATA8
S5P_NFREG(0x10)
-#define S3C_NFDATA
S5P_NFREG(0x10)
-#define S3C_NFMECCDATA0
S5P_NFREG(0x14)
-#define S3C_NFMECCDATA1
S5P_NFREG(0x18)
-#define S3C_NFSECCDATA
S5P_NFREG(0x1c)
-#define S3C_NFSBLK
S5P_NFREG(0x20)
-#define S3C_NFEBLK
S5P_NFREG(0x24)
-#define S3C_NFSTAT
S5P_NFREG(0x28)
-#define S3C_NFMECCERR0
S5P_NFREG(0x2c)
-#define S3C_NFMECCERR1
S5P_NFREG(0x30)
-#define S3C_NFMECC0
S5P_NFREG(0x34)
-#define S3C_NFMECC1
S5P_NFREG(0x38)
-#define S3C_NFSECC
S5P_NFREG(0x3c)
-#define S3C_NFMLCBITPT
S5P_NFREG(0x40)
-#define S3C_NF8ECCERR0
S5P_NFREG(0x44)
-#define S3C_NF8ECCERR1
S5P_NFREG(0x48)
-#define S3C_NF8ECCERR2
S5P_NFREG(0x4C)
-#define S3C_NFM8ECC0
S5P_NFREG(0x50)
-#define S3C_NFM8ECC1
S5P_NFREG(0x54)
-#define S3C_NFM8ECC2
S5P_NFREG(0x58)
-#define S3C_NFM8ECC3
S5P_NFREG(0x5C)
-#define S3C_NFMLC8BITPT0
S5P_NFREG(0x60)
-#define S3C_NFMLC8BITPT1
S5P_NFREG(0x64)
-
-#define S3C_NFCONF_NANDBOOT
(1<<31)
-#define S3C_NFCONF_ECCCLKCON
(1<<30)
-#define S3C_NFCONF_ECC_MLC
(1<<24)
-#define S3C_NFCONF_ECC_1BIT
(0<<23)
-#define S3C_NFCONF_ECC_4BIT
(2<<23)
-#define S3C_NFCONF_ECC_8BIT
(1<<23)
-#define S3C_NFCONF_TACLS(x)
((x)<<12)
-#define S3C_NFCONF_TWRPH0(x)
((x)<<8)
-#define S3C_NFCONF_TWRPH1(x)
((x)<<4)
-#define S3C_NFCONF_ADVFLASH
(1<<3)
-#define S3C_NFCONF_PAGESIZE
(1<<2)
-#define S3C_NFCONF_ADDRCYCLE
(1<<1)
-#define S3C_NFCONF_BUSWIDTH
(1<<0)
-
-#define S3C_NFCONT_ECC_ENC
(1<<18)
-#define S3C_NFCONT_LOCKTGHT
(1<<17)
-#define S3C_NFCONT_LOCKSOFT
(1<<16)
-#define S3C_NFCONT_MECCLOCK
(1<<7)
-#define S3C_NFCONT_SECCLOCK
(1<<6)
-#define S3C_NFCONT_INITMECC
(1<<5)
-#define S3C_NFCONT_INITSECC
(1<<4)
-#define S3C_NFCONT_nFCE1
(1<<2)
-#define S3C_NFCONT_nFCE0
(1<<1)
-#define S3C_NFCONT_INITECC
(S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC)
-
-#define S3C_NFSTAT_ECCENCDONE
(1<<7)
-#define S3C_NFSTAT_ECCDECDONE
(1<<6)
-#define S3C_NFSTAT_ILEGL_ACC
(1<<5)
-#define S3C_NFSTAT_RnB_CHANGE
(1<<4)
-#define S3C_NFSTAT_nFCE1
(1<<3)
-#define S3C_NFSTAT_nFCE0
(1<<2)
-#define S3C_NFSTAT_Res1
(1<<1)
-#define S3C_NFSTAT_READY
(1<<0)
-#define S3C_NFSTAT_CLEAR
((1<<7) |(1<<6) |(1<<5) |(1<<4))
-#define S3C_NFSTAT_BUSY
(1<<0)
-
-#define S3C_NFECCERR0_ECCBUSY
(1<<31)
-
-#endif /* __ASM_ARM_REGS_S5P_NAND */
-
diff --git a/arch/arm/plat-samsung/dev-nand.c b/arch/arm/plat-samsung/dev-nand.c
index 3163289..6927ae8 100644
--- a/arch/arm/plat-samsung/dev-nand.c
+++ b/arch/arm/plat-samsung/dev-nand.c
@@ -16,10 +16,7 @@
#include
#include
#include
-/* NAND //jhk*/
-#define S3C_PA_NAND (0x70200000)
-/*
static struct resource s3c_nand_resource[] = {
[0] = {
.start = S3C_PA_NAND,
@@ -29,15 +26,14 @@ static struct resource s3c_nand_resource[] = {
};
struct platform_device s3c_device_nand = {
-//
.name
= "s3c2410-nand",
-
.name
= "s5pv210-nand",
+
.name
= "s3c2410-nand",
.id
= -1,
.num_resources
= ARRAY_SIZE(s3c_nand_resource),
.resource
= s3c_nand_resource,
};
EXPORT_SYMBOL(s3c_device_nand);
-*/
+
/**
* s3c_nand_copy_set() - copy nand set data
* @set: The new structure, directly copied from the old.
diff --git a/arch/arm/plat-samsung/include/plat/nand.h b/arch/arm/plat-samsung/include/plat/nand.h
index e99d2e1..b64115f 100644
--- a/arch/arm/plat-samsung/include/plat/nand.h
+++ b/arch/arm/plat-samsung/include/plat/nand.h
@@ -65,9 +65,3 @@ struct s3c2410_platform_nand {
* it with the s3c_device_nand. This allows @nand to be __initdata.
*/
extern void s3c_nand_set_platdata(struct s3c2410_platform_nand *nand);
-//jhk
-struct s3c_nand_mtd_info {
-
uint chip_nr;
-
uint mtd_part_nr;
-
struct mtd_partition *partition;
-};
diff --git a/arch/arm/plat-samsung/include/plat/regs-nand.h b/arch/arm/plat-samsung/include/plat/regs-nand.h
index 3180718..238efea 100644
--- a/arch/arm/plat-samsung/include/plat/regs-nand.h
+++ b/arch/arm/plat-samsung/include/plat/regs-nand.h
@@ -119,73 +119,5 @@
-
-
-/* for s3c_nand.c */
-#define S3C_NFCONF
S3C2410_NFREG(0x00)
-#define S3C_NFCONT
S3C2410_NFREG(0x04)
-#define S3C_NFCMMD
S3C2410_NFREG(0x08)
-#define S3C_NFADDR
S3C2410_NFREG(0x0c)
-#define S3C_NFDATA8
S3C2410_NFREG(0x10)
-#define S3C_NFDATA
S3C2410_NFREG(0x10)
-#define S3C_NFMECCDATA0
S3C2410_NFREG(0x14)
-#define S3C_NFMECCDATA1
S3C2410_NFREG(0x18)
-#define S3C_NFSECCDATA
S3C2410_NFREG(0x1c)
-#define S3C_NFSBLK
S3C2410_NFREG(0x20)
-#define S3C_NFEBLK
S3C2410_NFREG(0x24)
-#define S3C_NFSTAT
S3C2410_NFREG(0x28)
-#define S3C_NFMECCERR0
S3C2410_NFREG(0x2c)
-#define S3C_NFMECCERR1
S3C2410_NFREG(0x30)
-#define S3C_NFMECC0
S3C2410_NFREG(0x34)
-#define S3C_NFMECC1
S3C2410_NFREG(0x38)
-#define S3C_NFSECC
S3C2410_NFREG(0x3c)
-#define S3C_NFMLCBITPT
S3C2410_NFREG(0x40)
-
-#define S3C_NF8ECCERR0
S3C2410_NFREG(0x44)
-#define S3C_NF8ECCERR1
S3C2410_NFREG(0x48)
-#define S3C_NF8ECCERR2
S3C2410_NFREG(0x4c)
-
-
-#define S3C_NFM8ECC0
S3C2410_NFREG(0x50)
-#define S3C_NFM8ECC1
S3C2410_NFREG(0x54)
-#define S3C_NFM8ECC2
S3C2410_NFREG(0x58)
-#define S3C_NFM8ECC3
S3C2410_NFREG(0x5c)
-
-#define S3C_NFMLC8BITPT0
S3C2410_NFREG(0x60)
-#define S3C_NFMLC8BITPT1
S3C2410_NFREG(0x64)
-
-#define S3C_NFCONF_NANDBOOT
(1<<31)
-#define S3C_NFCONF_ECCCLKCON
(1<<30)
-#define S3C_NFCONF_ECC_MLC
(1<<24)
-#define S3C_NFCONF_ECC_1BIT
(0<<23)
-#define S3C_NFCONF_ECC_4BIT
(2<<23)
-#define S3C_NFCONF_ECC_8BIT
(1<<23)
-#define S3C_NFCONF_TACLS(x)
((x)<<12)
-#define S3C_NFCONF_TWRPH0(x)
((x)<<8)
-#define S3C_NFCONF_TWRPH1(x)
((x)<<4)
-#define S3C_NFCONF_ADVFLASH
(1<<3)
-#define S3C_NFCONF_PAGESIZE
(1<<2)
-#define S3C_NFCONF_ADDRCYCLE
(1<<1)
-#define S3C_NFCONF_BUSWIDTH
(1<<0)
-
-#define S3C_NFCONT_ECC_ENC
(1<<18)
-#define S3C_NFCONT_LOCKTGHT
(1<<17)
-#define S3C_NFCONT_LOCKSOFT
(1<<16)
-#define S3C_NFCONT_MECCLOCK
(1<<7)
-#define S3C_NFCONT_SECCLOCK
(1<<6)
-#define S3C_NFCONT_INITMECC
(1<<5)
-#define S3C_NFCONT_INITSECC
(1<<4)
-#define S3C_NFCONT_nFCE1
(1<<2)
-#define S3C_NFCONT_nFCE0
(1<<1)
-#define S3C_NFCONT_INITECC
(S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC)
-
-#define S3C_NFSTAT_ECCENCDONE
(1<<7)
-#define S3C_NFSTAT_ECCDECDONE
(1<<6)
-#define S3C_NFSTAT_BUSY
(1<<0)
-
-#define S3C_NFECCERR0_ECCBUSY
(1<<31)
-
-
-
#endif /* __ASM_ARM_REGS_NAND */
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index ceba591..4be8373 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -33,26 +33,6 @@ config MTD_TESTS
should normally be compiled as kernel modules. The modules perform
various checks and verifications when loaded.
-config MTD_CONCAT
-
tristate "MTD concatenating support"
-
help
-
Support for concatenating several MTD devices into a single
-
(virtual) one. This allows you to have -for example- a JFFS(2)
-
file system spanning multiple physical flash chips. If unsure,
-
say 'Y'.
-
-config MTD_PARTITIONS
-
bool "MTD partitioning support"
-
help
-
If you have a device which needs to divide its flash chip(s) up
-
into multiple 'partitions', each of which appears to the user as
-
a separate MTD device, you require this option to be enabled. If
-
unsure, say 'Y'.
-
-
Note, however, that you don't need this option for the DiskOnChip
-
devices. Partitioning on NFTL 'devices' is a different - that's the
-
'normal' form of partitioning used on a block device.
-
config MTD_REDBOOT_PARTS
tristate "RedBoot partition table parsing"
---help---
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 386f6d7..630be3e 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -672,7 +672,6 @@ int add_mtd_partitions(struct mtd_info *master,
return 0;
}
-EXPORT_SYMBOL(add_mtd_partitions);//jhk
static DEFINE_SPINLOCK(part_parser_lock);
static LIST_HEAD(part_parsers);
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 225d8de..43173a3 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -240,34 +240,6 @@ config MTD_NAND_S3C2410_HWECC
incorrect ECC generation, and if using these, the default of
software ECC is preferable.
-config MTD_NAND_S3C
-
tristate "NAND support for Samsung S3C"
-
depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX||ARCH_S5PV210) && MTD_NAND
-
help
-
This enables the NAND flash controller on the S3C
-
-
No board specific support is done by this driver, each board
-
must advertise a platform_device for the driver to attach.
-
-config MTD_NAND_S3C_DEBUG
-
bool "S3C NAND driver debug"
-
depends on MTD_NAND_S3C
-
help
-
Enable debugging of the S3C NAND driver
-
-config MTD_NAND_S3C_HWECC
-
bool "S3C NAND Hardware ECC"
-
depends on MTD_NAND_S3C
-
help
-
Enable the use of the S3C's internal ECC generator when
-
using NAND. Early versions of the chip have had problems with
-
incorrect ECC generation, and if using these, the default of
-
software ECC is preferable.
-
-
If you lay down a device with the hardware ECC, then you will
-
currently not be able to switch to software, as there is no
-
implementation for ECC method used by the S3C
-
config MTD_NAND_NDFC
tristate "NDFC NanD Flash Controller"
depends on 4xx
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index ec2f82a..5745d83 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -18,7 +18,6 @@ obj-$(CONFIG_MTD_NAND_AU1550)
+= au1550nd.o
obj-$(CONFIG_MTD_NAND_BF5XX)
+= bf5xx_nand.o
obj-$(CONFIG_MTD_NAND_PPCHAMELEONEVB)
+= ppchameleonevb.o
obj-$(CONFIG_MTD_NAND_S3C2410)
+= s3c2410.o
-obj-$(CONFIG_MTD_NAND_S3C)
+= s3c_nand.o
obj-$(CONFIG_MTD_NAND_DAVINCI)
+= davinci_nand.o
obj-$(CONFIG_MTD_NAND_DISKONCHIP)
+= diskonchip.o
obj-$(CONFIG_MTD_NAND_FSMC)
+= fsmc_nand.o
diff --git a/drivers/mtd/nand/s3c_nand.c b/drivers/mtd/nand/s3c_nand.c
deleted file mode 100644
index 964bdc9..0000000
--- a/drivers/mtd/nand/s3c_nand.c
+++ /dev/null
@@ -1,1268 +0,0 @@
-/* linux/drivers/mtd/nand/s3c_nand.c
- *
- * Copyright (c) 2009 Samsung Electronics Co., Ltd.
- *
http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#ifdef CONFIG_MTD_CMDLINE_PARTS
-static const char *part_probes[] = { "cmdlinepart", NULL };
-#endif
-
-#if defined(CONFIG_ARCH_S5PV210)
-struct mtd_partition s3c_partition_info[] = {
-#if 0
-
{
-
.name
= "misc",
-
.offset
= (768*SZ_1K), /* for bootloader */
-
.size
= (256*SZ_1K),
-
.mask_flags
= MTD_CAP_NANDFLASH,
-
},
-
{
-
.name
= "recovery",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (5*SZ_1M),
-
},
-
{
-
.name
= "kernel",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (5*SZ_1M),
-
},
-
{
-
.name
= "ramdisk",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (3*SZ_1M),
-
},
-
{
-
.name
= "system",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (110*SZ_1M),
-
},
-
{
-
.name
= "cache",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (80*SZ_1M),
-
},
-
{
-
.name
= "userdata",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= MTDPART_SIZ_FULL,
-
}
-#endif
-
{
-
.name
= "misc",
-
.offset
= (768*SZ_1K), /* for bootloader */
-
.size
= (256*SZ_1K),
-
.mask_flags
= MTD_CAP_NANDFLASH,
-
},
-
{
-
.name
= "recovery",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (5*SZ_1M),
-
//.mask_flags
= MTD_CAP_NANDFLASH,
-
},
-
{
-
.name
= "kernel",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (5*SZ_1M),
-
},
-
{
-
.name
= "ramdisk",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (5*SZ_1M),
-
},
-
{
-
.name
= "system",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (110*SZ_1M),
-
},
-
{
-
.name
= "cache",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= (20*SZ_1M),
-
},
-
{
-
.name
= "userdata",
-
.offset
= MTDPART_OFS_APPEND,
-
.size
= MTDPART_SIZ_FULL,
-
}
-};
-
-struct s3c_nand_mtd_info s3c_nand_mtd_part_info = {
-
.chip_nr = 1,
-
.mtd_part_nr = ARRAY_SIZE(s3c_partition_info),
-
.partition = s3c_partition_info,
-};
-#endif
-
-enum s3c_cpu_type {
-
TYPE_S3C2450,
/* including s3c2416 */
-
TYPE_S3C6400,
-
TYPE_S3C6410,
/* including s3c6430/31 */
-
TYPE_S5P6440,
-
TYPE_S5PC100,
-
TYPE_S5PC110,
-
TYPE_S5PV210,
-};
-
-struct s3c_nand_info {
-
/* mtd info */
-
struct nand_hw_control
controller;
-
struct s3c_nand_mtd_info
*mtds;
-
struct s3c2410_platform_nand
*platform;
-
-
/* device info */
-
struct device
*device;
-
struct resource
*area;
-
struct clk
*clk;
-
void __iomem
*regs;
-
void __iomem
*sel_reg;
-
int
sel_bit;
-
int
mtd_count;
-
-
enum s3c_cpu_type
cpu_type;
-};
-static struct s3c_nand_info s3c_nand;
-
-static struct mtd_info *s3c_mtd;
-
-/* Nand flash definition values */
-#define S3C_NAND_TYPE_UNKNOWN
0x0
-#define S3C_NAND_TYPE_SLC
0x1
-#define S3C_NAND_TYPE_MLC
0x2
-
-/* when Hz=200, jiffies interval 1/200=5mS,
- * waiting for 80mS 80/5 = 16 */
-#define S3C_NAND_WAIT_TIME_MS
(80)
-#define S3C_NAND_WAIT_INTERVAL
(S3C_NAND_WAIT_TIME_MS * HZ / 1000)
-
-/* Nand flash global values */
-int cur_ecc_mode;
-int nand_type = S3C_NAND_TYPE_UNKNOWN;
-
-#if defined(CONFIG_MTD_NAND_S3C_HWECC)
-/* Nand flash oob definition for SLC 512b page size */
-static struct nand_ecclayout s3c_nand_oob_16 = {
-
.eccbytes = 4,
-
.eccpos = {
-
1, 2, 3, 4
-
},
-
.oobfree = {
-
{
-
.offset = 6,
-
.length = 10
-
}
-
}
-};
-
-/* Nand flash oob definition for SLC 2k page size */
-static struct nand_ecclayout s3c_nand_oob_64 = {
-
.eccbytes = 16,
-
.eccpos = {
-
40, 41, 42, 43, 44, 45, 46, 47,
-
48, 49, 50, 51, 52, 53, 54, 55
-
},
-
.oobfree = {
-
{
-
.offset = 2,
-
.length = 38
-
}
-
}
-};
-
-/* Nand flash oob definition for MLC 2k page size */
-static struct nand_ecclayout s3c_nand_oob_mlc_64 = {
-
.eccbytes = 32,
-
.eccpos = {
-
32, 33, 34, 35, 36, 37, 38, 39,
-
40, 41, 42, 43, 44, 45, 46, 47,
-
48, 49, 50, 51, 52, 53, 54, 55,
-
56, 57, 58, 59, 60, 61, 62, 63
-
},
-
.oobfree = {
-
{
-
.offset = 2,
-
.length = 28
-
}
-
}
-};
-
-/* Nand flash oob definition for 4Kb page size with 8_bit ECC */
-static struct nand_ecclayout s3c_nand_oob_128 = {
-
.eccbytes = 104,
-
.eccpos = {
-
24, 25, 26, 27, 28, 29, 30, 31,
-
32, 33, 34, 35, 36, 37, 38, 39,
-
40, 41, 42, 43, 44, 45, 46, 47,
-
48, 49, 50, 51, 52, 53, 54, 55,
-
56, 57, 58, 59, 60, 61, 62, 63,
-
64, 65, 66, 67, 68, 69, 70, 71,
-
72, 73, 74, 75, 76, 77, 78, 79,
-
80, 81, 82, 83, 84, 85, 86, 87,
-
88, 89, 90, 91, 92, 93, 94, 95,
-
96, 97, 98, 99, 100, 101, 102, 103,
-
104, 105, 106, 107, 108, 109, 110, 111,
-
112, 113, 114, 115, 116, 117, 118, 119,
-
120, 121, 122, 123, 124, 125, 126, 127},
-
.oobfree = {
-
{
-
.offset = 2,
-
.length = 22
-
}
-
}
-};
-#endif
-
-#if defined(CONFIG_MTD_NAND_S3C_DEBUG)
-/*
- * Function to print out oob buffer for debugging
- */
-void print_oob(const char *header, struct mtd_info *mtd)
-{
-
int i;
-
struct nand_chip *chip = mtd->priv;
-
-
printk(KERN_INFO "%s:\t", header);
-
-
for (i = 0; i < 64; i++)
-
printk(KERN_INFO "%02x ", chip->oob_poi[i]);
-
-
printk(KERN_INFO "\n");
-}
-EXPORT_SYMBOL(print_oob);
-#endif
-
-/*
- * Hardware specific access to control-lines function
- */
-static void s3c_nand_hwcontrol(struct mtd_info *mtd, int dat, unsigned int ctrl)
-{
-
unsigned int cur;
-
void __iomem *regs = s3c_nand.regs;
-
-
if (ctrl & NAND_CTRL_CHANGE) {
-
if (ctrl & NAND_NCE) {
-
if (dat != NAND_CMD_NONE) {
-
cur = readl(regs + S3C_NFCONT);
-
cur &= ~S3C_NFCONT_nFCE0;
-
writel(cur, regs + S3C_NFCONT);
-
}
-
} else {
-
cur = readl(regs + S3C_NFCONT);
-
cur |= S3C_NFCONT_nFCE0;
-
writel(cur, regs + S3C_NFCONT);
-
}
-
}
-
-
if (dat != NAND_CMD_NONE) {
-
if (ctrl & NAND_CLE)
-
writeb(dat, regs + S3C_NFCMMD);
-
else if (ctrl & NAND_ALE)
-
writeb(dat, regs + S3C_NFADDR);
-
}
-}
-
-/*
- * Function for checking device ready pin
- */
-static int s3c_nand_device_ready(struct mtd_info *mtd)
-{
-
void __iomem *regs = s3c_nand.regs;
-
-
/* it's to check the RnB nand signal bit and
-
* return to device ready condition in nand_base.c
-
*/
-
return readl(regs + S3C_NFSTAT) & S3C_NFSTAT_READY;
-}
-
-/*
- * We don't use a bad block table
- */
-static int s3c_nand_scan_bbt(struct mtd_info *mtdinfo)
-{
-
return 0;
-}
-
-#if defined(CONFIG_MTD_NAND_S3C_HWECC)
-
-/*
- * Function for checking ECCEncDone in NFSTAT
- */
-static void s3c_nand_wait_enc(void)
-{
-
void __iomem *regs = s3c_nand.regs;
-
unsigned long timeo = jiffies;
-
-
timeo += S3C_NAND_WAIT_INTERVAL;
-
-
/* Apply this short delay always to ensure that we do wait tWB in
-
* any case on any machine. */
-
while (time_before(jiffies, timeo)) {
-
if (readl(regs + S3C_NFSTAT) & S3C_NFSTAT_ECCENCDONE)
-
break;
-
cond_resched();
-
}
-}
-
-/*
- * Function for checking ECCDecDone in NFSTAT
- */
-static void s3c_nand_wait_dec(void)
-{
-
void __iomem *regs = s3c_nand.regs;
-
unsigned long timeo = jiffies;
-
-
timeo += S3C_NAND_WAIT_INTERVAL;
-
-
/* Apply this short delay always to ensure that we do wait tWB in
-
* any case on any machine. */
-
while (time_before(jiffies, timeo)) {
-
if (readl(regs + S3C_NFSTAT) & S3C_NFSTAT_ECCDECDONE)
-
break;
-
cond_resched();
-
}
-}
-
-/*
- * Function for checking ECC Busy
- */
-static void s3c_nand_wait_ecc_busy(void)
-{
-
void __iomem *regs = s3c_nand.regs;
-
unsigned long timeo = jiffies;
-
-
timeo += S3C_NAND_WAIT_INTERVAL;
-
-
/* Apply this short delay always to ensure that we do wait tWB in
-
* any case on any machine. */
-
while (time_before(jiffies, timeo)) {
-
if (!(readl(regs + S3C_NFMECCERR0) & S3C_NFECCERR0_ECCBUSY))
-
break;
-
cond_resched();
-
}
-}
-
-/*
- * This function is called before encoding ecc codes to ready ecc engine.
- */
-static void s3c_nand_enable_hwecc(struct mtd_info *mtd, int mode)
-{
-
u_long nfcont;
-
u_long nfconf;
-
void __iomem *regs = s3c_nand.regs;
-
-
cur_ecc_mode = mode;
-
-
nfconf = readl(regs + S3C_NFCONF);
-
-
if (s3c_nand.cpu_type == TYPE_S3C6400) {
-
if (nand_type == S3C_NAND_TYPE_SLC)
-
nfconf &= ~S3C_NFCONF_ECC_MLC;
/* SLC */
-
else
-
nfconf |= S3C_NFCONF_ECC_MLC;
/* MLC */
-
} else {
-
nfconf &= ~(0x3 << 23);
-
-
if (nand_type == S3C_NAND_TYPE_SLC)
-
nfconf |= S3C_NFCONF_ECC_1BIT;
-
else
-
nfconf |= S3C_NFCONF_ECC_4BIT;
-
}
-
-
writel(nfconf, regs + S3C_NFCONF);
-
-
/* Init main ECC & unlock */
-
nfcont = readl(regs + S3C_NFCONT);
-
nfcont |= S3C_NFCONT_INITMECC;
-
nfcont &= ~S3C_NFCONT_MECCLOCK;
-
-
if (nand_type == S3C_NAND_TYPE_MLC) {
-
if (mode == NAND_ECC_WRITE)
-
nfcont |= S3C_NFCONT_ECC_ENC;
-
else if (mode == NAND_ECC_READ)
-
nfcont &= ~S3C_NFCONT_ECC_ENC;
-
}
-
-
writel(nfcont, regs + S3C_NFCONT);
-}
-
-/*
- * This function is called immediately after encoding ecc codes.
- * This function returns encoded ecc codes.
- */
-static int s3c_nand_calculate_ecc(struct mtd_info *mtd,
-
const u_char *dat, u_char *ecc_code)
-{
-
u_long nfcont, nfmecc0, nfmecc1;
-
void __iomem *regs = s3c_nand.regs;
-
-
/* Lock */
-
nfcont = readl(regs + S3C_NFCONT);
-
nfcont |= S3C_NFCONT_MECCLOCK;
-
writel(nfcont, regs + S3C_NFCONT);
-
-
if (nand_type == S3C_NAND_TYPE_SLC) {
-
nfmecc0 = readl(regs + S3C_NFMECC0);
-
-
ecc_code[0] = nfmecc0 & 0xff;
-
ecc_code[1] = (nfmecc0 >> 8) & 0xff;
-
ecc_code[2] = (nfmecc0 >> 16) & 0xff;
-
ecc_code[3] = (nfmecc0 >> 24) & 0xff;
-
} else {
-
if (cur_ecc_mode == NAND_ECC_READ)
-
s3c_nand_wait_dec();
-
else {
-
s3c_nand_wait_enc();
-
-
nfmecc0 = readl(regs + S3C_NFMECC0);
-
nfmecc1 = readl(regs + S3C_NFMECC1);
-
-
ecc_code[0] = nfmecc0 & 0xff;
-
ecc_code[1] = (nfmecc0 >> 8) & 0xff;
-
ecc_code[2] = (nfmecc0 >> 16) & 0xff;
-
ecc_code[3] = (nfmecc0 >> 24) & 0xff;
-
ecc_code[4] = nfmecc1 & 0xff;
-
ecc_code[5] = (nfmecc1 >> 8) & 0xff;
-
ecc_code[6] = (nfmecc1 >> 16) & 0xff;
-
ecc_code[7] = (nfmecc1 >> 24) & 0xff;
-
}
-
}
-
-
return 0;
-}
-
-/*
- * This function determines whether read data is good or not.
- * If SLC, must write ecc codes to controller before reading status bit.
- * If MLC, status bit is already set, so only reading is needed.
- * If status bit is good, return 0.
- * If correctable errors occured, do that.
- * If uncorrectable errors occured, return -1.
- */
-static int s3c_nand_correct_data(struct mtd_info *mtd, u_char *dat,
-
u_char *read_ecc, u_char *calc_ecc)
-{
-
int ret = -1;
-
u_long nfestat0, nfestat1, nfmeccdata0, nfmeccdata1, nfmlcbitpt;
-
u_char err_type;
-
void __iomem *regs = s3c_nand.regs;
-
-
if (!dat) {
-
printk(KERN_ERR "No page data\n");
-
return ret;
-
}
-
-
if (nand_type == S3C_NAND_TYPE_SLC) {
-
/* SLC: Write ECC data to compare */
-
nfmeccdata0 = (read_ecc[1] << 16) | read_ecc[0];
-
nfmeccdata1 = (read_ecc[3] << 16) | read_ecc[2];
-
writel(nfmeccdata0, regs + S3C_NFMECCDATA0);
-
writel(nfmeccdata1, regs + S3C_NFMECCDATA1);
-
-
/* Read ECC status */
-
nfestat0 = readl(regs + S3C_NFMECCERR0);
-
err_type = nfestat0 & 0x3;
-
-
switch (err_type) {
-
case 0: /* No error */
-
ret = 0;
-
break;
-
-
case 1: /* 1 bit error (Correctable)
-
(nfestat0 >> 7) & 0x7ff
:error byte number
-
(nfestat0 >> 4) & 0x7
:error bit number */
-
printk(KERN_INFO "s3c-nand: 1 bit error detected at byte %ld, correcting from "
-
"0x%02x ", (nfestat0 >> 7) & 0x7ff, dat[(nfestat0 >> 7) & 0x7ff]);
-
dat[(nfestat0 >> 7) & 0x7ff] ^= (1 << ((nfestat0 >> 4) & 0x7));
-
printk("to 0x%02x...OK\n", dat[(nfestat0 >> 7) & 0x7ff]);
-
ret = 1;
-
break;
-
-
case 2: /* Multiple error */
-
case 3: /* ECC area error */
-
printk(KERN_INFO "s3c-nand: ECC uncorrectable error detected\n");
-
ret = -1;
-
break;
-
}
-
} else {
-
/* MLC: */
-
s3c_nand_wait_ecc_busy();
-
-
nfestat0 = readl(regs + S3C_NFMECCERR0);
-
nfestat1 = readl(regs + S3C_NFMECCERR1);
-
nfmlcbitpt = readl(regs + S3C_NFMLCBITPT);
-
-
err_type = (nfestat0 >> 26) & 0x7;
-
-
/* No error, If free page (all 0xff) */
-
if ((nfestat0 >> 29) & 0x1) {
-
err_type = 0;
-
} else {
-
/* No error, If all 0xff from 17th byte in oob (in case of JFFS2 format) */
-
if (dat) {
-
if (dat[17] == 0xff && dat[26] == 0xff && dat[35] == 0xff && dat[44] == 0xff && dat[54] == 0xff)
-
err_type = 0;
-
}
-
}
-
-
switch (err_type) {
-
case 5: /* Uncorrectable */
-
printk(KERN_INFO "s3c-nand: ECC uncorrectable error detected\n");
-
ret = -1;
-
break;
-
-
case 4: /* 4 bit error (Correctable) */
-
dat[(nfestat1 >> 16) & 0x3ff] ^= ((nfmlcbitpt >> 24) & 0xff);
-
-
case 3: /* 3 bit error (Correctable) */
-
dat[nfestat1 & 0x3ff] ^= ((nfmlcbitpt >> 16) & 0xff);
-
-
case 2: /* 2 bit error (Correctable) */
-
dat[(nfestat0 >> 16) & 0x3ff] ^= ((nfmlcbitpt >> 8) & 0xff);
-
-
case 1: /* 1 bit error (Correctable) */
-
printk(KERN_INFO "s3c-nand: %d bit(s) error detected, corrected successfully\n", err_type);
-
dat[nfestat0 & 0x3ff] ^= (nfmlcbitpt & 0xff);
-
ret = err_type;
-
break;
-
-
case 0: /* No error */
-
ret = 0;
-
break;
-
}
-
}
-
-
return ret;
-}
-
-static int s3c_nand_write_oob_1bit(struct mtd_info *mtd, struct nand_chip *chip,
-
int page)
-{
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
int status = 0;
-
int eccbytes = chip->ecc.bytes;
-
int secc_start = mtd->oobsize - eccbytes;
-
int i;
-
-
chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page);
-
-
/* spare area */
-
chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-
chip->write_buf(mtd, chip->oob_poi, secc_start);
-
chip->ecc.calculate(mtd, 0, &ecc_calc[chip->ecc.total]);
-
-
for (i = 0; i < eccbytes; i++)
-
chip->oob_poi[secc_start + i] = ecc_calc[chip->ecc.total + i];
-
-
chip->write_buf(mtd, chip->oob_poi + secc_start, eccbytes);
-
-
/* Send command to program the OOB data */
-
chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
-
-
status = chip->waitfunc(mtd, chip);
-
-
return status & NAND_STATUS_FAIL ? -EIO : 0;
-}
-
-static int s3c_nand_read_oob_1bit(struct mtd_info *mtd, struct nand_chip *chip,
-
int page, int sndcmd)
-{
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
int eccbytes = chip->ecc.bytes;
-
int secc_start = mtd->oobsize - eccbytes;
-
-
if (sndcmd) {
-
chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-
sndcmd = 0;
-
}
-
-
chip->ecc.hwctl(mtd, NAND_ECC_READ);
-
chip->read_buf(mtd, chip->oob_poi, secc_start);
-
chip->ecc.calculate(mtd, 0, &ecc_calc[chip->ecc.total]);
-
chip->read_buf(mtd, chip->oob_poi + secc_start, eccbytes);
-
-
return sndcmd;
-}
-
-static void s3c_nand_write_page_1bit(struct mtd_info *mtd, struct nand_chip *chip,
-
const uint8_t *buf)
-{
-
int i, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
int secc_start = mtd->oobsize - eccbytes;
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
const uint8_t *p = buf;
-
-
uint32_t *eccpos = chip->ecc.layout->eccpos;
-
-
/* main area */
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-
chip->write_buf(mtd, p, eccsize);
-
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
-
}
-
-
for (i = 0; i < chip->ecc.total; i++)
-
chip->oob_poi[eccpos[i]] = ecc_calc[i];
-
-
/* spare area */
-
chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-
chip->write_buf(mtd, chip->oob_poi, secc_start);
-
chip->ecc.calculate(mtd, p, &ecc_calc[chip->ecc.total]);
-
-
for (i = 0; i < eccbytes; i++)
-
chip->oob_poi[secc_start + i] = ecc_calc[chip->ecc.total + i];
-
-
chip->write_buf(mtd, chip->oob_poi + secc_start, eccbytes);
-}
-
-static int s3c_nand_read_page_1bit(struct mtd_info *mtd, struct nand_chip *chip,
-
uint8_t *buf)
-{
-
int i, stat, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
int secc_start = mtd->oobsize - eccbytes;
-
int col = 0;
-
uint8_t *p = buf;
-
uint32_t *mecc_pos = chip->ecc.layout->eccpos;
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
-
col = mtd->writesize;
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
-
/* spare area */
-
chip->ecc.hwctl(mtd, NAND_ECC_READ);
-
chip->read_buf(mtd, chip->oob_poi, secc_start);
-
chip->ecc.calculate(mtd, p, &ecc_calc[chip->ecc.total]);
-
chip->read_buf(mtd, chip->oob_poi + secc_start, eccbytes);
-
-
col = 0;
-
-
/* main area */
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
chip->ecc.hwctl(mtd, NAND_ECC_READ);
-
chip->read_buf(mtd, p, eccsize);
-
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
-
-
stat = chip->ecc.correct(mtd, p, chip->oob_poi + mecc_pos[0] +
-
((chip->ecc.steps - eccsteps) * eccbytes), 0);
-
if (stat == -1)
-
mtd->ecc_stats.failed++;
-
-
col = eccsize * (chip->ecc.steps + 1 - eccsteps);
-
}
-
-
return 0;
-}
-
-/*
- * Hardware specific page read function for MLC.
- */
-static int s3c_nand_read_page_4bit(struct mtd_info *mtd, struct nand_chip *chip,
-
uint8_t *buf)
-{
-
int i, stat, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
int col = 0;
-
uint8_t *p = buf;
-
uint32_t *mecc_pos = chip->ecc.layout->eccpos;
-
-
/* Step1: read whole oob */
-
col = mtd->writesize;
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-
-
col = 0;
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
chip->ecc.hwctl(mtd, NAND_ECC_READ);
-
chip->read_buf(mtd, p, eccsize);
-
chip->write_buf(mtd, chip->oob_poi + mecc_pos[0] +
-
((chip->ecc.steps - eccsteps) * eccbytes), eccbytes);
-
chip->ecc.calculate(mtd, 0, 0);
-
stat = chip->ecc.correct(mtd, p, 0, 0);
-
-
if (stat == -1)
-
mtd->ecc_stats.failed++;
-
-
col = eccsize * (chip->ecc.steps + 1 - eccsteps);
-
}
-
-
return 0;
-}
-
-/*
- * Hardware specific page write function for MLC.
- */
-static void s3c_nand_write_page_4bit(struct mtd_info *mtd, struct nand_chip *chip,
-
const uint8_t *buf)
-{
-
int i, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
const uint8_t *p = buf;
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
uint32_t *mecc_pos = chip->ecc.layout->eccpos;
-
-
/* Step1: write main data and encode mecc */
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-
chip->write_buf(mtd, p, eccsize);
-
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
-
}
-
-
/* Step2: save encoded mecc */
-
for (i = 0; i < chip->ecc.total; i++)
-
chip->oob_poi[mecc_pos[i]] = ecc_calc[i];
-
-
chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
-}
-
-
-static void s3c_nand_wait_ecc_busy_8bit(void)
-{
-
void __iomem *regs = s3c_nand.regs;
-
unsigned int timeout;
-
-
/* Wait max 100ms */
-
timeout = 1000;
-
while (readl(regs + S3C_NF8ECCERR0) & S3C_NFECCERR0_ECCBUSY) {
-
if (timeout == 0) {
-
printk(KERN_ERR "s3c_nand : wait_ecc_busy err.\n");
-
break;
-
}
-
-
timeout--;
-
udelay(100);
-
}
-}
-
-void s3c_nand_enable_hwecc_8bit(struct mtd_info *mtd, int mode)
-{
-
u_long nfcont, nfconf;
-
void __iomem *regs = s3c_nand.regs;
-
-
cur_ecc_mode = mode;
-
-
/* 8 bit selection */
-
nfconf = readl(regs + S3C_NFCONF);
-
-
nfconf &= ~(0x3 << 23);
-
nfconf |= (0x1 << 23);
-
-
writel(nfconf, (regs + S3C_NFCONF));
-
-
/* Initialize & unlock */
-
nfcont = readl(regs + S3C_NFCONT);
-
nfcont |= S3C_NFCONT_INITECC;
-
nfcont &= ~S3C_NFCONT_MECCLOCK;
-
-
if (mode == NAND_ECC_WRITE)
-
nfcont |= S3C_NFCONT_ECC_ENC;
-
else if (mode == NAND_ECC_READ)
-
nfcont &= ~S3C_NFCONT_ECC_ENC;
-
-
writel(nfcont, (regs + S3C_NFCONT));
-}
-
-int s3c_nand_calculate_ecc_8bit(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
-{
-
u_long nfcont, nfm8ecc0, nfm8ecc1, nfm8ecc2, nfm8ecc3;
-
void __iomem *regs = s3c_nand.regs;
-
-
/* Lock */
-
nfcont = readl(regs + S3C_NFCONT);
-
nfcont |= S3C_NFCONT_MECCLOCK;
-
writel(nfcont, (regs + S3C_NFCONT));
-
-
if (cur_ecc_mode == NAND_ECC_READ)
-
s3c_nand_wait_dec();
-
else {
-
s3c_nand_wait_enc();
-
-
nfm8ecc0 = readl(regs + S3C_NFM8ECC0);
-
nfm8ecc1 = readl(regs + S3C_NFM8ECC1);
-
nfm8ecc2 = readl(regs + S3C_NFM8ECC2);
-
nfm8ecc3 = readl(regs + S3C_NFM8ECC3);
-
-
ecc_code[0] = nfm8ecc0 & 0xff;
-
ecc_code[1] = (nfm8ecc0 >> 8) & 0xff;
-
ecc_code[2] = (nfm8ecc0 >> 16) & 0xff;
-
ecc_code[3] = (nfm8ecc0 >> 24) & 0xff;
-
ecc_code[4] = nfm8ecc1 & 0xff;
-
ecc_code[5] = (nfm8ecc1 >> 8) & 0xff;
-
ecc_code[6] = (nfm8ecc1 >> 16) & 0xff;
-
ecc_code[7] = (nfm8ecc1 >> 24) & 0xff;
-
ecc_code[8] = nfm8ecc2 & 0xff;
-
ecc_code[9] = (nfm8ecc2 >> 8) & 0xff;
-
ecc_code[10] = (nfm8ecc2 >> 16) & 0xff;
-
ecc_code[11] = (nfm8ecc2 >> 24) & 0xff;
-
ecc_code[12] = nfm8ecc3 & 0xff;
-
}
-
-
return 0;
-}
-
-int s3c_nand_correct_data_8bit(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc)
-{
-
int ret = -1;
-
u_long nf8eccerr0, nf8eccerr1, nf8eccerr2, nfmlc8bitpt0, nfmlc8bitpt1;
-
u_char err_type;
-
void __iomem *regs = s3c_nand.regs;
-
-
s3c_nand_wait_ecc_busy_8bit();
-
-
nf8eccerr0 = readl(regs + S3C_NF8ECCERR0);
-
nf8eccerr1 = readl(regs + S3C_NF8ECCERR1);
-
nf8eccerr2 = readl(regs + S3C_NF8ECCERR2);
-
nfmlc8bitpt0 = readl(regs + S3C_NFMLC8BITPT0);
-
nfmlc8bitpt1 = readl(regs + S3C_NFMLC8BITPT1);
-
-
err_type = (nf8eccerr0 >> 25) & 0xf;
-
-
/*
-
* No error, If free page (all 0xff)
-
* While testing, it was found that NFECCERR0[29] bit is set even if
-
* the page contents were not zero. So this code is commented
-
*/
-
switch (err_type) {
-
case 9: /* Uncorrectable */
-
printk(KERN_INFO "s3c-nand: ECC uncorrectable error detected\n");
-
ret = -1;
-
break;
-
-
case 8: /* 8 bit error (Correctable) */
-
dat[(nf8eccerr2 >> 22) & 0x3ff] ^= ((nfmlc8bitpt1 >> 24) & 0xff);
-
-
case 7: /* 7 bit error (Correctable) */
-
dat[(nf8eccerr2 >> 11) & 0x3ff] ^= ((nfmlc8bitpt1 >> 16) & 0xff);
-
-
case 6: /* 6 bit error (Correctable) */
-
dat[nf8eccerr2 & 0x3ff] ^= ((nfmlc8bitpt1 >> 8) & 0xff);
-
-
case 5: /* 5 bit error (Correctable) */
-
dat[(nf8eccerr1 >> 22) & 0x3ff] ^= (nfmlc8bitpt1 & 0xff);
-
-
case 4: /* 4 bit error (Correctable) */
-
dat[(nf8eccerr1 >> 11) & 0x3ff] ^= ((nfmlc8bitpt0 >> 24) & 0xff);
-
-
case 3: /* 3 bit error (Correctable) */
-
dat[nf8eccerr1 & 0x3ff] ^= ((nfmlc8bitpt0 >> 16) & 0xff);
-
-
case 2: /* 2 bit error (Correctable) */
-
dat[(nf8eccerr0 >> 15) & 0x3ff] ^= ((nfmlc8bitpt0 >> 8) & 0xff);
-
-
case 1: /* 1 bit error (Correctable) */
-
printk(KERN_INFO "s3c-nand: %d bit(s) error detected, corrected successfully\n", err_type);
-
dat[nf8eccerr0 & 0x3ff] ^= (nfmlc8bitpt0 & 0xff);
-
ret = err_type;
-
break;
-
-
case 0: /* No error */
-
ret = 0;
-
break;
-
}
-
-
return ret;
-}
-
-void s3c_nand_write_page_8bit(struct mtd_info *mtd, struct nand_chip *chip,
-
const uint8_t *buf)
-{
-
int i, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
const uint8_t *p = buf;
-
int badoffs = mtd->writesize == 512 ? NAND_SMALL_BADBLOCK_POS : NAND_LARGE_BADBLOCK_POS;
-
uint8_t *ecc_calc = chip->buffers->ecccalc;
-
uint32_t *mecc_pos = chip->ecc.layout->eccpos;
-
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-
chip->write_buf(mtd, p, eccsize);
-
chip->ecc.calculate(mtd, p, &ecc_calc[i]);
-
}
-
-
chip->oob_poi[badoffs] = 0xff;
-
for (i = 0; i < chip->ecc.total; i++)
-
chip->oob_poi[mecc_pos[i]] = ecc_calc[i];
-
-
chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
-}
-
-int s3c_nand_read_page_8bit(struct mtd_info *mtd, struct nand_chip *chip,
-
uint8_t *buf)
-{
-
int i, stat, eccsize = chip->ecc.size;
-
int eccbytes = chip->ecc.bytes;
-
int eccsteps = chip->ecc.steps;
-
int col = 0;
-
uint8_t *p = buf;
-
uint32_t *mecc_pos = chip->ecc.layout->eccpos;
-
-
/* Step1: read whole oob */
-
col = mtd->writesize;
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-
-
col = 0;
-
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, col, -1);
-
s3c_nand_enable_hwecc_8bit(mtd, NAND_ECC_READ);
-
chip->read_buf(mtd, p, eccsize);
-
chip->write_buf(mtd, chip->oob_poi + mecc_pos[0] + ((chip->ecc.steps - eccsteps) * eccbytes), eccbytes);
-
chip->ecc.calculate(mtd, 0, 0);
-
stat = chip->ecc.correct(mtd, p, NULL, NULL);
-
-
if (stat == -1)
-
mtd->ecc_stats.failed++;
-
-
col = eccsize * ((mtd->writesize / eccsize) + 1 - eccsteps);
-
}
-
-
return 0;
-}
-
-int s3c_nand_read_oob_8bit(struct mtd_info *mtd, struct nand_chip *chip,
-
int page, int sndcmd)
-{
-
int eccbytes = chip->ecc.bytes;
-
int secc_start = mtd->oobsize - eccbytes;
-
-
if (sndcmd) {
-
chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-
sndcmd = 0;
-
}
-
-
chip->read_buf(mtd, chip->oob_poi, secc_start);
-
return sndcmd;
-}
-
-int s3c_nand_write_oob_8bit(struct mtd_info *mtd, struct nand_chip *chip, int page)
-{
-
int status = 0;
-
int eccbytes = chip->ecc.bytes;
-
int secc_start = mtd->oobsize - eccbytes;
-
-
chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page);
-
-
chip->write_buf(mtd, chip->oob_poi, secc_start);
-
chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
-
status = chip->waitfunc(mtd, chip);
-
-
return status & NAND_STATUS_FAIL ? -EIO : 0;
-}
-#endif
-
-/* s3c_nand_probe
- *
- * called by device layer when it finds a device matching
- * one our driver can handled. This code checks to see if
- * it can allocate all necessary resources then calls the
- * nand layer to look for devices
- */
-static int s3c_nand_probe(struct platform_device *pdev, enum s3c_cpu_type cpu_type)
-{
-#if defined(CONFIG_ARCH_S5PV210)
-
struct s3c_nand_mtd_info *plat_info = &s3c_nand_mtd_part_info;
-#else
-
struct s3c_nand_mtd_info *plat_info = pdev->dev.platform_data;
-#endif
-
struct mtd_partition *partition_info = (struct mtd_partition *)plat_info->partition;
-
struct nand_chip *nand;
-
struct resource *res;
-
int err = 0;
-
int ret = 0;
-
int i, size;
-#ifdef CONFIG_MTD_PARTITIONS
-
struct mtd_partition *partitions = NULL;
-
int num_partitions = 0;
-#endif
-
-#if defined(CONFIG_MTD_NAND_S3C_HWECC)
-
struct nand_flash_dev *type = NULL;
-
u_char tmp;
-
int j;
-#endif
-
-
/* get the clock source and enable it */
-
s3c_nand.clk = clk_get(&pdev->dev, "nand");
-
if (IS_ERR(s3c_nand.clk)) {
-
dev_err(&pdev->dev, "failed to get clock");
-
err = -ENOENT;
-
goto exit_error;
-
}
-
-
clk_enable(s3c_nand.clk);
-
-
/* allocate and map the resource */
-
-
/* currently we assume we have the one resource */
-
res = pdev->resource;
-
size = res->end - res->start + 1;
-
-
s3c_nand.area = request_mem_region(res->start, size, pdev->name);
-
-
if (s3c_nand.area == NULL) {
-
dev_err(&pdev->dev, "cannot reserve register region\n");
-
err = -ENOENT;
-
goto exit_error;
-
}
-
-
s3c_nand.cpu_type = cpu_type;
-
s3c_nand.device = &pdev->dev;
-
s3c_nand.regs = ioremap(res->start, size);
-
-
if (s3c_nand.regs == NULL) {
-
dev_err(&pdev->dev, "cannot reserve register region\n");
-
err = -EIO;
-
goto exit_error;
-
}
-
-
/* allocate memory for MTD device structure and private data */
-
s3c_mtd = kmalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip), GFP_KERNEL);
-
-
if (!s3c_mtd) {
-
printk(KERN_ERR "Unable to allocate NAND MTD dev structure.\n");
-
return -ENOMEM;
-
}
-
-
/* Get pointer to private data */
-
nand = (struct nand_chip *) (&s3c_mtd[1]);
-
-
/* Initialize structures */
-
memset((char *) s3c_mtd, 0, sizeof(struct mtd_info));
-
memset((char *) nand, 0, sizeof(struct nand_chip));
-
-
/* Link the private data with the MTD structure */
-
s3c_mtd->priv = nand;
-
-
for (i = 0; i < plat_info->chip_nr; i++) {
-
nand->IO_ADDR_R
= (char *)(s3c_nand.regs + S3C_NFDATA);
-
nand->IO_ADDR_W
= (char *)(s3c_nand.regs + S3C_NFDATA);
-
nand->cmd_ctrl
= s3c_nand_hwcontrol;
-
nand->dev_ready
= s3c_nand_device_ready;
-
nand->scan_bbt
= s3c_nand_scan_bbt;
-
nand->options
= 0;
-
-#if defined(CONFIG_MTD_NAND_S3C_HWECC)
-
nand->ecc.mode
= NAND_ECC_HW;
-
nand->ecc.hwctl
= s3c_nand_enable_hwecc;
-
nand->ecc.calculate
= s3c_nand_calculate_ecc;
-
nand->ecc.correct
= s3c_nand_correct_data;
-
-
s3c_nand_hwcontrol(0, NAND_CMD_READID, NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE);
-
s3c_nand_hwcontrol(0, 0x00, NAND_CTRL_CHANGE | NAND_NCE | NAND_ALE);
-
s3c_nand_hwcontrol(0, 0x00, NAND_NCE | NAND_ALE);
-
s3c_nand_hwcontrol(0, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
-
s3c_nand_device_ready(0);
-
-
tmp = readb(nand->IO_ADDR_R); /* Maf. ID */
-
tmp = readb(nand->IO_ADDR_R); /* Device ID */
-
-
for (j = 0; nand_flash_ids[j].name != NULL; j++) {
-
if (tmp == nand_flash_ids[j].id) {
-
type = &nand_flash_ids[j];
-
break;
-
}
-
}
-
-
if (!type) {
-
printk(KERN_ERR "Unknown NAND Device.\n");
-
goto exit_error;
-
}
-
-
nand->cellinfo = readb(nand->IO_ADDR_R);
/* the 3rd byte */
-
tmp = readb(nand->IO_ADDR_R);
/* the 4th byte */
-
if (!type->pagesize) {
-
if (((nand->cellinfo >> 2) & 0x3) == 0) {
-
nand_type = S3C_NAND_TYPE_SLC;
-
nand->ecc.size = 512;
-
nand->ecc.bytes
= 4;
-
-
/* For 4KB Page 8_bit ECC */
-
if ((1024 << (tmp & 3)) == 4096) {
-
/* Page size is 4Kbytes */
-
nand->ecc.read_page = s3c_nand_read_page_8bit;
-
nand->ecc.write_page = s3c_nand_write_page_8bit;
-
nand->ecc.read_oob = s3c_nand_read_oob_8bit;
-
nand->ecc.write_oob = s3c_nand_write_oob_8bit;
-
nand->ecc.layout = &s3c_nand_oob_128;
-
nand->ecc.hwctl = s3c_nand_enable_hwecc_8bit;
-
nand->ecc.calculate = s3c_nand_calculate_ecc_8bit;
-
nand->ecc.correct = s3c_nand_correct_data_8bit;
-
nand->ecc.size = 512;
-
nand->ecc.bytes = 13;
-
nand->options |= NAND_NO_SUBPAGE_WRITE;
-
} else {
-
if ((1024 << (tmp & 0x3)) > 512) {
-
nand->ecc.read_page = s3c_nand_read_page_1bit;
-
nand->ecc.write_page = s3c_nand_write_page_1bit;
-
nand->ecc.read_oob = s3c_nand_read_oob_1bit;
-
nand->ecc.write_oob = s3c_nand_write_oob_1bit;
-
nand->ecc.layout = &s3c_nand_oob_64;
-
} else {
-
nand->ecc.layout = &s3c_nand_oob_16;
-
}
-
}
-
} else {
-
nand_type = S3C_NAND_TYPE_MLC;
-
nand->options |= NAND_NO_SUBPAGE_WRITE;
/* NOP = 1 if MLC */
-
-
if ((1024 << (tmp & 3)) == 4096) {
-
/* Page size is 4Kbytes */
-
nand->ecc.read_page = s3c_nand_read_page_8bit;
-
nand->ecc.write_page = s3c_nand_write_page_8bit;
-
nand->ecc.read_oob = s3c_nand_read_oob_8bit;
-
nand->ecc.write_oob = s3c_nand_write_oob_8bit;
-
nand->ecc.layout = &s3c_nand_oob_128;
-
nand->ecc.hwctl = s3c_nand_enable_hwecc_8bit;
-
nand->ecc.calculate = s3c_nand_calculate_ecc_8bit;
-
nand->ecc.correct = s3c_nand_correct_data_8bit;
-
nand->ecc.size = 512;
-
nand->ecc.bytes = 13;
-
nand->options |= NAND_NO_SUBPAGE_WRITE;
-
} else {
-
nand->ecc.read_page = s3c_nand_read_page_4bit;
-
nand->ecc.write_page = s3c_nand_write_page_4bit;
-
nand->ecc.size = 512;
-
nand->ecc.bytes = 8; /* really 7 bytes */
-
nand->ecc.layout = &s3c_nand_oob_mlc_64;
-
}
-
}
-
} else {
-
nand_type = S3C_NAND_TYPE_SLC;
-
nand->ecc.size = 512;
-
nand->cellinfo = 0;
-
nand->ecc.bytes = 4;
-
nand->ecc.layout = &s3c_nand_oob_16;
-
}
-
-
printk(KERN_INFO "S3C NAND Driver is using hardware ECC.\n");
-#else
-
nand->ecc.mode = NAND_ECC_SOFT;
-
printk(KERN_INFO "S3C NAND Driver is using software ECC.\n");
-#endif
-
if (nand_scan(s3c_mtd, 1)) {
-
ret = -ENXIO;
-
goto exit_error;
-
}
-
-
s3c_mtd->name = dev_name(&pdev->dev);
-
s3c_mtd->owner = THIS_MODULE;
-
-
/* Register the partitions */
-#ifdef CONFIG_MTD_CMDLINE_PARTS
-
num_partitions = parse_mtd_partitions(s3c_mtd, part_probes, &partitions, 0);
-#endif
-
if (num_partitions <= 0) {
-
/* default partition table */
-
num_partitions = plat_info->mtd_part_nr;
-
partitions = partition_info;
-
}
-
-
add_mtd_partitions(s3c_mtd, partitions, num_partitions);
-
}
-
-
pr_debug("initialized ok\n");
-
return 0;
-
-exit_error:
-
kfree(s3c_mtd);
-
-
return ret;
-}
-
-static int s5pv210_nand_probe(struct platform_device *dev)
-{
-
return s3c_nand_probe(dev, TYPE_S5PV210);
-}
-
-/* PM Support */
-#if defined(CONFIG_PM)
-static int s3c_nand_suspend(struct platform_device *dev, pm_message_t pm)
-{
-
clk_disable(s3c_nand.clk);
-
return 0;
-}
-
-static int s3c_nand_resume(struct platform_device *dev)
-{
-
clk_enable(s3c_nand.clk);
-
return 0;
-}
-
-#else
-#define s3c_nand_suspend NULL
-#define s3c_nand_resume NULL
-#endif
-
-/* device management functions */
-static int s3c_nand_remove(struct platform_device *dev)
-{
-
platform_set_drvdata(dev, NULL);
-
-
return 0;
-}
-
-static struct platform_driver s5pv210_nand_driver = {
-
.probe = s5pv210_nand_probe,
-
.remove = s3c_nand_remove,
-
.suspend = s3c_nand_suspend,
-
.resume = s3c_nand_resume,
-
.driver = {
-
.name = "s5pv210-nand",
-
.owner = THIS_MODULE,
-
},
-};
-
-static int __init s3c_nand_init(void)
-{
-
printk(KERN_INFO "S3C NAND Driver, (c) 2008 Samsung Electronics\n");
-
-
return platform_driver_register(&s5pv210_nand_driver);
-}
-
-static void __exit s3c_nand_exit(void)
-{
-
platform_driver_unregister(&s5pv210_nand_driver);
-}
-
-module_init(s3c_nand_init);
-module_exit(s3c_nand_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Jinsung Yang ");
-MODULE_DESCRIPTION("S3C MTD NAND driver");
-
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h
index 6a0dc17..3a6f037 100644
--- a/include/linux/mtd/partitions.h
+++ b/include/linux/mtd/partitions.h
@@ -49,9 +49,6 @@ struct mtd_partition {
struct mtd_info;
-int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);//jhk
-int del_mtd_partitions(struct mtd_info *);//jhk
-
/*
* Functions dealing with the various ways of partitioning the space
*/