nandflash驱动移植patch

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",- .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 <mach/map.h>  #include <plat/devs.h>  #include <plat/nand.h> -/* 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,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 <linux/module.h> -#include <linux/delay.h> -#include <linux/types.h> -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/string.h> -#include <linux/ioport.h> -#include <linux/platform_device.h> -#include <linux/delay.h> -#include <linux/err.h> -#include <linux/clk.h> -#include <linux/jiffies.h> -#include <linux/sched.h> -#include <linux/slab.h> -#include <linux/io.h> - -#include <linux/mtd/mtd.h> -#include <linux/mtd/nand.h> -#include <linux/mtd/nand_ecc.h> -#include <linux/mtd/partitions.h> - -#include <plat/regs-nand.h> -#include <plat/nand.h> - -#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",- { - .name = "ramdisk",- .size = (3*SZ_1M),- { - .name = "system",- .size = (110*SZ_1M),- { - .name = "cache",- .size = (80*SZ_1M),- { - .name = "userdata",- .size = MTDPART_SIZ_FULL,- } -#endif - { - .name = "misc",- //.mask_flags = MTD_CAP_NANDFLASH,- .size = (20*SZ_1M),- } -}; - -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,55,- 56,57,58,59,60,61,62,63 - },- .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,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},- .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,&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,-     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,page); - sndcmd = 0; - } - - chip->ecc.hwctl(mtd,NAND_ECC_READ); - chip->read_buf(mtd,&ecc_calc[chip->ecc.total]); - chip->read_buf(mtd,eccbytes); - - return sndcmd; -} - -static void s3c_nand_write_page_1bit(struct mtd_info *mtd,-  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,p,eccsize); - chip->ecc.calculate(mtd,&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,eccbytes); -} - -static int s3c_nand_read_page_1bit(struct mtd_info *mtd,- 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,eccbytes); - - col = 0; - - /* main area */ - for (i = 0; eccsteps; eccsteps--,p += eccsize) { - chip->cmdfunc(mtd,-1); - chip->ecc.hwctl(mtd,&ecc_calc[i]); - - stat = chip->ecc.correct(mtd,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,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,-1); - chip->read_buf(mtd,mtd->oobsize); - - col = 0; - for (i = 0; eccsteps; eccsteps--,eccsize); - chip->write_buf(mtd,eccbytes); - chip->ecc.calculate(mtd,0); - stat = chip->ecc.correct(mtd,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,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--,&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,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,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 *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,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,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--,&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,mtd->oobsize); -} - -int s3c_nand_read_page_8bit(struct mtd_info *mtd,-1); - s3c_nand_enable_hwecc_8bit(mtd,chip->oob_poi + mecc_pos[0] + ((chip->ecc.steps - eccsteps) * eccbytes),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,- int page,int sndcmd) -{ - int eccbytes = chip->ecc.bytes; - int secc_start = mtd->oobsize - eccbytes; - - if (sndcmd) { - chip->cmdfunc(mtd,page); - sndcmd = 0; - } - - chip->read_buf(mtd,secc_start); - return sndcmd; -} - -int s3c_nand_write_oob_8bit(struct mtd_info *mtd,int page) -{ - int status = 0; - int eccbytes = chip->ecc.bytes; - int secc_start = mtd->oobsize - eccbytes; - - chip->cmdfunc(mtd,page); - - chip->write_buf(mtd,secc_start); - chip->cmdfunc(mtd,-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,sizeof(struct mtd_info)); - memset((char *) nand,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,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 <jsgood.yang@samsung.com>"); -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   */

相关文章

  译序:JWMediaPlayer是开源的网页使用的Flash播放器。本...
    Flash编程原理都是只能将1写为0,而不能将0写成1.所...
 上传setenvgatewayip192.168.1.1;setenvserverip192.168.1...
Error:FlashDownloadFailed-"Cortex-M3"出现一般有...
jPlayer是一个用于控制和播放mp3文件的jQuery插件。它在后台...
#ifndef__FONTUPD_H__#define__FONTUPD_H__#include"sy...