diff options
author | Juergen Beisert <jbe@pengutronix.de> | 2013-03-03 13:52:03 +0100 |
---|---|---|
committer | Juergen Beisert <jbe@pengutronix.de> | 2013-03-03 23:18:38 +0100 |
commit | ee5cb993af2eb26002df4a73c324ddfe74f3af80 (patch) | |
tree | b111b511f03665b09579d5eb3464680a14cdb021 | |
parent | b8dd713ee71f17a9ae5903814da104bb28fa8f00 (diff) | |
download | OSELAS.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>
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 Binary files differnew file mode 100644 index 0000000..febe777 --- /dev/null +++ b/configs/platform-friendlyarm-mini6410/patches/linux-3.8/patch-3.8.1.bz2 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 |