summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Beisert <jbe@pengutronix.de>2013-03-03 13:52:03 +0100
committerJuergen Beisert <jbe@pengutronix.de>2013-03-03 23:18:38 +0100
commitee5cb993af2eb26002df4a73c324ddfe74f3af80 (patch)
treeb111b511f03665b09579d5eb3464680a14cdb021
parentb8dd713ee71f17a9ae5903814da104bb28fa8f00 (diff)
downloadOSELAS.BSP-Pengutronix-Mini6410-ee5cb993af2eb26002df4a73c324ddfe74f3af80.tar.gz
OSELAS.BSP-Pengutronix-Mini6410-ee5cb993af2eb26002df4a73c324ddfe74f3af80.tar.xz
Kernel: add the 3.8 revision
Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
-rw-r--r--configs/platform-friendlyarm-mini6410/Changelog2
-rw-r--r--configs/platform-friendlyarm-mini6410/kernelconfig-3.81859
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/Mini6410_Tiny6410_support.diff279
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/PATCH_2_3_rtc-s3c_Disable_alarm_entries_that_are_not_chosen.diff28
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/adapt_ts_to_extended_adc.diff27
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_1wire_driver_to_mini6410.diff126
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_buzzer_support.diff52
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_display_size_in_kernel.diff73
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_keys.diff117
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_leds.diff82
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_hwmon_feature.diff105
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_i2c_support.diff66
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_rtc_feature.diff34
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sd_card_support.diff76
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sdio_card_support.diff69
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/change_colour_depth_on_demand.diff55
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Implement_full_reset_of_network_device.patch61
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Make_the_driver_follow_the_IRQF_SHARED_contract.patch61
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_7inch_display_timing.patch36
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_lcd_match.diff27
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_pwm.diff28
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_ts_race.diff209
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/gain_access_to_the_iROM.diff45
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_onewire.patch454
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_backlight.patch190
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_touchscreen.patch286
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/patch-3.8.1.bz2bin0 -> 57380 bytes
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/remove_local_backlight_handling.diff117
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/series51
-rw-r--r--configs/platform-friendlyarm-mini6410/patches/linux-3.8/set-marker.diff17
-rw-r--r--configs/platform-friendlyarm-mini6410/platformconfig4
-rw-r--r--documentation/plain_sources/special_notes.tex5
-rw-r--r--protocol/acceptance-test.txt1
33 files changed, 4638 insertions, 4 deletions
diff --git a/configs/platform-friendlyarm-mini6410/Changelog b/configs/platform-friendlyarm-mini6410/Changelog
index 97587be..9bdeca7 100644
--- a/configs/platform-friendlyarm-mini6410/Changelog
+++ b/configs/platform-friendlyarm-mini6410/Changelog
@@ -4,6 +4,8 @@
- keep in sync with stable release .67
* Kernel 3.7:
- keep in sync with stable release .10
+ * Platform:
+ - add the recent 3.8.1 kernel
2013-01-21 Juergen Beisert <jbe@pengutronix.de>
diff --git a/configs/platform-friendlyarm-mini6410/kernelconfig-3.8 b/configs/platform-friendlyarm-mini6410/kernelconfig-3.8
new file mode 100644
index 0000000..5328462
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/kernelconfig-3.8
@@ -0,0 +1,1859 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 3.8.1-ptx-master Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_HAVE_TCM=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_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=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 is not set
+CONFIG_NEED_MACH_GPIO_H=y
+CONFIG_PHYS_OFFSET=0x50000000
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_HAVE_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=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 is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+CONFIG_KERNEL_LZO=y
+CONFIG_DEFAULT_HOSTNAME="Mini6410"
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+# CONFIG_FHANDLE is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_KTIME_SCALAR=y
+CONFIG_ARCH_USES_GETTIMEOFFSET=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_PREEMPT_RCU=y
+CONFIG_PREEMPT_RCU=y
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_BOOST is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=17
+# CONFIG_CGROUPS is not set
+# CONFIG_CHECKPOINT_RESTORE 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 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EXPERT=y
+CONFIG_HAVE_UID16=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=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_AIO is not set
+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_VM_EVENT_COUNTERS=y
+# CONFIG_SLUB_DEBUG is not set
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+# CONFIG_JUMP_LABEL is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=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_MODULE_SIG is not set
+CONFIG_BLOCK=y
+# CONFIG_LBDAF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# 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 is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# 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
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_MULTIPLATFORM is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCM2835 is not set
+# CONFIG_ARCH_CNS3XXX is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE 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_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD 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_LPC32XX is not set
+# CONFIG_ARCH_TEGRA 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_S3C24XX is not set
+CONFIG_ARCH_S3C64XX=y
+# CONFIG_ARCH_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VT8500_SINGLE 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_ERROR_RESET=y
+CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
+CONFIG_S3C_LOWLEVEL_UART_PORT=0
+CONFIG_SAMSUNG_CLOCK=y
+CONFIG_SAMSUNG_CLKSRC=y
+# CONFIG_S5P_CLOCK is not set
+CONFIG_SAMSUNG_IRQ_VIC_TIMER=y
+# CONFIG_S5P_IRQ is not set
+CONFIG_SAMSUNG_GPIOLIB_4BIT=y
+CONFIG_SAMSUNG_GPIO_EXTRA=0
+CONFIG_S3C_GPIO_SPACE=0
+CONFIG_S3C_GPIO_TRACK=y
+CONFIG_S3C_ADC=y
+CONFIG_S3C_DEV_HSMMC=y
+CONFIG_S3C_DEV_HSMMC1=y
+CONFIG_S3C_DEV_HWMON=y
+CONFIG_S3C_DEV_FB=y
+CONFIG_S3C_DEV_USB_HOST=y
+CONFIG_S3C_DEV_NAND=y
+CONFIG_S3C_DEV_RTC=y
+CONFIG_SAMSUNG_DEV_ADC=y
+CONFIG_SAMSUNG_DEV_TS=y
+CONFIG_SAMSUNG_DEV_PWM=y
+CONFIG_S3C24XX_PWM=y
+CONFIG_S3C_DMA=y
+
+#
+# Power management
+#
+# CONFIG_SAMSUNG_PM_DEBUG is not set
+# CONFIG_SAMSUNG_PM_CHECK is not set
+CONFIG_SAMSUNG_WAKEMASK=y
+CONFIG_DEBUG_S3C_UART=0
+CONFIG_PLAT_S3C64XX=y
+CONFIG_CPU_S3C6410=y
+CONFIG_S3C64XX_DMA=y
+CONFIG_S3C64XX_SETUP_SDHCI=y
+CONFIG_S3C64XX_SETUP_I2C0=y
+CONFIG_S3C64XX_SETUP_FB_24BPP=y
+CONFIG_S3C64XX_SETUP_SDHCI_GPIO=y
+# CONFIG_MACH_SMDK6400 is not set
+# CONFIG_MACH_ANW6410 is not set
+CONFIG_MACH_MINI6410=y
+# CONFIG_MACH_MINI6410_RGB888 is not set
+# CONFIG_MACH_REAL6410 is not set
+# CONFIG_MACH_SMDK6410 is not set
+# CONFIG_MACH_NCP is not set
+# CONFIG_MACH_HMT is not set
+# CONFIG_MACH_SMARTQ5 is not set
+# CONFIG_MACH_SMARTQ7 is not set
+# CONFIG_MACH_WLF_CRAGG_6410 is not set
+# CONFIG_ARCH_VT8500 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_V6=y
+CONFIG_CPU_32v6=y
+CONFIG_CPU_ABRT_EV6=y
+CONFIG_CPU_PABRT_V6=y
+CONFIG_CPU_CACHE_V6=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V6=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_USE_DOMAINS=y
+
+#
+# Processor Features
+#
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_ARM_L1_CACHE_SHIFT=5
+# CONFIG_ARM_DMA_MEM_BUFFERABLE is not set
+CONFIG_ARM_NR_BANKS=8
+CONFIG_MULTI_IRQ_HANDLER=y
+# CONFIG_ARM_ERRATA_326103 is not set
+# CONFIG_ARM_ERRATA_411920 is not set
+# CONFIG_ARM_ERRATA_364296 is not set
+CONFIG_ARM_VIC=y
+CONFIG_ARM_VIC_NR=2
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_NR_GPIO=0
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+# CONFIG_HIGHMEM is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_PAGEFLAGS_EXTENDED=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_CROSS_MEMORY_ATTACH is not set
+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
+
+#
+# Boot options
+#
+# CONFIG_USE_OF is not set
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+# CONFIG_AUTO_ZRELADDR is not set
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+
+#
+# ARM CPU frequency scaling drivers
+#
+CONFIG_ARM_S3C64XX_CPUFREQ=y
+# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
+# CONFIG_CPU_IDLE is not set
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED 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
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_PM_SLEEP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+# CONFIG_PM_RUNTIME is not set
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_APM_EMULATION is not set
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+CONFIG_UNIX=y
+# CONFIG_UNIX_DIAG is not set
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# 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_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+CONFIG_BQL=y
+# CONFIG_BPF_JIT is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
+
+#
+# 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 is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+# CONFIG_DMA_SHARED_BUFFER is not set
+# CONFIG_CMA is not set
+
+#
+# Bus devices
+#
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_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=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_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_DOCG3 is not set
+CONFIG_MTD_NAND_ECC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND=y
+# 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_DENALI is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+CONFIG_MTD_NAND_S3C2410_HWECC=y
+CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM 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 is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM 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_DS1682 is not set
+# CONFIG_BMP085_I2C is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=y
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_MII=y
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+
+#
+# CAIF transport drivers
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+# CONFIG_NET_DSA_MV88E6123_61_65 is not set
+CONFIG_ETHERNET=y
+CONFIG_NET_CADENCE=y
+# CONFIG_ARM_AT91_ETHER is not set
+# CONFIG_MACB is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_CALXEDA_XGMAC is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+CONFIG_DM9000=y
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_ETHOC is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+# CONFIG_PHYLIB is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG 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 is not set
+# 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_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 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_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
+# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 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_EDT_FT5X06 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO 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_TOUCHSCREEN_TINY6410=m
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_KXTJ9 is not set
+# CONFIG_INPUT_UINPUT is not set
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PWM_BEEPER=y
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_CMA3000 is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVKMEM=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_DEBUG is not set
+CONFIG_SERIAL_SAMSUNG_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_COMPAT is not set
+# CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_MUX is not set
+# CONFIG_I2C_HELPER_AUTO is not set
+# CONFIG_I2C_SMBUS is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_GPIO is not set
+# 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_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM 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
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+# CONFIG_PTP_1588_CLOCK is not set
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# CONFIG_PTP_1588_CLOCK_PCH is not set
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_TS5500 is not set
+
+#
+# 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:
+#
+# CONFIG_GPIO_MCP23S08 is not set
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+
+#
+# USB GPIO expanders:
+#
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_POWER_AVS is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_NTC_THERMISTOR is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SHT21 is not set
+CONFIG_SENSORS_S3C=y
+CONFIG_SENSORS_S3C_RAW=y
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH56XX_COMMON is not set
+# CONFIG_SENSORS_ADS1015 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_THERMAL is not set
+# CONFIG_WATCHDOG 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
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_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_SMSC is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_ARIZONA_I2C 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_MFD_MC13XXX_I2C is not set
+# CONFIG_ABX500_CORE is not set
+CONFIG_TINY6410_1WIRE=m
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM 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_S1D13XXX is not set
+# CONFIG_FB_TMIO is not set
+CONFIG_FB_S3C=y
+# CONFIG_FB_S3C_DEBUG_REGWRITE is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+CONFIG_BACKLIGHT_TINY6410=m
+# CONFIG_LOGO is not set
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+# CONFIG_HID is not set
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB_ARCH_HAS_XHCI is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+# CONFIG_MMC_CLKGATE is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+# 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 is not set
+CONFIG_MMC_SDHCI_S3C=y
+# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_PXAV2 is not set
+CONFIG_MMC_SDHCI_S3C_DMA=y
+# CONFIG_MMC_DW 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_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=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_PCA9633 is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_RENESAS_TPU is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_BLINKM is not set
+CONFIG_LEDS_TRIGGERS=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_ONESHOT is not set
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_CPU is not set
+CONFIG_LEDS_TRIGGER_GPIO=y
+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_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_PCF8523 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
+# CONFIG_RTC_DRV_DS2404 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_S3C=y
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+# CONFIG_DW_DMAC is not set
+# CONFIG_TIMB_DMA is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_STAGING is not set
+CONFIG_CLKDEV_LOOKUP=y
+
+#
+# Hardware Spinlock drivers
+#
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers (EXPERIMENTAL)
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers (EXPERIMENTAL)
+#
+# CONFIG_VIRT_DRIVERS is not set
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+CONFIG_PWM=y
+CONFIG_PWM_SAMSUNG=y
+# CONFIG_IPACK_BUS is not set
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_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 is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=473
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-15"
+# 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_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_LOGFS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_SWAP is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+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=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_PROVE_RCU_DELAY is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_DYNAMIC_DEBUG 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_KGDB is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_STRICT_DEVMEM is not set
+CONFIG_ARM_UNWIND=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_S3C_UART0=y
+# CONFIG_DEBUG_S3C_UART1 is not set
+# CONFIG_DEBUG_S3C_UART2 is not set
+# CONFIG_DEBUG_LL_UART_NONE is not set
+# CONFIG_DEBUG_ICEDCC is not set
+# CONFIG_DEBUG_SEMIHOSTING is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_EARLY_PRINTK=y
+# CONFIG_PID_IN_CONTEXTIDR is not set
+
+#
+# Security options
+#
+# CONFIG_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_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_MANAGER2 is not set
+# CONFIG_CRYPTO_USER 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_SHA1_ARM 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_AES_ARM is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_PERCPU_RWSEM=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+# CONFIG_CRC8 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+# CONFIG_XZ_DEC is not set
+# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_DMA=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+# CONFIG_AVERAGE is not set
+# CONFIG_CORDIC is not set
+# CONFIG_DDR is not set
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/Mini6410_Tiny6410_support.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/Mini6410_Tiny6410_support.diff
new file mode 100644
index 0000000..2e6189f
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/Mini6410_Tiny6410_support.diff
@@ -0,0 +1,279 @@
+From: Alexander Nestorov <alexandernst@gmail.com>
+Subject: Re: [oselas] Mini6410/Tiny6410 support
+
+Hi, I just wanted to paste here all the patches I applied to get the
+Tiny6410 device
+working with the 3.7 kernel from Sylwester's branch here:
+http://git.linuxtv.org/snawrocki/media.git/shortlog/refs/heads/testing/s3c-camif
+
+Note that this will boot from SD/MMC cards and make the CMOS OV9650 work.
+The LCD used is S70 AT070TN92
+Audio won't work and TouchScreen hasn't been tested. I'll keep working on
+those two things.
+
+diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
+index 63e7ae3..72b2349 100644
+--- a/arch/arm/mach-s3c64xx/Kconfig
++++ b/arch/arm/mach-s3c64xx/Kconfig
+@@ -119,6 +119,8 @@ config MACH_MINI6410
+ select S3C_DEV_HSMMC1
+ select S3C_DEV_NAND
+ select S3C_DEV_USB_HOST
++ select S3C_SETUP_CAMIF
++ select S3C_DEV_RTC
+ select SAMSUNG_DEV_ADC
+ select SAMSUNG_DEV_TS
+ help
+diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h
+b/arch/arm/mach-s3c64xx/include/mach/map.h
+index 8e2097b..e5f6dd5 100644
+--- a/arch/arm/mach-s3c64xx/include/mach/map.h
++++ b/arch/arm/mach-s3c64xx/include/mach/map.h
+@@ -65,6 +65,10 @@
+
+ #define S3C64XX_PA_NAND (0x70200000)
+ #define S3C64XX_PA_FB (0x77100000)
++
++#define S3C64XX_PA_CAMIF (0x78000000)
++#define S3C64XX_SZ_CAMIF (SZ_4M)
++
+ #define S3C64XX_PA_USB_HSOTG (0x7C000000)
+ #define S3C64XX_PA_WATCHDOG (0x7E004000)
+ #define S3C64XX_PA_RTC (0x7E005000)
+diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c
+b/arch/arm/mach-s3c64xx/mach-mini6410.c
+index 07c349c..e6491ea 100644
+--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -23,6 +23,7 @@
+ #include <linux/mtd/partitions.h>
+ #include <linux/serial_core.h>
+ #include <linux/types.h>
++#include <linux/i2c.h>
+
+ #include <asm/hardware/vic.h>
+ #include <asm/mach-types.h>
+@@ -42,6 +43,12 @@
+ #include <plat/regs-serial.h>
+ #include <linux/platform_data/touchscreen-s3c2410.h>
+
++#include <linux/platform_data/i2c-s3c2410.h>
++#include <media/s3c_camif.h>
++#include <media/ov9650.h>
++#include <plat/gpio-cfg.h>
++#include <plat/sdhci.h>
++
+ #include <video/platform_lcd.h>
+ #include <video/samsung_fimd.h>
+
+@@ -167,15 +174,15 @@ static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win
+= {
+ };
+
+ static struct fb_videomode mini6410_lcd_type1_timing = {
+- /* 7.0" 800x480 */
+- .left_margin = 8,
+- .right_margin = 13,
+- .upper_margin = 7,
+- .lower_margin = 5,
+- .hsync_len = 3,
+- .vsync_len = 1,
+- .xres = 800,
+- .yres = 480,
++ /* 7.0" 800x480 S70 AT070TN92 */
++ .left_margin = 40,
++ .right_margin = 40,
++ .upper_margin = 29,
++ .lower_margin = 17,
++ .hsync_len = 48,
++ .vsync_len = 24,
++ .xres = 800,
++ .yres = 480,
+ };
+
+ static struct s3c_fb_platdata mini6410_lcd_pdata[] __initdata = {
+@@ -195,6 +202,97 @@ static struct s3c_fb_platdata mini6410_lcd_pdata[] __initdata = {
+ { },
+ };
+
++static struct ov9650_platform_data ov9650_platform_data = {
++ .mclk_frequency = 24000000UL,
++ .gpio_reset = S3C64XX_GPF(3),
++ .gpio_pwdn = S3C64XX_GPK(2),
++};
++static struct s3c_camif_plat_data mini2440_camif_cfg __initdata = {
++ .sensor = {
++ .i2c_board_info = {
++ .type = "OV9650",
++ .addr = 0x60 >> 1,
++ .platform_data = &ov9650_platform_data,
++ },
++ .clock_frequency = 24000000U,
++ .mbus_type = V4L2_MBUS_PARALLEL,
++ .flags = V4L2_MBUS_PCLK_SAMPLE_RISING |
++ V4L2_MBUS_VSYNC_ACTIVE_HIGH |
++ V4L2_MBUS_HSYNC_ACTIVE_LOW,
++ .i2c_bus_num = 0,
++ },
++ .gpio_get = s3c_camif_gpio_get,
++ .gpio_put = s3c_camif_gpio_put,
++};
++
++
++/* this describes the SD card connector (CON7) */
++static void mini6410_cfg_sdhci0(struct platform_device *dev, int width)
++{
++ /* Set all the necessary GPG pins to special-function 2 */
++ s3c_gpio_cfgrange_nopull(S3C64XX_GPG(0), 2 + width, S3C_GPIO_SFN(2));
++}
++static struct s3c_sdhci_platdata mini6410_dev_sdhc_data __initdata = {
++ .cd_type = S3C_SDHCI_CD_INTERNAL,
++ .cfg_gpio = mini6410_cfg_sdhci0,
++};
++/*
++ * supported signals at the MMC card connector
++ * CLK -> pin A18 -> GPIOG(0) -> (native usage)
++ * CMD -> pin G13 -> GPIOG(1) -> (native usage)
++ * DAT0 -> pin B18 -> GPIOG(2) -> (native usage)
++ * DAT1 -> pin H13 -> GPIOG(3) -> (native usage)
++ * DAT2 -> pin C18 -> GPIOG(4) -> (native usage)
++ * DAT3 -> pin G12 -> GPIOG(5) -> (native usage)
++ * CD -> pin A17 -> GPIOG(6) -> (native usage)
++ * WP -> pin N17 -> GPL(13) -> (GPIO usage) (FIXME not used!)
++ */
++static void __init mini6410_mmc_init(void)
++{
++ /* write protect -> no external pull up present */
++ gpio_request_one(S3C64XX_GPL(13), GPIOF_IN, "MMC_WP");
++ gpio_export(S3C64XX_GPL(13), 0);
++ s3c_gpio_setpull(S3C64XX_GPL(13), S3C_GPIO_PULL_UP);
++ /* use as native card detect signal -> external pull up present */
++ s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(2));
++ s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_NONE);
++ s3c_sdhci0_set_platdata(&mini6410_dev_sdhc_data);
++}
++
++/* this describes the SDIO connector (CON9) */
++static void mini6410_cfg_sdio(struct platform_device *dev, int width)
++{
++ /* Set all the necessary GPG pins to special-function 2 */
++ s3c_gpio_cfgrange_nopull(S3C64XX_GPH(0), 2 + width, S3C_GPIO_SFN(2));
++}
++static struct s3c_sdhci_platdata mini6410_dev_sdio_data __initdata = {
++ .cd_type = S3C_SDHCI_CD_GPIO,
++ .ext_cd_gpio = S3C64XX_GPN(9),
++ .cfg_gpio = mini6410_cfg_sdio,
++};
++/*
++ * supported signals at the SDIO card connector
++ * CLK -> pin J11 -> GPIOH(0) -> (native usage)
++ * CMD -> pin A16 -> GPIOH(1) -> (native usage)
++ * DAT0 -> pin H11 -> GPIOH(2) -> (native usage)
++ * DAT1 -> pin C17 -> GPIOH(3) -> (native usage)
++ * DAT2 -> pin B16 -> GPIOH(4) -> (native usage)
++ * DAT3 -> pin H10 -> GPIOH(5) -> (native usage)
++ * CD -> pin AB18 -> GPION(9) -> (GPIO usage)
++ * WP -> pin M25 -> GPL(14) -> (GPIO usage) (FIXME not used!)
++ */
++static void __init mini6410_sdio_init(void)
++{
++ /* write protect -> external pull up present */
++ gpio_request_one(S3C64XX_GPL(14), GPIOF_IN, "SDIO_WP");
++ gpio_export(S3C64XX_GPL(14), 0);
++ s3c_gpio_setpull(S3C64XX_GPL(14), S3C_GPIO_PULL_NONE);
++ /* use as GPIO card detect signal -> external pull up present */
++ s3c_gpio_setpull(S3C64XX_GPN(9), S3C_GPIO_PULL_NONE);
++ s3c_sdhci1_set_platdata(&mini6410_dev_sdio_data);
++}
++
++
+ static void mini6410_lcd_power_set(struct plat_lcd_data *pd,
+ unsigned int power)
+ {
+@@ -219,11 +317,14 @@ static struct platform_device *mini6410_devices[] __initdata = {
+ &s3c_device_hsmmc0,
+ &s3c_device_hsmmc1,
+ &s3c_device_ohci,
++ &s3c_device_i2c0,
++ &s3c_device_rtc,
+ &s3c_device_nand,
+ &s3c_device_fb,
+ &mini6410_lcd_powerdev,
+ &s3c_device_adc,
+ &s3c_device_ts,
++ &s3c_device_camif,
+ };
+
+ static void __init mini6410_map_io(void)
+@@ -321,6 +422,7 @@ static void __init mini6410_machine_init(void)
+ s3c_nand_set_platdata(&mini6410_nand_info);
+ s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
+ s3c24xx_ts_set_platdata(NULL);
++ s3c_i2c0_set_platdata(NULL);
+
+ /* configure nCS1 width to 16 bits */
+
+@@ -345,7 +447,15 @@ static void __init mini6410_machine_init(void)
+ gpio_request(S3C64XX_GPF(15), "LCD power");
+ gpio_request(S3C64XX_GPE(0), "LCD power");
+
++ mini6410_mmc_init();
++ mini6410_sdio_init();
++
++ s3c_set_platdata((void *)&mini2440_camif_cfg,
++ sizeof(mini2440_camif_cfg),
++ &s3c_device_camif);
++
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
++
+ }
+
+ MACHINE_START(MINI6410, "MINI6410")
+diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
+index 03f654d..b76faa7 100644
+--- a/arch/arm/plat-samsung/devs.c
++++ b/arch/arm/plat-samsung/devs.c
+@@ -144,6 +144,24 @@ struct platform_device s3c_device_camif = {
+ };
+ #endif /* CONFIG_CPU_S3C2440 */
+
++#ifdef CONFIG_CPU_S3C6410
++static struct resource s3c_camif_resource[] = {
++ [0] = DEFINE_RES_MEM(S3C64XX_PA_CAMIF, S3C64XX_SZ_CAMIF),
++ [1] = DEFINE_RES_IRQ(IRQ_CAMIF_C),
++ [2] = DEFINE_RES_IRQ(IRQ_CAMIF_P),
++};
++struct platform_device s3c_device_camif = {
++ .name = "s3c6410-camif",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(s3c_camif_resource),
++ .resource = s3c_camif_resource,
++ .dev = {
++ .dma_mask = &samsung_device_dma_mask,
++ .coherent_dma_mask = DMA_BIT_MASK(32),
++ }
++};
++#endif /* CONFIG_CPU_S3C6410 */
++
+ /* ASOC DMA */
+
+ struct platform_device samsung_asoc_dma = {
+diff --git a/arch/arm/plat-samsung/include/plat/devs.h
+b/arch/arm/plat-samsung/include/plat/devs.h
+index 5da4b4f..a73b624 100644
+--- a/arch/arm/plat-samsung/include/plat/devs.h
++++ b/arch/arm/plat-samsung/include/plat/devs.h
+@@ -148,6 +148,13 @@ extern struct platform_device s3c_device_ac97;
+
+ #endif
+
++#ifdef CONFIG_CPU_S3C6410
++
++extern struct platform_device s3c_device_camif;
++
++#endif
++
++
+ /**
+ * s3c_set_platdata() - helper for setting platform data
+ * @pd: The default platform data for this device.
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/PATCH_2_3_rtc-s3c_Disable_alarm_entries_that_are_not_chosen.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/PATCH_2_3_rtc-s3c_Disable_alarm_entries_that_are_not_chosen.diff
new file mode 100644
index 0000000..b7e726a
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/PATCH_2_3_rtc-s3c_Disable_alarm_entries_that_are_not_chosen.diff
@@ -0,0 +1,28 @@
+From: MyungJoo Ham <myungjoo.ham@samsung.com>
+Subject: [PATCH 2/3] rtc: rtc-s3c: Disable alarm entries that are not chosen.
+
+When rtc_setalarm is called, the entries that are not chosen (entries
+without valid time values) should be disabled. However, in the previous
+rtc-s3c driver, they are not explicitly disabled (did not changed). This
+patch allows to disable such entries even if they were previously used.
+
+Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
+Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
+---
+ drivers/rtc/rtc-s3c.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: linux-3.8/drivers/rtc/rtc-s3c.c
+===================================================================
+--- linux-3.8.orig/drivers/rtc/rtc-s3c.c
++++ linux-3.8/drivers/rtc/rtc-s3c.c
+@@ -315,7 +315,8 @@ static int s3c_rtc_setalarm(struct devic
+ 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec);
+
+- alrm_en = readb(base + S3C2410_RTCALM) & S3C2410_RTCALM_ALMEN;
++ /* Disable entires that are not chosen by alarm */
++ alrm_en = S3C2410_RTCALM_ALMEN;
+ writeb(0x00, base + S3C2410_RTCALM);
+
+ if (tm->tm_sec < 60 && tm->tm_sec >= 0) {
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/adapt_ts_to_extended_adc.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/adapt_ts_to_extended_adc.diff
new file mode 100644
index 0000000..86c8bf8
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/adapt_ts_to_extended_adc.diff
@@ -0,0 +1,27 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: The S3C6410 CPU's ADC are 12 bit capable
+
+As the generic ADC driver switches on 12 bit resolution if it detects a
+S3C6410 CPU at runtime, also the touchscren driver reports 12 bit touch
+positions now.
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+---
+ drivers/input/touchscreen/s3c2410_ts.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: linux-3.8/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- linux-3.8.orig/drivers/input/touchscreen/s3c2410_ts.c
++++ linux-3.8/drivers/input/touchscreen/s3c2410_ts.c
+@@ -314,8 +314,8 @@ static int s3c2410ts_probe(struct platfo
+ ts.input = input_dev;
+ ts.input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
+ ts.input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
+- input_set_abs_params(ts.input, ABS_X, 0, 0x3FF, 0, 0);
+- input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
++ input_set_abs_params(ts.input, ABS_X, 0, 0xFFF, 0, 0);
++ input_set_abs_params(ts.input, ABS_Y, 0, 0xFFF, 0, 0);
+
+ ts.input->name = "S3C24XX TouchScreen";
+ ts.input->id.bustype = BUS_HOST;
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_1wire_driver_to_mini6410.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_1wire_driver_to_mini6410.diff
new file mode 100644
index 0000000..cd73c69
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_1wire_driver_to_mini6410.diff
@@ -0,0 +1,126 @@
+Author: Juergen Beisert <jbe@pengutronix.de>
+Subject: Add the 1wire based touch and backlight control to the mini6410
+
+This is an on demand feature. Only some display units are using it. Most display
+units are using the CPU built in touch controller and a GPIO pin for backlight
+control.
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 64 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 61 insertions(+), 3 deletions(-)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -29,6 +29,7 @@
+ #include <linux/i2c.h>
+ #include <linux/leds.h>
+ #include <linux/pwm_backlight.h>
++#include <linux/tiny6410_1wire.h>
+
+ #include <asm/hardware/vic.h>
+ #include <asm/mach-types.h>
+@@ -467,15 +468,59 @@ static struct platform_device *mini6410_
+ &s3c_device_fb,
+ &mini6410_leds,
+ &s3c_device_adc,
+- &s3c_device_ts,
+ &s3c_device_timer[0],
+- &s3c_device_timer[1],
+ &s3c_device_hwmon,
+- &mini6410_backlight_device,
+ &s3c6410_irom,
+ &mini6410_buzzer_device,
+ };
+
++/*
++ * for LCDs which uses the internal ADC and GPIO for their touchscreen and
++ * backlight switch
++ */
++static struct platform_device *mini6410_lcdtype1[] __initdata = {
++ &s3c_device_ts,
++ &s3c_device_timer[1],
++ &mini6410_backlight_device,
++};
++
++static void mini6410_1wire_pullup(int enable)
++{
++ if (enable)
++ s3c_gpio_setpull(S3C64XX_GPF(15), S3C_GPIO_PULL_UP);
++ else
++ s3c_gpio_setpull(S3C64XX_GPF(15), S3C_GPIO_PULL_NONE);
++}
++
++static struct tiny6410_1wire_platform_data mini6410_1wire_pdata = {
++ .gpio_pin = S3C64XX_GPF(15),
++ .set_pullup = mini6410_1wire_pullup,
++};
++
++static struct platform_device mini6410_1wire_device = {
++ .name = "tiny6410-1wire",
++ .id = -1,
++ .dev = {
++ .platform_data = &mini6410_1wire_pdata,
++ },
++};
++
++/*
++ * for LCDs which uses an external microcontroller for their touchscreen and
++ * backlight switch
++ */
++static struct platform_device *mini6410_lcdtype2[] __initdata = {
++ &mini6410_1wire_device,
++};
++
++static void __init mini6410_register_bl_ts(int flag)
++{
++ if (flag != 0)
++ platform_add_devices(mini6410_lcdtype2, ARRAY_SIZE(mini6410_lcdtype2));
++ else
++ platform_add_devices(mini6410_lcdtype1, ARRAY_SIZE(mini6410_lcdtype1));
++}
++
+ static void __init mini6410_map_io(void)
+ {
+ u32 tmp;
+@@ -515,10 +560,12 @@ static int __init mini6410_features_setu
+ __setup("mini6410=", mini6410_features_setup);
+
+ #define FEATURE_SCREEN (1 << 0)
++#define FEATURE_1WIRE (1 << 1)
+
+ struct mini6410_features_t {
+ int done;
+ int lcd_index;
++ int one_wire;
+ };
+
+ static void mini6410_parse_features(
+@@ -549,6 +596,14 @@ static void mini6410_parse_features(
+ }
+ features->done |= FEATURE_SCREEN;
+ break;
++ case 'i': /* one wire */
++ if (features->done & FEATURE_1WIRE) {
++ pr_err("Minit6410: '%c' ignored, 1wire "
++ "feature aready enabled\n", f);
++ } else {
++ features->one_wire = 1;
++ }
++ features->done |= FEATURE_1WIRE;
+ }
+ }
+ }
+@@ -677,6 +732,9 @@ static void __init mini6410_machine_init
+ s3c_gpio_cfgpin(S3C64XX_GPF(14), S3C_GPIO_SFN(2));
+
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
++
++ /* register touch and backlight in accordance to the attached LCD unit */
++ mini6410_register_bl_ts(features.one_wire);
+ }
+
+ MACHINE_START(MINI6410, "MINI6410")
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_buzzer_support.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_buzzer_support.diff
new file mode 100644
index 0000000..6ec221d
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_buzzer_support.diff
@@ -0,0 +1,52 @@
+Author: Juergen Beisert <jbe@pengutronix.de>
+Subject: Add support for the onboard buzzer
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -446,6 +446,15 @@ static struct platform_device s3c6410_ir
+ .resource = &s3c6410_irom_resource,
+ };
+
++static struct platform_device mini6410_buzzer_device = {
++ .name = "pwm-beeper",
++ .id = -1,
++ .dev = {
++ .parent = &s3c_device_timer[0].dev,
++ .platform_data = (void *)0, /* channel 0 */
++ },
++};
++
+ static struct platform_device *mini6410_devices[] __initdata = {
+ &mini6410_device_eth,
+ &s3c_device_hsmmc0,
+@@ -459,10 +468,12 @@ static struct platform_device *mini6410_
+ &mini6410_leds,
+ &s3c_device_adc,
+ &s3c_device_ts,
++ &s3c_device_timer[0],
+ &s3c_device_timer[1],
+ &s3c_device_hwmon,
+ &mini6410_backlight_device,
+ &s3c6410_irom,
++ &mini6410_buzzer_device,
+ };
+
+ static void __init mini6410_map_io(void)
+@@ -662,6 +673,9 @@ static void __init mini6410_machine_init
+ mini6410_mmc_init();
+ mini6410_sdio_init();
+
++ /* PWM to the buzzer */
++ s3c_gpio_cfgpin(S3C64XX_GPF(14), S3C_GPIO_SFN(2));
++
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
+
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_display_size_in_kernel.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_display_size_in_kernel.diff
new file mode 100644
index 0000000..ebae19b
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_display_size_in_kernel.diff
@@ -0,0 +1,73 @@
+Author: Juergen Beisert <jbe@pengutronix.de>
+Subject: Handle the visible size of a display in the kernel
+
+Instead of guessing the visible size of the graphic area at
+run-time, set it up in the kernel with the data from its datasheet
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 6 ++++++
+ arch/arm/plat-samsung/include/plat/fb.h | 4 ++++
+ drivers/video/s3c-fb.c | 2 ++
+ 3 files changed, 12 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -283,6 +283,9 @@ static struct s3c_fb_pd_win mini6410_lcd
+ .default_bpp = 16,
+ .xres = 480,
+ .yres = 272,
++ /* refer datasheet NEC NL4827HC19-01B */
++ .phys_width = 95,
++ .phys_height = 54,
+ };
+
+ static struct fb_videomode mini6410_lcd_type0_timing = {
+@@ -302,6 +305,9 @@ static struct s3c_fb_pd_win mini6410_lcd
+ .default_bpp = 16,
+ .xres = 800,
+ .yres = 480,
++ /* refer datasheet AT070TN83 */
++ .phys_width = 152,
++ .phys_height = 92,
+ };
+
+ static struct fb_videomode mini6410_lcd_type1_timing = {
+Index: linux-3.8/arch/arm/plat-samsung/include/plat/fb.h
+===================================================================
+--- linux-3.8.orig/arch/arm/plat-samsung/include/plat/fb.h
++++ linux-3.8/arch/arm/plat-samsung/include/plat/fb.h
+@@ -28,6 +28,8 @@
+ * @yres : The window Y size.
+ * @virtual_x: The virtual X size.
+ * @virtual_y: The virtual Y size.
++ * @phys_width: Physical width of the visible graphic area in [mm]
++ * @phys_height: Physical height of the visible graphic area in [mm]
+ */
+ struct s3c_fb_pd_win {
+ unsigned short default_bpp;
+@@ -36,6 +38,8 @@ struct s3c_fb_pd_win {
+ unsigned short yres;
+ unsigned short virtual_x;
+ unsigned short virtual_y;
++ unsigned phys_width;
++ unsigned phys_height;
+ };
+
+ /**
+Index: linux-3.8/drivers/video/s3c-fb.c
+===================================================================
+--- linux-3.8.orig/drivers/video/s3c-fb.c
++++ linux-3.8/drivers/video/s3c-fb.c
+@@ -1248,6 +1248,8 @@ static int s3c_fb_probe_win(struct s3c_f
+ fbinfo->fix.accel = FB_ACCEL_NONE;
+ fbinfo->var.activate = FB_ACTIVATE_NOW;
+ fbinfo->var.vmode = FB_VMODE_NONINTERLACED;
++ fbinfo->var.width = windata->phys_width;
++ fbinfo->var.height = windata->phys_height;
+ fbinfo->var.bits_per_pixel = windata->default_bpp;
+ fbinfo->fbops = &s3c_fb_ops;
+ fbinfo->flags = FBINFO_FLAG_DEFAULT;
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_keys.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_keys.diff
new file mode 100644
index 0000000..ea58ec1
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_keys.diff
@@ -0,0 +1,117 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Add support for the eight button keys
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 79 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 79 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -18,11 +18,13 @@
+ #include <linux/gpio.h>
+ #include <linux/kernel.h>
+ #include <linux/list.h>
++#include <linux/input.h>
+ #include <linux/dm9000.h>
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/serial_core.h>
+ #include <linux/types.h>
++#include <linux/gpio_keys.h>
+
+ #include <asm/hardware/vic.h>
+ #include <asm/mach-types.h>
+@@ -140,6 +142,82 @@ static struct s3c2410_platform_nand mini
+ .sets = mini6410_nand_sets,
+ };
+
++/*
++ * On the mini6410:
++ *
++ * | |
++ * | |
++ * ## K6 K8 ##
++ * | |
++ * ## K5 K7 ##
++ * | |
++ * ## K4 |
++ * | |
++ * ## K3 |
++ * | |
++ * ## K2 |
++ * | |
++ * ## K1 |
++ * | |
++ * |------------------------------------|
++ */
++static struct gpio_keys_button mini6410_buttons[] = {
++ {
++ .gpio = S3C64XX_GPN(0), /* K1 -> EINT0/GPN0 */
++ .code = KEY_F1,
++ .desc = "K1",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPN(1), /* K2 -> EINT1/GPN1 */
++ .code = KEY_F2,
++ .desc = "K2",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPN(2), /* K3 -> EINT2/GPN2 */
++ .code = KEY_F3,
++ .desc = "K3",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPN(3), /* K4 -> EINT3/GPN3 */
++ .code = KEY_F4,
++ .desc = "K4",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPN(4), /* K5 -> EINT4/GPN4 */
++ .code = KEY_F5,
++ .desc = "K5",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPN(5), /* K6 -> EINT5/GPN5 */
++ .code = KEY_F6,
++ .desc = "K6",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPL(11), /* K7 -> EINT19/GPL11 */
++ .code = KEY_F7,
++ .desc = "K7",
++ .active_low = 1,
++ }, {
++ .gpio = S3C64XX_GPL(12), /* K8 -> EINT20/GPL12 */
++ .code = KEY_F8,
++ .desc = "K8",
++ .active_low = 1,
++ },
++};
++
++static struct gpio_keys_platform_data mini6410_button_data = {
++ .buttons = mini6410_buttons,
++ .nbuttons = ARRAY_SIZE(mini6410_buttons),
++};
++
++static struct platform_device mini6410_button_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &mini6410_button_data,
++ }
++};
++
+ static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = {
+ .max_bpp = 32,
+ .default_bpp = 16,
+@@ -220,6 +298,7 @@ static struct platform_device *mini6410_
+ &s3c_device_hsmmc1,
+ &s3c_device_ohci,
+ &s3c_device_nand,
++ &mini6410_button_device,
+ &s3c_device_fb,
+ &mini6410_lcd_powerdev,
+ &s3c_device_adc,
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_leds.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_leds.diff
new file mode 100644
index 0000000..18b5921
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_gpio_leds.diff
@@ -0,0 +1,82 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Add support for the four green LEDs
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 48 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -25,6 +25,7 @@
+ #include <linux/serial_core.h>
+ #include <linux/types.h>
+ #include <linux/gpio_keys.h>
++#include <linux/leds.h>
+
+ #include <asm/hardware/vic.h>
+ #include <asm/mach-types.h>
+@@ -218,6 +219,52 @@ static struct platform_device mini6410_b
+ }
+ };
+
++/* LEDS */
++static const struct gpio_led mini6410_led_list[] = {
++ {
++ .name = "led1",
++ .default_trigger = "heartbeat",
++ .gpio = S3C64XX_GPK(4),
++ .active_low = 1,
++ .retain_state_suspended = 0,
++ .default_state = LEDS_GPIO_DEFSTATE_OFF,
++ }, {
++ .name = "led2",
++ .default_trigger = "nand-disk",
++ .gpio = S3C64XX_GPK(5),
++ .active_low = 1,
++ .retain_state_suspended = 0,
++ .default_state = LEDS_GPIO_DEFSTATE_OFF,
++ }, {
++ .name = "led3",
++ .default_trigger = "mmc0",
++ .gpio = S3C64XX_GPK(6),
++ .active_low = 1,
++ .retain_state_suspended = 0,
++ .default_state = LEDS_GPIO_DEFSTATE_OFF,
++ }, {
++ .name = "led4",
++ .default_trigger = NULL,
++ .gpio = S3C64XX_GPK(7),
++ .active_low = 1,
++ .retain_state_suspended = 0,
++ .default_state = LEDS_GPIO_DEFSTATE_OFF,
++ },
++};
++
++static struct gpio_led_platform_data mini6410_led_pdata = {
++ .num_leds = ARRAY_SIZE(mini6410_led_list),
++ .leds = mini6410_led_list,
++};
++
++static struct platform_device mini6410_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &mini6410_led_pdata,
++ },
++};
++
+ static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = {
+ .max_bpp = 32,
+ .default_bpp = 16,
+@@ -301,6 +348,7 @@ static struct platform_device *mini6410_
+ &mini6410_button_device,
+ &s3c_device_fb,
+ &mini6410_lcd_powerdev,
++ &mini6410_leds,
+ &s3c_device_adc,
+ &s3c_device_ts,
+ };
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_hwmon_feature.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_hwmon_feature.diff
new file mode 100644
index 0000000..5cb265d
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_hwmon_feature.diff
@@ -0,0 +1,105 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Add hwmon feature
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/Kconfig | 1
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 51 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 52 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/Kconfig
++++ linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+@@ -120,6 +120,7 @@ config MACH_MINI6410
+ select S3C_DEV_NAND
+ select S3C_DEV_USB_HOST
+ select SAMSUNG_DEV_ADC
++ select S3C_DEV_HWMON
+ select SAMSUNG_DEV_TS
+ select SAMSUNG_DEV_PWM
+ help
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -42,6 +42,7 @@
+ #include <plat/cpu.h>
+ #include <plat/devs.h>
+ #include <plat/fb.h>
++#include <linux/platform_data/hwmon-s3c.h>
+ #include <plat/gpio-cfg.h>
+ #include <linux/platform_data/mtd-nand-s3c2410.h>
+ #include <plat/regs-serial.h>
+@@ -351,6 +352,53 @@ static struct platform_device mini6410_b
+ },
+ };
+
++static struct s3c_hwmon_chcfg mini6410_adc_chcfg[8] = {
++ {
++ .name = "AIN0", /* connected to W1 */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "AIN1", /* connected to CON6/27 */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "AIN2", /* connected to CON6/28 */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "AIN3", /* connected to CON6/29 */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "TSYM", /* touchscreen Y- */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "TSYP", /* touchscreen Y+ */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "TSXM", /* touchscreen X- */
++ .mult = 3300,
++ .div = 1023,
++ }, {
++ .name = "TSXP", /* touchscreen X+ */
++ .mult = 3300,
++ .div = 1023,
++ },
++};
++
++static struct s3c_hwmon_pdata mini6410_adc __initdata = {
++ .in[0] = &mini6410_adc_chcfg[0],
++ .in[1] = &mini6410_adc_chcfg[1],
++ .in[2] = &mini6410_adc_chcfg[2],
++ .in[3] = &mini6410_adc_chcfg[3],
++ .in[4] = &mini6410_adc_chcfg[4],
++ .in[5] = &mini6410_adc_chcfg[5],
++ .in[6] = &mini6410_adc_chcfg[6],
++ .in[7] = &mini6410_adc_chcfg[7],
++};
++
+ static struct platform_device *mini6410_devices[] __initdata = {
+ &mini6410_device_eth,
+ &s3c_device_hsmmc0,
+@@ -363,6 +411,7 @@ static struct platform_device *mini6410_
+ &s3c_device_adc,
+ &s3c_device_ts,
+ &s3c_device_timer[1],
++ &s3c_device_hwmon,
+ &mini6410_backlight_device,
+ };
+
+@@ -482,6 +531,8 @@ static void __init mini6410_machine_init
+ (4 << S3C64XX_SROM_BCX__TCOS__SHIFT) |
+ (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1);
+
++ s3c_hwmon_set_platdata(&mini6410_adc);
++
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
+
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_i2c_support.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_i2c_support.diff
new file mode 100644
index 0000000..77dbd06
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_i2c_support.diff
@@ -0,0 +1,66 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Add I2C feature
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -25,6 +25,8 @@
+ #include <linux/serial_core.h>
+ #include <linux/types.h>
+ #include <linux/gpio_keys.h>
++#include <linux/i2c/at24.h>
++#include <linux/i2c.h>
+ #include <linux/leds.h>
+ #include <linux/pwm_backlight.h>
+
+@@ -40,6 +42,7 @@
+
+ #include <plat/adc.h>
+ #include <plat/cpu.h>
++#include <linux/platform_data/i2c-s3c2410.h>
+ #include <plat/devs.h>
+ #include <plat/fb.h>
+ #include <linux/platform_data/hwmon-s3c.h>
+@@ -399,10 +402,26 @@ static struct s3c_hwmon_pdata mini6410_a
+ .in[7] = &mini6410_adc_chcfg[7],
+ };
+
++/*
++ * I2C devices
++ */
++static struct at24_platform_data at24c04 = {
++ .byte_len = SZ_8K / 8,
++ .page_size = 16,
++};
++
++static struct i2c_board_info mini6410_i2c_devs[] __initdata = {
++ {
++ I2C_BOARD_INFO("24c04", 0x50),
++ .platform_data = &at24c04,
++ },
++};
++
+ static struct platform_device *mini6410_devices[] __initdata = {
+ &mini6410_device_eth,
+ &s3c_device_hsmmc0,
+ &s3c_device_hsmmc1,
++ &s3c_device_i2c0,
+ &s3c_device_ohci,
+ &s3c_device_nand,
+ &mini6410_button_device,
+@@ -532,6 +551,8 @@ static void __init mini6410_machine_init
+ (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1);
+
+ s3c_hwmon_set_platdata(&mini6410_adc);
++ s3c_i2c0_set_platdata(NULL);
++ i2c_register_board_info(0, mini6410_i2c_devs, ARRAY_SIZE(mini6410_i2c_devs));
+
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_rtc_feature.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_rtc_feature.diff
new file mode 100644
index 0000000..96fe0c7
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_rtc_feature.diff
@@ -0,0 +1,34 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Add RTC feature
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/Kconfig | 1 +
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -423,6 +423,7 @@ static struct platform_device *mini6410_
+ &s3c_device_hsmmc1,
+ &s3c_device_i2c0,
+ &s3c_device_ohci,
++ &s3c_device_rtc,
+ &s3c_device_nand,
+ &mini6410_button_device,
+ &s3c_device_fb,
+Index: linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/Kconfig
++++ linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+@@ -120,6 +120,7 @@ config MACH_MINI6410
+ select S3C_DEV_NAND
+ select S3C_DEV_USB_HOST
+ select SAMSUNG_DEV_ADC
++ select S3C_DEV_RTC
+ select S3C_DEV_HWMON
+ select SAMSUNG_DEV_TS
+ select SAMSUNG_DEV_PWM
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sd_card_support.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sd_card_support.diff
new file mode 100644
index 0000000..d89a70a
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sd_card_support.diff
@@ -0,0 +1,76 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Provide platform data for the MMC interface (CON7) to make it work
+
+Without proper platform data the MMC driver cannot work.
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 40 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -47,6 +47,7 @@
+ #include <plat/fb.h>
+ #include <linux/platform_data/hwmon-s3c.h>
+ #include <plat/gpio-cfg.h>
++#include <plat/sdhci.h>
+ #include <linux/platform_data/mtd-nand-s3c2410.h>
+ #include <plat/regs-serial.h>
+ #include <linux/platform_data/touchscreen-s3c2410.h>
+@@ -541,6 +542,43 @@ static void mini6410_parse_features(
+ }
+ }
+
++/* this describes the SD card connector (CON7) */
++static void mini6410_cfg_sdhci0(struct platform_device *dev, int width)
++{
++ /* Set all the necessary GPG pins to special-function 2 */
++ s3c_gpio_cfgrange_nopull(S3C64XX_GPG(0), 2 + width, S3C_GPIO_SFN(2));
++}
++
++static struct s3c_sdhci_platdata mini6410_dev_sdhc_data __initdata = {
++ .cd_type = S3C_SDHCI_CD_INTERNAL,
++ .cfg_gpio = mini6410_cfg_sdhci0,
++};
++
++/*
++ * supported signals at the MMC card connector
++ * CLK -> pin A18 -> GPIOG(0) -> (native usage)
++ * CMD -> pin G13 -> GPIOG(1) -> (native usage)
++ * DAT0 -> pin B18 -> GPIOG(2) -> (native usage)
++ * DAT1 -> pin H13 -> GPIOG(3) -> (native usage)
++ * DAT2 -> pin C18 -> GPIOG(4) -> (native usage)
++ * DAT3 -> pin G12 -> GPIOG(5) -> (native usage)
++ * CD -> pin A17 -> GPIOG(6) -> (native usage)
++ * WP -> pin N17 -> GPL(13) -> (GPIO usage) (FIXME not used!)
++ */
++static void __init mini6410_mmc_init(void)
++{
++ /* write protect -> no external pull up present */
++ gpio_request_one(S3C64XX_GPL(13), GPIOF_IN, "MMC_WP");
++ gpio_export(S3C64XX_GPL(13), 0);
++ s3c_gpio_setpull(S3C64XX_GPL(13), S3C_GPIO_PULL_UP);
++
++ /* use as native card detect signal -> external pull up present */
++ s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(2));
++ s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_NONE);
++
++ s3c_sdhci0_set_platdata(&mini6410_dev_sdhc_data);
++}
++
+ static void __init mini6410_machine_init(void)
+ {
+ u32 cs1;
+@@ -584,6 +622,8 @@ static void __init mini6410_machine_init
+ s3c_i2c0_set_platdata(NULL);
+ i2c_register_board_info(0, mini6410_i2c_devs, ARRAY_SIZE(mini6410_i2c_devs));
+
++ mini6410_mmc_init();
++
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
+
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sdio_card_support.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sdio_card_support.diff
new file mode 100644
index 0000000..010410b
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/add_sdio_card_support.diff
@@ -0,0 +1,69 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Provide platform data for the SDIO interface (CON9) to make it work
+
+Without proper platform data the SDHC driver cannot work.
+
+Note: This interface is untested, as I do not have any SDIO cards.
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 38 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -542,6 +542,43 @@ static void mini6410_parse_features(
+ }
+ }
+
++/* this describes the SDIO connector (CON9) */
++static void mini6410_cfg_sdio(struct platform_device *dev, int width)
++{
++ /* Set all the necessary GPG pins to special-function 2 */
++ s3c_gpio_cfgrange_nopull(S3C64XX_GPH(0), 2 + width, S3C_GPIO_SFN(2));
++}
++
++static struct s3c_sdhci_platdata mini6410_dev_sdio_data __initdata = {
++ .cd_type = S3C_SDHCI_CD_GPIO,
++ .ext_cd_gpio = S3C64XX_GPN(9),
++ .cfg_gpio = mini6410_cfg_sdio,
++};
++
++/*
++ * supported signals at the SDIO card connector
++ * CLK -> pin J11 -> GPIOH(0) -> (native usage)
++ * CMD -> pin A16 -> GPIOH(1) -> (native usage)
++ * DAT0 -> pin H11 -> GPIOH(2) -> (native usage)
++ * DAT1 -> pin C17 -> GPIOH(3) -> (native usage)
++ * DAT2 -> pin B16 -> GPIOH(4) -> (native usage)
++ * DAT3 -> pin H10 -> GPIOH(5) -> (native usage)
++ * CD -> pin AB18 -> GPION(9) -> (GPIO usage)
++ * WP -> pin M25 -> GPL(14) -> (GPIO usage) (FIXME not used!)
++ */
++static void __init mini6410_sdio_init(void)
++{
++ /* write protect -> external pull up present */
++ gpio_request_one(S3C64XX_GPL(14), GPIOF_IN, "SDIO_WP");
++ gpio_export(S3C64XX_GPL(14), 0);
++ s3c_gpio_setpull(S3C64XX_GPL(14), S3C_GPIO_PULL_NONE);
++
++ /* use as GPIO card detect signal -> external pull up present */
++ s3c_gpio_setpull(S3C64XX_GPN(9), S3C_GPIO_PULL_NONE);
++
++ s3c_sdhci1_set_platdata(&mini6410_dev_sdio_data);
++}
++
+ /* this describes the SD card connector (CON7) */
+ static void mini6410_cfg_sdhci0(struct platform_device *dev, int width)
+ {
+@@ -623,6 +660,7 @@ static void __init mini6410_machine_init
+ i2c_register_board_info(0, mini6410_i2c_devs, ARRAY_SIZE(mini6410_i2c_devs));
+
+ mini6410_mmc_init();
++ mini6410_sdio_init();
+
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/change_colour_depth_on_demand.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/change_colour_depth_on_demand.diff
new file mode 100644
index 0000000..e443858
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/change_colour_depth_on_demand.diff
@@ -0,0 +1,55 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Increase colour depth on demand
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+---
+ arch/arm/mach-s3c64xx/Kconfig | 7 +++++++
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 9 +++++++++
+ 2 files changed, 16 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -280,6 +280,11 @@ static struct platform_device mini6410_l
+
+ static struct s3c_fb_pd_win mini6410_lcd_type0_fb_win = {
+ .max_bpp = 32,
++#ifdef CONFIG_MACH_MINI6410_RGB888
++ .default_bpp = 24,
++#else
++ .default_bpp = 16,
++#endif
+ .default_bpp = 16,
+ .xres = 480,
+ .yres = 272,
+@@ -302,7 +307,11 @@ static struct fb_videomode mini6410_lcd_
+
+ static struct s3c_fb_pd_win mini6410_lcd_type1_fb_win = {
+ .max_bpp = 32,
++#ifdef CONFIG_MACH_MINI6410_RGB888
++ .default_bpp = 24,
++#else
+ .default_bpp = 16,
++#endif
+ .xres = 800,
+ .yres = 480,
+ /* refer datasheet AT070TN83 */
+Index: linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/Kconfig
++++ linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+@@ -127,6 +127,13 @@ config MACH_MINI6410
+ help
+ Machine support for the FriendlyARM MINI6410
+
++config MACH_MINI6410_RGB888
++ bool "Use 24 bit colour depth"
++ depends on MACH_MINI6410
++ help
++ Default setting for the colour deppth of the framebuffer is RGB565.
++ Enable this entry to use a default of RGB888
++
+ config MACH_REAL6410
+ bool "REAL6410"
+ select CPU_S3C6410
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Implement_full_reset_of_network_device.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Implement_full_reset_of_network_device.patch
new file mode 100644
index 0000000..5a57c00
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Implement_full_reset_of_network_device.patch
@@ -0,0 +1,61 @@
+From: Michael Abbott <michael@araneidae.co.uk>
+Subject: [PATCH] Implement full reset of DM9000 network device
+
+A Davicom application note for the DM9000 network device recommends
+performing software reset twice to correctly initialise the device.
+Without this reset some devices fail to initialise correctly on
+system startup.
+
+Signed-off-by: Michael Abbott <michael.abbott@diamond.ac.uk>
+---
+ drivers/net/ethernet/davicom/dm9000.c | 30 +++++++++++++++++++-----------
+ 1 file changed, 19 insertions(+), 11 deletions(-)
+
+Index: linux-3.8/drivers/net/ethernet/davicom/dm9000.c
+===================================================================
+--- linux-3.8.orig/drivers/net/ethernet/davicom/dm9000.c
++++ linux-3.8/drivers/net/ethernet/davicom/dm9000.c
+@@ -156,17 +156,6 @@ static inline board_info_t *to_dm9000_bo
+
+ /* DM9000 network board routine ---------------------------- */
+
+-static void
+-dm9000_reset(board_info_t * db)
+-{
+- dev_dbg(db->dev, "resetting device\n");
+-
+- /* RESET device */
+- writeb(DM9000_NCR, db->io_addr);
+- udelay(200);
+- writeb(NCR_RST, db->io_data);
+- udelay(200);
+-}
+
+ /*
+ * Read a byte from I/O port
+@@ -189,6 +178,25 @@ iow(board_info_t * db, int reg, int valu
+ writeb(value, db->io_data);
+ }
+
++static void dm9000_reset(board_info_t *db)
++{
++ dev_dbg(db->dev, "resetting device\n");
++
++ /* Reset DM9000, see DM9000 Application Notes V1.22 Jun 11, 2004 page 29
++ * The essential point is that we have to do a double reset, and the
++ * instruction is to set LBK into MAC internal loopback mode. */
++ iow(db, DM9000_NCR, 0x03);
++ udelay(100); /* Application note says at least 20 us */
++ if (ior(db, DM9000_NCR) & 1)
++ dev_err(db->dev, "dm9000 did not respond to first reset\n");
++
++ iow(db, DM9000_NCR, 0);
++ iow(db, DM9000_NCR, 0x03);
++ udelay(100);
++ if (ior(db, DM9000_NCR) & 1)
++ dev_err(db->dev, "dm9000 did not respond to second reset\n");
++}
++
+ /* routines for sending block to chip */
+
+ static void dm9000_outblk_8bit(void __iomem *reg, void *data, int count)
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Make_the_driver_follow_the_IRQF_SHARED_contract.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Make_the_driver_follow_the_IRQF_SHARED_contract.patch
new file mode 100644
index 0000000..17214b5
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/dm9000_Make_the_driver_follow_the_IRQF_SHARED_contract.patch
@@ -0,0 +1,61 @@
+From: Daniel Morsing <daniel.morsing@gmail.com>
+Subject: [PATCH] dm9000: Make the driver follow the IRQF_SHARED contract
+
+The dm9000 driver requests a shared interrupt but doesn't return
+IRQ_NONE when the device didn't generate the interrupt. This could lead
+to the other devices sharing the irq never getting an interrupt. This
+patch makes the routine return IRQ_NONE for the path where no work was
+done.
+
+Signed-off-by: Daniel Morsing <daniel.morsing@gmail.com>
+Cc: stable@kernel.org
+---
+ drivers/net/ethernet/davicom/dm9000.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+Index: linux-3.8/drivers/net/ethernet/davicom/dm9000.c
+===================================================================
+--- linux-3.8.orig/drivers/net/ethernet/davicom/dm9000.c
++++ linux-3.8/drivers/net/ethernet/davicom/dm9000.c
+@@ -1063,6 +1063,7 @@ static irqreturn_t dm9000_interrupt(int
+ int int_status;
+ unsigned long flags;
+ u8 reg_save;
++ irqreturn_t ret = IRQ_NONE;
+
+ dm9000_dbg(db, 3, "entering %s\n", __func__);
+
+@@ -1085,17 +1086,22 @@ static irqreturn_t dm9000_interrupt(int
+ dev_dbg(db->dev, "interrupt status %02x\n", int_status);
+
+ /* Received the coming packet */
+- if (int_status & ISR_PRS)
++ if (int_status & ISR_PRS) {
+ dm9000_rx(dev);
++ ret = IRQ_HANDLED;
++ }
+
+ /* Trnasmit Interrupt check */
+- if (int_status & ISR_PTS)
++ if (int_status & ISR_PTS) {
+ dm9000_tx_done(dev, db);
++ ret = IRQ_HANDLED;
++ }
+
+ if (db->type != TYPE_DM9000E) {
+ if (int_status & ISR_LNKCHNG) {
+ /* fire a link-change request */
+ schedule_delayed_work(&db->phy_poll, 1);
++ ret = IRQ_HANDLED;
+ }
+ }
+
+@@ -1107,7 +1113,7 @@ static irqreturn_t dm9000_interrupt(int
+
+ spin_unlock_irqrestore(&db->lock, flags);
+
+- return IRQ_HANDLED;
++ return ret;
+ }
+
+ static irqreturn_t dm9000_wol_interrupt(int irq, void *dev_id)
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_7inch_display_timing.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_7inch_display_timing.patch
new file mode 100644
index 0000000..0365db4
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_7inch_display_timing.patch
@@ -0,0 +1,36 @@
+From: Alexander Nestorov <alexandernst@gmail.com>
+Subject: fix the LCD timing for the AT070TN92 display unit
+
+Note from jbe: I'm not sure if this patch is really required.
+
+Signed-off-by: Alexander Nestorov <alexandernst@gmail.com>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -322,13 +322,13 @@ static struct s3c_fb_pd_win mini6410_lcd
+ };
+
+ static struct fb_videomode mini6410_lcd_type1_timing = {
+- /* 7.0" 800x480 */
+- .left_margin = 8,
+- .right_margin = 13,
+- .upper_margin = 7,
+- .lower_margin = 5,
+- .hsync_len = 3,
+- .vsync_len = 1,
++ /* 7.0" 800x480 S70 AT070TN92 */
++ .left_margin = 40,
++ .right_margin = 40,
++ .upper_margin = 29,
++ .lower_margin = 17,
++ .hsync_len = 48,
++ .vsync_len = 24,
+ .xres = 800,
+ .yres = 480,
+ };
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_lcd_match.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_lcd_match.diff
new file mode 100644
index 0000000..1900f98
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_lcd_match.diff
@@ -0,0 +1,27 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Center the picture on the display
+
+Without this patch the top line and the left collumn are not displayed.
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -287,9 +287,9 @@ static struct s3c_fb_pd_win mini6410_lcd
+
+ static struct fb_videomode mini6410_lcd_type0_timing = {
+ /* 4.3" 480x272 */
+- .left_margin = 3,
++ .left_margin = 4,
+ .right_margin = 2,
+- .upper_margin = 1,
++ .upper_margin = 2,
+ .lower_margin = 1,
+ .hsync_len = 40,
+ .vsync_len = 1,
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_pwm.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_pwm.diff
new file mode 100644
index 0000000..723261f
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_pwm.diff
@@ -0,0 +1,28 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: samsung-plat: Avoid division by zero
+
+The pwm-beeper driver crashes the PWM driver by calling with a period time of
+zero nanoseconds.
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ drivers/pwm/pwm-samsung.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+Index: linux-3.8/drivers/pwm/pwm-samsung.c
+===================================================================
+--- linux-3.8.orig/drivers/pwm/pwm-samsung.c
++++ linux-3.8/drivers/pwm/pwm-samsung.c
+@@ -136,7 +136,10 @@ static int s3c_pwm_config(struct pwm_chi
+ tcmp = __raw_readl(S3C2410_TCMPB(s3c->pwm_id));
+ tcnt = __raw_readl(S3C2410_TCNTB(s3c->pwm_id));
+
+- period = NS_IN_HZ / period_ns;
++ if (period_ns)
++ period = NS_IN_HZ / period_ns;
++ else
++ period = 0;
+
+ pwm_dbg(s3c, "duty_ns=%d, period_ns=%d (%lu)\n",
+ duty_ns, period_ns, period);
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_ts_race.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_ts_race.diff
new file mode 100644
index 0000000..7287c92
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/fix_ts_race.diff
@@ -0,0 +1,209 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Remove a race from the s3c2410 touch driver
+
+There seems a race in the driver when it uses the bit 15 from the dat0 and dat1
+register: These bits are only valid when the pen interrupt feature is enabled.
+This is not the case when a regular touchscreen X/Y conversion is running. It
+only works due to a small race between s3c24xx_ts_select(), stylus_irq() and
+touch_timer_fire(). It is broken immediately when the debug output of the
+touchscreen driver will be enabled or the debug output of the ADC driver. In
+this case the conversion never stops, even there is no pressure on the touch
+anymore.
+
+This patch simplifies the driver and stops any further conversion if the pen up
+interrupt is received. Pen up and down detection is now done only in the
+pen interrupt routine. This also prevents the driver forwarding garbage data
+to userland, because when the pen is up, the X value is always 0.
+
+Note: This patch makes the driver stop working on a S3C2410 CPU.
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ drivers/input/touchscreen/s3c2410_ts.c | 90 ++++++++++++++++-----------------
+ 1 file changed, 45 insertions(+), 45 deletions(-)
+
+Index: linux-3.8/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- linux-3.8.orig/drivers/input/touchscreen/s3c2410_ts.c
++++ linux-3.8/drivers/input/touchscreen/s3c2410_ts.c
+@@ -22,7 +22,6 @@
+ * Additional work by Herbert Pötzl <herbert@13thfloor.at> and
+ * Harald Welte <laforge@openmoko.org>
+ */
+-
+ #include <linux/errno.h>
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+@@ -57,6 +56,10 @@
+
+ #define FEAT_PEN_IRQ (1 << 0) /* HAS ADCCLRINTPNDNUP */
+
++/* bits from the ADCUPDN register */
++#define TSC_UP (1 << 1)
++#define TSC_DN (1 << 0)
++
+ /* Per-touchscreen data. */
+
+ /**
+@@ -85,36 +88,21 @@ struct s3c2410ts {
+ int count;
+ int shift;
+ int features;
++ bool pen_is_down;
+ };
+
+ static struct s3c2410ts ts;
+
+-/**
+- * get_down - return the down state of the pen
+- * @data0: The data read from ADCDAT0 register.
+- * @data1: The data read from ADCDAT1 register.
+- *
+- * Return non-zero if both readings show that the pen is down.
+- */
+-static inline bool get_down(unsigned long data0, unsigned long data1)
++/* signal an interrupt when the pen hits the touch */
++static void waiting_for_pen_down(struct s3c2410ts *ts)
+ {
+- /* returns true if both data values show stylus down */
+- return (!(data0 & S3C2410_ADCDAT0_UPDOWN) &&
+- !(data1 & S3C2410_ADCDAT0_UPDOWN));
++ writel(WAIT4INT | INT_DOWN, ts->io + S3C2410_ADCTSC);
++ ts->pen_is_down = false;
+ }
+
+ static void touch_timer_fire(unsigned long data)
+ {
+- unsigned long data0;
+- unsigned long data1;
+- bool down;
+-
+- data0 = readl(ts.io + S3C2410_ADCDAT0);
+- data1 = readl(ts.io + S3C2410_ADCDAT1);
+-
+- down = get_down(data0, data1);
+-
+- if (down) {
++ if (ts.pen_is_down) {
+ if (ts.count == (1 << ts.shift)) {
+ ts.xp >>= ts.shift;
+ ts.yp >>= ts.shift;
+@@ -124,7 +112,6 @@ static void touch_timer_fire(unsigned lo
+
+ input_report_abs(ts.input, ABS_X, ts.xp);
+ input_report_abs(ts.input, ABS_Y, ts.yp);
+-
+ input_report_key(ts.input, BTN_TOUCH, 1);
+ input_sync(ts.input);
+
+@@ -132,7 +119,7 @@ static void touch_timer_fire(unsigned lo
+ ts.yp = 0;
+ ts.count = 0;
+ }
+-
++ /* as long as the pen is down, trigger the next conversion */
+ s3c_adc_start(ts.client, 0, 1 << ts.shift);
+ } else {
+ ts.xp = 0;
+@@ -154,30 +141,35 @@ static DEFINE_TIMER(touch_timer, touch_t
+ * @dev_id: The device ID.
+ *
+ * Called when the IRQ_TC is fired for a pen up or down event.
++ *
++ * Do not change the pen detection interrupt setting here. An ADC conversion
++ * may still is ongoing.
+ */
+ static irqreturn_t stylus_irq(int irq, void *dev_id)
+ {
+- unsigned long data0;
+- unsigned long data1;
+- bool down;
+-
+- data0 = readl(ts.io + S3C2410_ADCDAT0);
+- data1 = readl(ts.io + S3C2410_ADCDAT1);
++ u32 reg;
+
+- down = get_down(data0, data1);
++ reg = readl(ts.io + S3C64XX_ADCUPDN);
++ writel(0x0, ts.io + S3C64XX_ADCUPDN); /* just clear the status */
+
+- /* TODO we should never get an interrupt with down set while
+- * the timer is running, but maybe we ought to verify that the
+- * timer isn't running anyways. */
+-
+- if (down)
+- s3c_adc_start(ts.client, 0, 1 << ts.shift);
+- else
+- dev_dbg(ts.dev, "%s: count=%d\n", __func__, ts.count);
+-
+- if (ts.features & FEAT_PEN_IRQ) {
++ if (reg & TSC_DN) {
++ if (!ts.pen_is_down) {
++ /* Waiting for pen-up is done after the conversion */
++ ts.pen_is_down = true;
++ s3c_adc_start(ts.client, 0, 1 << ts.shift);
++ dev_dbg(ts.dev, "%s: Start\n", __func__);
++ } else
++ dev_dbg(ts.dev, "%s: Ignoring pen down bounce\n", __func__);
+ /* Clear pen down/up interrupt */
+ writel(0x0, ts.io + S3C64XX_ADCCLRINTPNDNUP);
++ } else {
++ if (reg & TSC_UP) {
++ dev_dbg(ts.dev, "%s: Stop\n", __func__);
++ ts.pen_is_down = false;
++ /* Clear pen down/up interrupt */
++ writel(0x0, ts.io + S3C64XX_ADCCLRINTPNDNUP);
++ } else
++ dev_dbg(ts.dev, "%s: Unknown reason\n", __func__);
+ }
+
+ return IRQ_HANDLED;
+@@ -223,11 +215,19 @@ static void s3c24xx_ts_conversion(struct
+ static void s3c24xx_ts_select(struct s3c_adc_client *client, unsigned select)
+ {
+ if (select) {
++ /* do a full X/Y conversion */
+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST,
+ ts.io + S3C2410_ADCTSC);
+ } else {
+- mod_timer(&touch_timer, jiffies+1);
++ /*
++ * Switch back to pen up detection
++ */
+ writel(WAIT4INT | INT_UP, ts.io + S3C2410_ADCTSC);
++ /*
++ * After each conversion do a small pause to give the
++ * pen up detection a chance to happen.
++ */
++ mod_timer(&touch_timer, jiffies + 1);
+ }
+ }
+
+@@ -304,8 +304,6 @@ static int s3c2410ts_probe(struct platfo
+ if ((info->delay & 0xffff) > 0)
+ writel(info->delay & 0xffff, ts.io + S3C2410_ADCDLY);
+
+- writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);
+-
+ input_dev = input_allocate_device();
+ if (!input_dev) {
+ dev_err(dev, "Unable to allocate the input device !!\n");
+@@ -335,6 +333,8 @@ static int s3c2410ts_probe(struct platfo
+ goto err_inputdev;
+ }
+
++ waiting_for_pen_down(&ts);
++
+ dev_info(dev, "driver attached, registering input device\n");
+
+ /* All went ok, so register to the input system */
+@@ -401,7 +401,7 @@ static int s3c2410ts_resume(struct devic
+ if ((info->delay & 0xffff) > 0)
+ writel(info->delay & 0xffff, ts.io + S3C2410_ADCDLY);
+
+- writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);
++ waiting_for_pen_down(&ts);
+
+ return 0;
+ }
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/gain_access_to_the_iROM.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/gain_access_to_the_iROM.diff
new file mode 100644
index 0000000..7d2d713
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/gain_access_to_the_iROM.diff
@@ -0,0 +1,45 @@
+Subject: Enable access to the built in iROM
+
+This let us read the contenct of the so called "BL0", the built in bootloader
+in the Samsung S3C6410 CPU.
+
+The content can be read via the mtd framework.
+
+Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
+
+---
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -432,6 +432,19 @@ static struct i2c_board_info mini6410_i2
+ },
+ };
+
++static struct resource s3c6410_irom_resource = {
++ .start = 0x0c000000,
++ .end = 0x0c000000 + 32768 - 1,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device s3c6410_irom = {
++ .name = "map_rom",
++ .id = -1,
++ .num_resources = 1,
++ .resource = &s3c6410_irom_resource,
++};
++
+ static struct platform_device *mini6410_devices[] __initdata = {
+ &mini6410_device_eth,
+ &s3c_device_hsmmc0,
+@@ -448,6 +461,7 @@ static struct platform_device *mini6410_
+ &s3c_device_timer[1],
+ &s3c_device_hwmon,
+ &mini6410_backlight_device,
++ &s3c6410_irom,
+ };
+
+ static void __init mini6410_map_io(void)
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_onewire.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_onewire.patch
new file mode 100644
index 0000000..3271029
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_onewire.patch
@@ -0,0 +1,454 @@
+commit 01d02718dc6fb7c12c6163acf901e9bf67d2f891
+Author: Tomasz Figa <tomasz.figa@gmail.com>
+Date: Fri Aug 19 00:41:52 2011 +0200
+
+ mfd: Add support for Tiny6410 1-wire multifunctional LCD module.
+
+---
+ drivers/mfd/Kconfig | 8
+ drivers/mfd/Makefile | 1
+ drivers/mfd/tiny6410_1wire.c | 329 +++++++++++++++++++++++++++++++++++++
+ include/linux/mfd/tiny6410_1wire.h | 34 +++
+ include/linux/tiny6410_1wire.h | 31 +++
+ 5 files changed, 403 insertions(+)
+
+Index: linux-3.8/drivers/mfd/Kconfig
+===================================================================
+--- linux-3.8.orig/drivers/mfd/Kconfig
++++ linux-3.8/drivers/mfd/Kconfig
+@@ -896,6 +896,14 @@ config MFD_CS5535
+ This is the core driver for CS5535/CS5536 MFD functions. This is
+ necessary for using the board's GPIO and MFGPT functionality.
+
++config TINY6410_1WIRE
++ tristate "Support for Tiny6410 proprietary 1-wire bus virtual host"
++ select MFD_CORE
++ ---help---
++ This is the core driver for the virtual, proprietary 1-wire bus
++ bitbanged host using a GPIO pin. It is currently used to communicate
++ with touchscreen and backlights controllers.
++
+ config MFD_TIMBERDALE
+ tristate "Support for the Timberdale FPGA"
+ select MFD_CORE
+Index: linux-3.8/drivers/mfd/Makefile
+===================================================================
+--- linux-3.8.orig/drivers/mfd/Makefile
++++ linux-3.8/drivers/mfd/Makefile
+@@ -121,6 +121,7 @@ obj-$(CONFIG_AB8500_GPADC) += ab8500-gpa
+ obj-$(CONFIG_MFD_DB8500_PRCMU) += db8500-prcmu.o
+ # ab8500-core need to come after db8500-prcmu (which provides the channel)
+ obj-$(CONFIG_AB8500_CORE) += ab8500-core.o ab8500-sysctrl.o
++obj-$(CONFIG_TINY6410_1WIRE) += tiny6410_1wire.o
+ obj-$(CONFIG_MFD_TIMBERDALE) += timberdale.o
+ obj-$(CONFIG_PMIC_ADP5520) += adp5520.o
+ obj-$(CONFIG_LPC_SCH) += lpc_sch.o
+Index: linux-3.8/drivers/mfd/tiny6410_1wire.c
+===================================================================
+--- /dev/null
++++ linux-3.8/drivers/mfd/tiny6410_1wire.c
+@@ -0,0 +1,329 @@
++/*
++ * mini6410_1wire_host.c
++ *
++ * LCD-CPU one wire communication for Tiny6410
++ *
++ * Copyright 2011 Tomasz Figa <tomasz.figa at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/sched.h>
++#include <linux/hrtimer.h>
++#include <linux/completion.h>
++#include <linux/gpio.h>
++
++#include <linux/tiny6410_1wire.h>
++#include <linux/mfd/tiny6410_1wire.h>
++
++#define TINY6410_BUS_CLOCK (9600)
++#define TINY6410_1WIRE_DELAY ((NSEC_PER_SEC / TINY6410_BUS_CLOCK) - 500)
++
++/*
++ * Driver data
++ */
++
++enum tiny6410_1wire_state {
++ TINY6410_1WIRE_IDLE = 0,
++ TINY6410_1WIRE_RESET,
++ TINY6410_1WIRE_TX,
++ TINY6410_1WIRE_WAIT1,
++ TINY6410_1WIRE_WAIT2,
++ TINY6410_1WIRE_RX,
++ TINY6410_1WIRE_STOP,
++};
++
++struct tiny6410_1wire {
++ struct mutex lock;
++ struct completion completion;
++ struct hrtimer timer;
++ enum tiny6410_1wire_state state;
++ struct device *dev;
++
++ u16 tx_data;
++ u32 rx_data;
++ int error;
++ ktime_t next_event;
++ int bits_left;
++
++ struct tiny6410_1wire_platform_data *pdata;
++};
++
++/*
++ * CRC 8
++ */
++
++static const unsigned char crc8_tab[] = {
++ 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15,
++ 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d,
++ 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65,
++ 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d,
++ 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5,
++ 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
++ 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85,
++ 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd,
++ 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2,
++ 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea,
++ 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2,
++ 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
++ 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32,
++ 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a,
++ 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42,
++ 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a,
++ 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c,
++ 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
++ 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec,
++ 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4,
++ 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
++ 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44,
++ 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c,
++ 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
++ 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b,
++ 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63,
++ 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b,
++ 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13,
++ 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb,
++ 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83,
++ 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb,
++ 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3,
++};
++
++/*
++ * 1-wire I/O
++ */
++
++int tiny6410_1wire_transfer(struct tiny6410_1wire *bus,
++ u8 tx_data, u32 *rx_data)
++{
++ int ret;
++ u32 rx;
++ u8 crc;
++ int retry = 0;
++
++ /* Calculate CRC8 checksum */
++ crc = crc8_tab[0xac ^ tx_data];
++
++restart:
++ /* Lock the bus */
++ mutex_lock(&bus->lock);
++
++ /* Prepare the transfer */
++ bus->error = 0;
++ bus->tx_data = (tx_data << 8) | crc;
++
++ /* Put the bus into the reset state */
++ gpio_direction_output(bus->pdata->gpio_pin, 0);
++ bus->state = TINY6410_1WIRE_RESET;
++
++ /* Schedule the timer */
++ bus->next_event = ktime_add_ns(ktime_get(), TINY6410_1WIRE_DELAY);
++ hrtimer_start(&bus->timer, bus->next_event, HRTIMER_MODE_ABS);
++
++ /* Wait for the transfer to finish */
++ ret = wait_for_completion_interruptible(&bus->completion);
++ if (!ret)
++ ret = bus->error;
++ rx = bus->rx_data;
++
++ /* Unlock the bus */
++ mutex_unlock(&bus->lock);
++
++ /* Check CRC8 checksum of received data */
++ if (!ret && rx_data) {
++ *rx_data = rx >> 8;
++ crc = crc8_tab[0xac ^ ((rx >> 24) & 0xff)];
++ crc = crc8_tab[crc ^ ((rx >> 16) & 0xff)];
++ crc = crc8_tab[crc ^ ((rx >> 8) & 0xff)];
++ if (crc != (rx & 0xff))
++ ret = -EBADMSG;
++ }
++
++ if (ret && ++retry <= 10)
++ goto restart;
++
++ return ret;
++}
++EXPORT_SYMBOL(tiny6410_1wire_transfer);
++
++static enum hrtimer_restart tiny6410_1wire_timer(struct hrtimer *timer)
++{
++ struct tiny6410_1wire *bus = container_of(timer,
++ struct tiny6410_1wire, timer);
++ struct tiny6410_1wire_platform_data *pdata = bus->pdata;
++ int ret;
++
++ switch(bus->state) {
++ case TINY6410_1WIRE_RESET:
++ /* Start transfer */
++ bus->bits_left = 16;
++ bus->state = TINY6410_1WIRE_TX;
++ break;
++
++ case TINY6410_1WIRE_TX:
++ /* Send a bit */
++ gpio_set_value(pdata->gpio_pin, bus->tx_data & 0x8000);
++ bus->tx_data <<= 1;
++ if (--bus->bits_left == 0)
++ bus->state = TINY6410_1WIRE_WAIT1;
++ break;
++
++ case TINY6410_1WIRE_WAIT1:
++ /* Wait state */
++ gpio_direction_input(pdata->gpio_pin);
++ bus->state = TINY6410_1WIRE_WAIT2;
++ break;
++
++ case TINY6410_1WIRE_WAIT2:
++ /* Wait state */
++ bus->bits_left = 32;
++ bus->state = TINY6410_1WIRE_RX;
++ break;
++
++ case TINY6410_1WIRE_RX:
++ /* Receive a bit */
++ bus->rx_data <<= 1;
++ bus->rx_data |= gpio_get_value(pdata->gpio_pin);
++ if (--bus->bits_left == 0) {
++ bus->bits_left = 2;
++ bus->state = TINY6410_1WIRE_STOP;
++ gpio_direction_output(pdata->gpio_pin, 1);
++ }
++ break;
++
++ case TINY6410_1WIRE_STOP:
++ /* Stop condition */
++ if (--bus->bits_left == 0) {
++ bus->state = TINY6410_1WIRE_IDLE;
++ complete(&bus->completion);
++ return HRTIMER_NORESTART;
++ }
++ break;
++
++ default:
++ BUG();
++ }
++
++ ret = hrtimer_forward(&bus->timer, bus->next_event,
++ ktime_set(0, TINY6410_1WIRE_DELAY));
++ if (ret > 1) {
++ bus->error = -ETIMEDOUT;
++ complete(&bus->completion);
++ return HRTIMER_NORESTART;
++ }
++
++ bus->next_event = hrtimer_get_expires(&bus->timer);
++
++ return HRTIMER_RESTART;
++}
++
++/*
++ * Platform bus
++ */
++
++static struct mfd_cell tiny6410_1wire_cells[] = {
++ {
++ .name = "tiny6410-1wire-backlight",
++ },
++ {
++ .name = "tiny6410-1wire-touchscreen",
++ },
++};
++
++static int tiny6410_1wire_probe(struct platform_device *pdev)
++{
++ struct tiny6410_1wire_platform_data *pdata = pdev->dev.platform_data;
++ struct tiny6410_1wire *data;
++ int ret;
++
++ if (!pdata || !pdata->set_pullup || !gpio_is_valid(pdata->gpio_pin)) {
++ dev_err(&pdev->dev, "Invalid platform data.\n");
++ return -EINVAL;
++ }
++
++ ret = gpio_request(pdata->gpio_pin, "Tiny6410 1-wire");
++ if (ret) {
++ dev_err(&pdev->dev, "Could not request 1-wire GPIO.\n");
++ return ret;
++ }
++
++ data = kzalloc(sizeof(*data), GFP_KERNEL);
++ if (!data) {
++ dev_err(&pdev->dev, "Could not allocate driver data.\n");
++ gpio_free(pdata->gpio_pin);
++ return -ENOMEM;
++ }
++
++ data->pdata = pdata;
++ data->dev = &pdev->dev;
++ hrtimer_init(&data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
++ mutex_init(&data->lock);
++ init_completion(&data->completion);
++ data->timer.function = tiny6410_1wire_timer;
++ platform_set_drvdata(pdev, data);
++
++ gpio_direction_output(pdata->gpio_pin, 1);
++ pdata->set_pullup(1);
++
++ ret = mfd_add_devices(&pdev->dev, -1, tiny6410_1wire_cells,
++ ARRAY_SIZE(tiny6410_1wire_cells), NULL, 0, NULL);
++
++ dev_info(&pdev->dev, "Tiny6410 1-wire host initialized.\n");
++
++ return ret;
++}
++
++
++static int tiny6410_1wire_remove(struct platform_device *pdev)
++{
++ struct tiny6410_1wire *data = platform_get_drvdata(pdev);
++
++ hrtimer_cancel(&data->timer);
++
++ mfd_remove_devices(&pdev->dev);
++
++ gpio_set_value(data->pdata->gpio_pin, 1);
++ data->pdata->set_pullup(0);
++ gpio_set_value(data->pdata->gpio_pin, 0);
++
++ gpio_free(data->pdata->gpio_pin);
++ kfree(data);
++
++ return 0;
++}
++
++static struct platform_driver tiny6410_1wire_driver = {
++ .driver = {
++ .name = "tiny6410-1wire",
++ .owner = THIS_MODULE,
++ },
++ .probe = tiny6410_1wire_probe,
++ .remove = tiny6410_1wire_remove,
++};
++
++/*
++ * Module init
++ */
++
++static int tiny6410_1wire_init(void)
++{
++ return platform_driver_register(&tiny6410_1wire_driver);
++}
++module_init(tiny6410_1wire_init);
++
++static void tiny6410_1wire_exit(void)
++{
++ platform_driver_unregister(&tiny6410_1wire_driver);
++}
++module_exit(tiny6410_1wire_exit);
++
++MODULE_AUTHOR("Tomasz Figa <tomasz.figa at gmail.com>");
++MODULE_DESCRIPTION("Tiny6410 virtual 1-wire bus");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("platform:tiny6410-1wire");
+Index: linux-3.8/include/linux/mfd/tiny6410_1wire.h
+===================================================================
+--- /dev/null
++++ linux-3.8/include/linux/mfd/tiny6410_1wire.h
+@@ -0,0 +1,34 @@
++/*
++ * include/linux/mfd/tiny6410_1wire.h
++ *
++ * Some definitions for drivers of devices running on the 1-wire bus
++ * of the Tiny6410 board.
++ *
++ * Copyright 2011 Tomasz Figa <tomasz.figa at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ */
++
++#ifndef MFD_TINY6410_1WIRE_H
++#define MFD_TINY6410_1WIRE_H
++
++#include <linux/mfd/core.h>
++
++struct tiny6410_1wire;
++
++extern int tiny6410_1wire_transfer(struct tiny6410_1wire *bus,
++ u8 tx_data, u32 *rx_data);
++
++#endif /* MFD_TINY6410_1WIRE_H */
+Index: linux-3.8/include/linux/tiny6410_1wire.h
+===================================================================
+--- /dev/null
++++ linux-3.8/include/linux/tiny6410_1wire.h
+@@ -0,0 +1,31 @@
++/*
++ * include/linux/tiny6410_1wire.h
++ *
++ * Definition of platform data structure for Tiny6410 1-wire bus driver.
++ *
++ * Copyright 2011 Tomasz Figa <tomasz.figa at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ */
++
++#ifndef TINY6410_1WIRE_H
++#define TINY6410_1WIRE_H
++
++struct tiny6410_1wire_platform_data {
++ int gpio_pin;
++ void (*set_pullup)(int state);
++};
++
++#endif /* TINY6410_1WIRE_H */
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_backlight.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_backlight.patch
new file mode 100644
index 0000000..eaf1481
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_backlight.patch
@@ -0,0 +1,190 @@
+commit 1e6446353f12ec558fe90fca37ea03e281736b32
+Author: Tomasz Figa <tomasz.figa@gmail.com>
+Date: Fri Aug 19 00:43:05 2011 +0200
+
+ video: backlight: Add support for backlight function of Tiny6410 1-wire multifunctional LCD module.
+
+---
+ drivers/video/backlight/Kconfig | 7 +
+ drivers/video/backlight/Makefile | 1
+ drivers/video/backlight/tiny6410_bl.c | 143 ++++++++++++++++++++++++++++++++++
+ 3 files changed, 151 insertions(+)
+
+Index: linux-3.8/drivers/video/backlight/Kconfig
+===================================================================
+--- linux-3.8.orig/drivers/video/backlight/Kconfig
++++ linux-3.8/drivers/video/backlight/Kconfig
+@@ -390,6 +390,13 @@ config BACKLIGHT_TPS65217
+ If you have a Texas Instruments TPS65217 say Y to enable the
+ backlight driver.
+
++config BACKLIGHT_TINY6410
++ tristate "Backlight driver for Tiny6410 board LCD module"
++ depends on BACKLIGHT_CLASS_DEVICE && TINY6410_1WIRE
++ help
++ If you have a Tiny6410 board equipped with an LCD module, say Y here
++ to enable backlight control of the screen.
++
+ endif # BACKLIGHT_CLASS_DEVICE
+
+ endif # BACKLIGHT_LCD_SUPPORT
+Index: linux-3.8/drivers/video/backlight/Makefile
+===================================================================
+--- linux-3.8.orig/drivers/video/backlight/Makefile
++++ linux-3.8/drivers/video/backlight/Makefile
+@@ -39,6 +39,7 @@ obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886
+ obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o
+ obj-$(CONFIG_BACKLIGHT_ADP5520) += adp5520_bl.o
+ obj-$(CONFIG_BACKLIGHT_ADP8860) += adp8860_bl.o
++obj-$(CONFIG_BACKLIGHT_TINY6410) += tiny6410_bl.o
+ obj-$(CONFIG_BACKLIGHT_ADP8870) += adp8870_bl.o
+ obj-$(CONFIG_BACKLIGHT_88PM860X) += 88pm860x_bl.o
+ obj-$(CONFIG_BACKLIGHT_PCF50633) += pcf50633-backlight.o
+Index: linux-3.8/drivers/video/backlight/tiny6410_bl.c
+===================================================================
+--- /dev/null
++++ linux-3.8/drivers/video/backlight/tiny6410_bl.c
+@@ -0,0 +1,143 @@
++/*
++ * 1-wire backlight controller driver for Tiny6410 board.
++ *
++ * Copyright 2011 Tomasz Figa <tomasz.figa at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/spi/spi.h>
++#include <linux/i2c.h>
++#include <linux/gpio.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++#include <linux/slab.h>
++
++#include <linux/mfd/tiny6410_1wire.h>
++
++#define TINY6410_BL_REQ (0x80)
++
++struct tiny6410_1wire_bl {
++ struct tiny6410_1wire *bus;
++ struct backlight_device *bl;
++};
++
++static int tiny6410_1wire_bl_update_status(struct backlight_device *dev)
++{
++ struct backlight_properties *props = &dev->props;
++ struct tiny6410_1wire_bl *data = dev_get_drvdata(&dev->dev);
++ int power = max(props->power, props->fb_blank);
++ int brightness = props->brightness;
++
++ if (power)
++ brightness = 0;
++
++ brightness >>= 1;
++ brightness &= 0xff;
++
++ tiny6410_1wire_transfer(data->bus, TINY6410_BL_REQ | brightness, 0);
++
++ return 0;
++}
++
++static int tiny6410_1wire_bl_get_brightness(struct backlight_device *dev)
++{
++ struct backlight_properties *props = &dev->props;
++
++ return props->brightness;
++}
++
++static const struct backlight_ops bl_ops = {
++ .get_brightness = tiny6410_1wire_bl_get_brightness,
++ .update_status = tiny6410_1wire_bl_update_status,
++};
++
++static int tiny6410_1wire_bl_probe(struct platform_device *pdev)
++{
++ struct backlight_properties props;
++ struct tiny6410_1wire_bl *data;
++ int ret = 0;
++
++ data = kzalloc(sizeof(*data), GFP_KERNEL);
++ if (!data)
++ return -ENOMEM;
++
++ data->bus = dev_get_drvdata(pdev->dev.parent);
++ platform_set_drvdata(pdev, data);
++
++ memset(&props, 0, sizeof(struct backlight_properties));
++ props.max_brightness = 255;
++ props.type = BACKLIGHT_PLATFORM;
++ data->bl = backlight_device_register("tiny6410-1wire-bl",
++ &pdev->dev, data, &bl_ops, &props);
++ if (IS_ERR(data->bl)) {
++ ret = PTR_ERR(data->bl);
++ goto err_reg;
++ }
++
++ data->bl->props.brightness = 255;
++ data->bl->props.power = FB_BLANK_UNBLANK;
++
++ backlight_update_status(data->bl);
++
++ return 0;
++
++err_reg:
++ data->bl = NULL;
++ kfree(data);
++ return ret;
++}
++
++static int tiny6410_1wire_bl_remove(struct platform_device *pdev)
++{
++ struct tiny6410_1wire_bl *data = platform_get_drvdata(pdev);
++
++ backlight_device_unregister(data->bl);
++ kfree(data);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int tiny6410_1wire_bl_suspend(struct platform_device *pdev, pm_message_t pm)
++{
++ struct tiny6410_1wire_bl *data = platform_get_drvdata(pdev);
++
++ tiny6410_1wire_transfer(data->bus, TINY6410_BL_REQ, 0);
++
++ return 0;
++}
++
++static int tiny6410_1wire_bl_resume(struct platform_device *pdev)
++{
++ struct tiny6410_1wire_bl *data = platform_get_drvdata(pdev);
++
++ backlight_update_status(data->bl);
++ return 0;
++}
++#else
++#define tiny6410_1wire_bl_suspend NULL
++#define tiny6410_1wire_bl_resume NULL
++#endif
++
++static struct platform_driver tiny6410_1wire_bl_driver = {
++ .driver = {
++ .name = "tiny6410-1wire-backlight",
++ .owner = THIS_MODULE,
++ },
++ .probe = tiny6410_1wire_bl_probe,
++ .remove = tiny6410_1wire_bl_remove,
++ .suspend = tiny6410_1wire_bl_suspend,
++ .resume = tiny6410_1wire_bl_resume,
++};
++module_platform_driver(tiny6410_1wire_bl_driver);
++
++MODULE_AUTHOR("Tomasz Figa <tomasz.figa at gmail.com>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("Backlight control for Tiny6410");
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_touchscreen.patch b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_touchscreen.patch
new file mode 100644
index 0000000..e5dea8c
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/mini6410_ow_touchscreen.patch
@@ -0,0 +1,286 @@
+commit b1139df8e96c2a7d2211690475ed0c4d87930d33
+Author: Tomasz Figa <tomasz.figa@gmail.com>
+Date: Fri Aug 19 00:42:38 2011 +0200
+
+ input: touchscreen: Add support for touchscreen function of Tiny6410 1-wire multifunctional LCD module.
+
+---
+ drivers/input/touchscreen/Kconfig | 7
+ drivers/input/touchscreen/Makefile | 1
+ drivers/input/touchscreen/tiny6410_ts.c | 244 ++++++++++++++++++++++++++++++++
+ 3 files changed, 252 insertions(+)
+
+Index: linux-3.8/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-3.8.orig/drivers/input/touchscreen/Kconfig
++++ linux-3.8/drivers/input/touchscreen/Kconfig
+@@ -888,4 +888,11 @@ config TOUCHSCREEN_TPS6507X
+ To compile this driver as a module, choose M here: the
+ module will be called tps6507x_ts.
+
++config TOUCHSCREEN_TINY6410
++ tristate "Tiny6410 1-wire Touchscreen"
++ depends on TINY6410_1WIRE
++ help
++ Say Y here if you have a Tiny6410 board equipped with
++ a 1-wire touchscreen module.
++
+ endif
+Index: linux-3.8/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-3.8.orig/drivers/input/touchscreen/Makefile
++++ linux-3.8/drivers/input/touchscreen/Makefile
+@@ -72,3 +72,4 @@ obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTON
+ obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE) += zylonite-wm97xx.o
+ obj-$(CONFIG_TOUCHSCREEN_W90X900) += w90p910_ts.o
+ obj-$(CONFIG_TOUCHSCREEN_TPS6507X) += tps6507x-ts.o
++obj-$(CONFIG_TOUCHSCREEN_TINY6410) += tiny6410_ts.o
+Index: linux-3.8/drivers/input/touchscreen/tiny6410_ts.c
+===================================================================
+--- /dev/null
++++ linux-3.8/drivers/input/touchscreen/tiny6410_ts.c
+@@ -0,0 +1,244 @@
++/*
++ * 1-wire touchscreen driver for Tiny6410 board.
++ *
++ * Copyright (C) 2011 Tomasz Figa <tomasz.figa at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++#include <linux/workqueue.h>
++#include <linux/slab.h>
++
++#include <linux/mfd/tiny6410_1wire.h>
++
++#define TINY6410_1WIRE_TS_DELAY (HZ / 50)
++#define TINY6410_1WIRE_TS_REQ (0x40)
++
++struct tiny6410_1wire_ts {
++ struct delayed_work work;
++ struct workqueue_struct *workqueue;
++ struct tiny6410_1wire *bus;
++ struct input_dev *input_dev;
++ struct device *dev;
++
++ /* Signed fixed point 16:16 offset */
++ s16 base_x;
++ s16 base_y;
++
++ /* Signed fixed point 16:16 scale */
++ s32 scale_x;
++ s32 scale_y;
++
++ /* Screen parameters */
++ u16 width;
++ u16 height;
++
++ u16 x;
++ u16 y;
++ bool down;
++};
++
++static void tiny6410_1wire_ts_report(struct tiny6410_1wire_ts *ts, u32 data)
++{
++ u16 x, y;
++ bool down;
++
++ y = (data & 0xf00000) >> 12;
++ y |= (data & 0x00ff00) >> 8;
++
++ x = (data & 0x0f0000) >> 8;
++ x |= (data & 0x0000ff) >> 0;
++
++ down = (x != 0xfff) || (y != 0xfff);
++
++ if (x != ts->x || y != ts->y || down != ts->down) {
++ ts->x = x;
++ ts->y = y;
++ ts->down = down;
++
++ x = ((x + ts->base_x) * ts->scale_x) >> 16;
++ y = ((y + ts->base_y) * ts->scale_y) >> 16;
++
++ if (x >= ts->width)
++ x = ts->width - 1;
++
++ if (y >= ts->height)
++ y = ts->height - 1;
++
++ input_report_key(ts->input_dev, BTN_TOUCH, down);
++ input_report_abs(ts->input_dev, ABS_X, x);
++ input_report_abs(ts->input_dev, ABS_Y, y);
++ input_sync(ts->input_dev);
++ }
++}
++
++static void tiny6410_1wire_ts_workfunc(struct work_struct *work)
++{
++ struct delayed_work *delayed_work = to_delayed_work(work);
++ struct tiny6410_1wire_ts *ts =
++ container_of(delayed_work, struct tiny6410_1wire_ts, work);
++ u32 rx_data;
++ u8 tx_data = TINY6410_1WIRE_TS_REQ;
++ int ret;
++
++ ret = tiny6410_1wire_transfer(ts->bus, tx_data, &rx_data);
++ if (!ret)
++ tiny6410_1wire_ts_report(ts, rx_data);
++
++ schedule_delayed_work(delayed_work, TINY6410_1WIRE_TS_DELAY);
++}
++
++static ssize_t calibration_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct tiny6410_1wire_ts *ts = dev_get_drvdata(dev);
++
++ return sprintf(buf, "%u %d %d %u %d %d\n",
++ ts->width, ts->base_x, ts->scale_x,
++ ts->height, ts->base_y, ts->scale_y);
++}
++
++static ssize_t calibration_store(struct device *dev,
++ struct device_attribute *attr, const char *buf, size_t size)
++{
++ struct tiny6410_1wire_ts *ts = dev_get_drvdata(dev);
++ int ret;
++ s32 base_x, base_y, scale_x, scale_y;
++ u32 width, height;
++
++ ret = sscanf(buf, "%u %d %d %u %d %d",
++ &width, &base_x, &scale_x, &height, &base_y, &scale_y);
++
++ if (ret != 6)
++ return -EINVAL;
++
++ cancel_delayed_work_sync(&ts->work);
++
++ ts->base_x = base_x;
++ ts->base_y = base_y;
++ ts->scale_x = scale_x;
++ ts->scale_y = scale_y;
++ ts->width = width;
++ ts->height = height;
++
++ input_set_abs_params(ts->input_dev, ABS_X, 0, width - 1, 0, 0);
++ input_set_abs_params(ts->input_dev, ABS_Y, 0, height - 1, 0, 0);
++
++ schedule_delayed_work(&ts->work, TINY6410_1WIRE_TS_DELAY);
++
++ return size;
++}
++
++static DEVICE_ATTR(calibration, S_IRUGO | S_IWUSR,
++ calibration_show, calibration_store);
++
++static struct attribute *tiny6410_ts_attrs[] = {
++ &dev_attr_calibration.attr,
++ NULL
++};
++
++static const struct attribute_group tiny6410_ts_attr_group = {
++ .attrs = tiny6410_ts_attrs,
++};
++
++static int tiny6410_1wire_ts_probe(struct platform_device *pdev)
++{
++ int ret;
++ struct tiny6410_1wire_ts *ts;
++
++ ts = kzalloc(sizeof(*ts), GFP_KERNEL);
++ if (!ts)
++ return -ENOMEM;
++
++ ts->bus = dev_get_drvdata(pdev->dev.parent);
++ ts->dev = &pdev->dev;
++ ts->workqueue = create_singlethread_workqueue("tiny6410_1wire_ts");
++ if (!ts->workqueue) {
++ ret = -ENOMEM;
++ goto err_workqueue;
++ }
++ INIT_DELAYED_WORK(&ts->work, tiny6410_1wire_ts_workfunc);
++
++ ts->input_dev = input_allocate_device();
++ if (!ts->input_dev) {
++ ret = -ENOMEM;
++ goto err_input_alloc;
++ }
++
++ ts->input_dev->name = "Tiny6410 Touchscreen";
++ ts->input_dev->dev.parent = &pdev->dev;
++ ts->input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
++ ts->input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
++
++ /* Set calibration data for 1:1 operation */
++ ts->base_x = 0;
++ ts->base_y = 0;
++ ts->scale_x = 1 << 16;
++ ts->scale_y = 1 << 16;
++ ts->width = 0x1000;
++ ts->height = 0x1000;
++
++ /* Configure absolute value ranges appropriately */
++ input_set_abs_params(ts->input_dev, ABS_X, 0, 0xfff, 0, 0);
++ input_set_abs_params(ts->input_dev, ABS_Y, 0, 0xfff, 0, 0);
++
++ platform_set_drvdata(pdev, ts);
++
++ ret = input_register_device(ts->input_dev);
++ if (ret)
++ goto err_input_register;
++
++ schedule_delayed_work(&ts->work, TINY6410_1WIRE_TS_DELAY);
++
++ if(sysfs_create_group(&pdev->dev.kobj, &tiny6410_ts_attr_group))
++ dev_warn(&pdev->dev, "Failed to create sysfs group.\n");
++
++ return 0;
++
++err_input_register:
++ input_free_device(ts->input_dev);
++err_input_alloc:
++ destroy_workqueue(ts->workqueue);
++err_workqueue:
++ kfree(ts);
++ return ret;
++}
++
++static int tiny6410_1wire_ts_remove(struct platform_device *pdev)
++{
++ struct tiny6410_1wire_ts *ts = platform_get_drvdata(pdev);
++
++ sysfs_remove_group(&pdev->dev.kobj, &tiny6410_ts_attr_group);
++
++ destroy_workqueue(ts->workqueue);
++
++ input_get_device(ts->input_dev);
++ input_unregister_device(ts->input_dev);
++ input_free_device(ts->input_dev);
++
++ kfree(ts);
++
++ return 0;
++}
++
++static struct platform_driver tiny6410_1wire_ts_driver = {
++ .probe = tiny6410_1wire_ts_probe,
++ .remove = tiny6410_1wire_ts_remove,
++ .driver = {
++ .name = "tiny6410-1wire-touchscreen",
++ },
++};
++module_platform_driver(tiny6410_1wire_ts_driver);
++
++MODULE_AUTHOR("Tomasz Figa <tomasz.figa at gmail.com>");
++MODULE_DESCRIPTION("Tiny6410 1-wire Touchscreen");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("platform:tiny6410-1wire-touchscreen");
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/patch-3.8.1.bz2 b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/patch-3.8.1.bz2
new file mode 100644
index 0000000..febe777
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/patch-3.8.1.bz2
Binary files differ
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/remove_local_backlight_handling.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/remove_local_backlight_handling.diff
new file mode 100644
index 0000000..aae15da
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/remove_local_backlight_handling.diff
@@ -0,0 +1,117 @@
+From: Juergen Beisert <jbe@pengutronix.de>
+Subject: Mini6410: Replace local backlight handling with global GPO LED support
+
+Singed-off-by: Juergen Beisert <jbe@pengutronix.de>
+---
+ arch/arm/mach-s3c64xx/Kconfig | 1
+ arch/arm/mach-s3c64xx/mach-mini6410.c | 42 +++++++++++++++++++++-------------
+ 2 files changed, 27 insertions(+), 16 deletions(-)
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/mach-mini6410.c
++++ linux-3.8/arch/arm/mach-s3c64xx/mach-mini6410.c
+@@ -26,6 +26,7 @@
+ #include <linux/types.h>
+ #include <linux/gpio_keys.h>
+ #include <linux/leds.h>
++#include <linux/pwm_backlight.h>
+
+ #include <asm/hardware/vic.h>
+ #include <asm/mach-types.h>
+@@ -41,6 +42,7 @@
+ #include <plat/cpu.h>
+ #include <plat/devs.h>
+ #include <plat/fb.h>
++#include <plat/gpio-cfg.h>
+ #include <linux/platform_data/mtd-nand-s3c2410.h>
+ #include <plat/regs-serial.h>
+ #include <linux/platform_data/touchscreen-s3c2410.h>
+@@ -249,6 +251,13 @@ static const struct gpio_led mini6410_le
+ .active_low = 1,
+ .retain_state_suspended = 0,
+ .default_state = LEDS_GPIO_DEFSTATE_OFF,
++ }, {
++ .name = "backlight",
++ .default_trigger = "backlight",
++ .gpio = S3C64XX_GPE(0),
++ .active_low = 0, /* 1 = on, 0 = off */
++ .retain_state_suspended = 0,
++ .default_state = LEDS_GPIO_DEFSTATE_ON,
+ },
+ };
+
+@@ -320,23 +329,26 @@ static struct s3c_fb_platdata mini6410_l
+ { },
+ };
+
+-static void mini6410_lcd_power_set(struct plat_lcd_data *pd,
+- unsigned int power)
++static int mini6410_bl_init(struct device *dev)
+ {
+- if (power)
+- gpio_direction_output(S3C64XX_GPE(0), 1);
+- else
+- gpio_direction_output(S3C64XX_GPE(0), 0);
++ s3c_gpio_cfgpin(S3C64XX_GPF(15), S3C_GPIO_SFN(2));
++ return 0;
+ }
+
+-static struct plat_lcd_data mini6410_lcd_power_data = {
+- .set_power = mini6410_lcd_power_set,
++static struct platform_pwm_backlight_data mini6410_bl_data = {
++ .pwm_id = 1,
++ .max_brightness = 1000,
++ .dft_brightness = 600,
++ .pwm_period_ns = 1000000000 / (1000 * 20),
++ .init = mini6410_bl_init,
+ };
+
+-static struct platform_device mini6410_lcd_powerdev = {
+- .name = "platform-lcd",
+- .dev.parent = &s3c_device_fb.dev,
+- .dev.platform_data = &mini6410_lcd_power_data,
++static struct platform_device mini6410_backlight_device = {
++ .name = "pwm-backlight",
++ .dev = {
++ .parent = &s3c_device_timer[1].dev,
++ .platform_data = &mini6410_bl_data,
++ },
+ };
+
+ static struct platform_device *mini6410_devices[] __initdata = {
+@@ -347,10 +359,11 @@ static struct platform_device *mini6410_
+ &s3c_device_nand,
+ &mini6410_button_device,
+ &s3c_device_fb,
+- &mini6410_lcd_powerdev,
+ &mini6410_leds,
+ &s3c_device_adc,
+ &s3c_device_ts,
++ &s3c_device_timer[1],
++ &mini6410_backlight_device,
+ };
+
+ static void __init mini6410_map_io(void)
+@@ -469,9 +482,6 @@ static void __init mini6410_machine_init
+ (4 << S3C64XX_SROM_BCX__TCOS__SHIFT) |
+ (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1);
+
+- gpio_request(S3C64XX_GPF(15), "LCD power");
+- gpio_request(S3C64XX_GPE(0), "LCD power");
+-
+ platform_add_devices(mini6410_devices, ARRAY_SIZE(mini6410_devices));
+ }
+
+Index: linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+===================================================================
+--- linux-3.8.orig/arch/arm/mach-s3c64xx/Kconfig
++++ linux-3.8/arch/arm/mach-s3c64xx/Kconfig
+@@ -121,6 +121,7 @@ config MACH_MINI6410
+ select S3C_DEV_USB_HOST
+ select SAMSUNG_DEV_ADC
+ select SAMSUNG_DEV_TS
++ select SAMSUNG_DEV_PWM
+ help
+ Machine support for the FriendlyARM MINI6410
+
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/series b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/series
new file mode 100644
index 0000000..4ea227c
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/series
@@ -0,0 +1,51 @@
+# keep in sync with stable releases
+patch-3.8.1.bz2
+
+# some fixes, occured on LKML/ALKML
+PATCH_2_3_rtc-s3c_Disable_alarm_entries_that_are_not_chosen.diff
+
+# will be part of mainline some time
+dm9000_Make_the_driver_follow_the_IRQF_SHARED_contract.patch
+dm9000_Implement_full_reset_of_network_device.patch
+
+# simplify the touchscreen driver
+fix_ts_race.diff
+# 12 bit ADC resolution
+adapt_ts_to_extended_adc.diff
+
+# Mini6410 related stuff
+add_gpio_keys.diff
+add_gpio_leds.diff
+remove_local_backlight_handling.diff
+add_hwmon_feature.diff
+add_i2c_support.diff
+
+add_rtc_feature.diff
+
+fix_lcd_match.diff
+# handle display's physical size in kernel
+add_display_size_in_kernel.diff
+
+# Enable user to select 32 bit colour depth
+change_colour_depth_on_demand.diff
+
+# nothing special. Only to analyze the CPU
+gain_access_to_the_iROM.diff
+
+# make the SDHC work on Mini6410
+add_sd_card_support.diff
+add_sdio_card_support.diff
+
+# add Mini6410 buzzer
+fix_pwm.diff
+add_buzzer_support.diff
+
+# the real OneWire drivers from Tomasz Figa
+mini6410_onewire.patch
+mini6410_ow_backlight.patch
+mini6410_ow_touchscreen.patch
+add_1wire_driver_to_mini6410.diff
+
+fix_7inch_display_timing.patch
+
+set-marker.diff
diff --git a/configs/platform-friendlyarm-mini6410/patches/linux-3.8/set-marker.diff b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/set-marker.diff
new file mode 100644
index 0000000..0c5b969
--- /dev/null
+++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/set-marker.diff
@@ -0,0 +1,17 @@
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-3.8/Makefile
+===================================================================
+--- linux-3.8.orig/Makefile
++++ linux-3.8/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 3
+ PATCHLEVEL = 8
+ SUBLEVEL = 1
+-EXTRAVERSION =
++EXTRAVERSION = -ptx-master
+ NAME = Unicycling Gorilla
+
+ # *DOCUMENTATION*
diff --git a/configs/platform-friendlyarm-mini6410/platformconfig b/configs/platform-friendlyarm-mini6410/platformconfig
index a8331d7..155c291 100644
--- a/configs/platform-friendlyarm-mini6410/platformconfig
+++ b/configs/platform-friendlyarm-mini6410/platformconfig
@@ -97,8 +97,8 @@ PTXCONF_KERNEL=y
PTXCONF_KERNEL_MODULES=y
PTXCONF_KERNEL_MODULES_INSTALL=y
PTXCONF_KERNEL_MODULES_BUILD="modules"
-PTXCONF_KERNEL_VERSION="3.7"
-PTXCONF_KERNEL_MD5="21223369d682bcf44bcdfe1521095983"
+PTXCONF_KERNEL_VERSION="3.8"
+PTXCONF_KERNEL_MD5="1c738edfc54e7c65faeb90c436104e2f"
PTXCONF_KERNEL_ARCH_STRING="arm"
# PTXCONF_KERNEL_IMAGE_BZ is not set
PTXCONF_KERNEL_IMAGE_Z=y
diff --git a/documentation/plain_sources/special_notes.tex b/documentation/plain_sources/special_notes.tex
index 8b17d03..4927e9f 100644
--- a/documentation/plain_sources/special_notes.tex
+++ b/documentation/plain_sources/special_notes.tex
@@ -22,7 +22,7 @@
%
\newcommand{\perCpuName}{S3C6410}
-\newcommand{\curKernelRev}{3.7}
+\newcommand{\curKernelRev}{3.8}
\section{Available Kernel Releases} \label{sec:kernelreleases}
@@ -32,7 +32,8 @@ they are still available and also some of them are still maintained. Here is a
list of currently available Linux kernel releases in the \ptxdistBSPName{}:
\begin{itemize}
- \item \curKernelRev{}, stable patch level 10 (defaultl)
+ \item \curKernelRev{}, stable patch level 1 (defaultl)
+ \item 3.7, stable patch level 10
\item 3.1 *), stable patch level 10
\item 3.0, stable patch level 67
\item 2.6.39 *), stable patch level 4
diff --git a/protocol/acceptance-test.txt b/protocol/acceptance-test.txt
index 9fff1df..f2055c0 100644
--- a/protocol/acceptance-test.txt
+++ b/protocol/acceptance-test.txt
@@ -26,6 +26,7 @@ Preparations
Base System
-----------
+[ ] kernel-3.8.1 is a release
[ ] kernel-3.7.10 is a release
[ ] kernel-3.1.10 is a release
[ ] kernel-3.0.67 is a release