Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
413427b5
Commit
413427b5
authored
Jun 18, 2009
by
Russell King
Committed by
Russell King
Jun 18, 2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'next-s3c' of
git://aeryn.fluff.org.uk/bjdooks/linux
into devel
parents
187f81b3
9f01efaa
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
3931 additions
and
6 deletions
+3931
-6
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+21
-0
MAINTAINERS
MAINTAINERS
+7
-0
arch/arm/Kconfig
arch/arm/Kconfig
+5
-1
arch/arm/common/vic.c
arch/arm/common/vic.c
+6
-2
arch/arm/configs/mini2440_defconfig
arch/arm/configs/mini2440_defconfig
+2097
-0
arch/arm/mach-s3c2410/usb-simtec.c
arch/arm/mach-s3c2410/usb-simtec.c
+0
-1
arch/arm/mach-s3c2440/Kconfig
arch/arm/mach-s3c2440/Kconfig
+10
-0
arch/arm/mach-s3c2440/Makefile
arch/arm/mach-s3c2440/Makefile
+1
-0
arch/arm/mach-s3c2440/mach-mini2440.c
arch/arm/mach-s3c2440/mach-mini2440.c
+703
-0
arch/arm/mach-s3c2442/Kconfig
arch/arm/mach-s3c2442/Kconfig
+12
-0
arch/arm/mach-s3c2442/Makefile
arch/arm/mach-s3c2442/Makefile
+2
-0
arch/arm/mach-s3c2442/include/mach/gta02.h
arch/arm/mach-s3c2442/include/mach/gta02.h
+84
-0
arch/arm/mach-s3c2442/mach-gta02.c
arch/arm/mach-s3c2442/mach-gta02.c
+646
-0
arch/arm/plat-s3c/Makefile
arch/arm/plat-s3c/Makefile
+1
-0
arch/arm/plat-s3c/dev-audio.c
arch/arm/plat-s3c/dev-audio.c
+68
-0
arch/arm/plat-s3c/include/plat/devs.h
arch/arm/plat-s3c/include/plat/devs.h
+4
-1
arch/arm/plat-s3c64xx/Makefile
arch/arm/plat-s3c64xx/Makefile
+1
-0
arch/arm/plat-s3c64xx/cpufreq.c
arch/arm/plat-s3c64xx/cpufreq.c
+262
-0
drivers/mmc/host/s3cmci.c
drivers/mmc/host/s3cmci.c
+1
-1
No files found.
Documentation/kernel-parameters.txt
View file @
413427b5
...
@@ -1362,6 +1362,27 @@ and is between 256 and 4096 characters. It is defined in the file
...
@@ -1362,6 +1362,27 @@ and is between 256 and 4096 characters. It is defined in the file
min_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory below this
min_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory below this
physical address is ignored.
physical address is ignored.
mini2440= [ARM,HW,KNL]
Format:[0..2][b][c][t]
Default: "0tb"
MINI2440 configuration specification:
0 - The attached screen is the 3.5" TFT
1 - The attached screen is the 7" TFT
2 - The VGA Shield is attached (1024x768)
Leaving out the screen size parameter will not load
the TFT driver, and the framebuffer will be left
unconfigured.
b - Enable backlight. The TFT backlight pin will be
linked to the kernel VESA blanking code and a GPIO
LED. This parameter is not necessary when using the
VGA shield.
c - Enable the s3c camera interface.
t - Reserved for enabling touchscreen support. The
touchscreen support is not enabled in the mainstream
kernel as of 2.6.30, a preliminary port can be found
in the "bleeding edge" mini2440 support kernel at
http://repo.or.cz/w/linux-2.6/mini2440.git
mminit_loglevel=
mminit_loglevel=
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
parameter allows control of the logging verbosity for
parameter allows control of the logging verbosity for
...
...
MAINTAINERS
View file @
413427b5
...
@@ -788,6 +788,13 @@ P: Michael Petchkovsky
...
@@ -788,6 +788,13 @@ P: Michael Petchkovsky
M: mkpetch@internode.on.net
M: mkpetch@internode.on.net
S: Maintained
S: Maintained
ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
P: Nelson Castillo
M: arhuaco@freaks-unidos.net
L: openmoko-kernel@lists.openmoko.org (subscribers-only)
W: http://wiki.openmoko.org/wiki/Neo_FreeRunner
S: Supported
ARM/TOSA MACHINE SUPPORT
ARM/TOSA MACHINE SUPPORT
P: Dmitry Eremin-Solenikov
P: Dmitry Eremin-Solenikov
M: dbaryshkov@gmail.com
M: dbaryshkov@gmail.com
...
...
arch/arm/Kconfig
View file @
413427b5
...
@@ -1241,7 +1241,7 @@ endmenu
...
@@ -1241,7 +1241,7 @@ endmenu
menu "CPU Power Management"
menu "CPU Power Management"
if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA)
if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_PXA
|| ARCH_S3C64XX
)
source "drivers/cpufreq/Kconfig"
source "drivers/cpufreq/Kconfig"
...
@@ -1272,6 +1272,10 @@ config CPU_FREQ_PXA
...
@@ -1272,6 +1272,10 @@ config CPU_FREQ_PXA
default y
default y
select CPU_FREQ_DEFAULT_GOV_USERSPACE
select CPU_FREQ_DEFAULT_GOV_USERSPACE
config CPU_FREQ_S3C64XX
bool "CPUfreq support for Samsung S3C64XX CPUs"
depends on CPU_FREQ && CPU_S3C6410
endif
endif
source "drivers/cpuidle/Kconfig"
source "drivers/cpuidle/Kconfig"
...
...
arch/arm/common/vic.c
View file @
413427b5
...
@@ -229,14 +229,18 @@ static int vic_set_wake(unsigned int irq, unsigned int on)
...
@@ -229,14 +229,18 @@ static int vic_set_wake(unsigned int irq, unsigned int on)
{
{
struct
vic_device
*
v
=
vic_from_irq
(
irq
);
struct
vic_device
*
v
=
vic_from_irq
(
irq
);
unsigned
int
off
=
irq
&
31
;
unsigned
int
off
=
irq
&
31
;
u32
bit
=
1
<<
off
;
if
(
!
v
)
if
(
!
v
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
!
(
bit
&
v
->
resume_sources
))
return
-
EINVAL
;
if
(
on
)
if
(
on
)
v
->
resume_irqs
|=
1
<<
off
;
v
->
resume_irqs
|=
bit
;
else
else
v
->
resume_irqs
&=
~
(
1
<<
off
)
;
v
->
resume_irqs
&=
~
bit
;
return
0
;
return
0
;
}
}
...
...
arch/arm/configs/mini2440_defconfig
0 → 100644
View file @
413427b5
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.30-rc6
# Wed May 20 12:29:51 2009
#
CONFIG_ARM=y
CONFIG_HAVE_PWM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
# CONFIG_GENERIC_TIME is not set
# CONFIG_GENERIC_CLOCKEVENTS is not set
CONFIG_MMU=y
CONFIG_NO_IOPORT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
#
# RCU Subsystem
#
CONFIG_CLASSIC_RCU=y
# CONFIG_TREE_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_GROUP_SCHED is not set
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_STRIP_ASM_SYMS=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=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
CONFIG_LBD=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_BLK_DEV_INTEGRITY=y
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
CONFIG_FREEZER=y
#
# System Type
#
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_KIRKWOOD is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_LOKI is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_W90X900 is not set
CONFIG_PLAT_S3C24XX=y
CONFIG_S3C2410_CLOCK=y
CONFIG_CPU_S3C244X=y
CONFIG_S3C24XX_PWM=y
CONFIG_S3C24XX_GPIO_EXTRA=0
CONFIG_S3C2410_DMA=y
# CONFIG_S3C2410_DMA_DEBUG is not set
CONFIG_S3C24XX_ADC=y
CONFIG_PLAT_S3C=y
CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y
CONFIG_CPU_LLSERIAL_S3C2440=y
#
# Boot options
#
# CONFIG_S3C_BOOT_WATCHDOG is not set
# CONFIG_S3C_BOOT_ERROR_RESET is not set
CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
#
# Power management
#
# CONFIG_S3C2410_PM_DEBUG is not set
# CONFIG_S3C2410_PM_CHECK is not set
CONFIG_S3C_LOWLEVEL_UART_PORT=0
CONFIG_S3C_GPIO_SPACE=0
#
# S3C2400 Machines
#
CONFIG_S3C2410_PM=y
CONFIG_S3C2410_GPIO=y
#
# S3C2410 Machines
#
# CONFIG_ARCH_SMDK2410 is not set
# CONFIG_ARCH_H1940 is not set
# CONFIG_MACH_N30 is not set
# CONFIG_ARCH_BAST is not set
# CONFIG_MACH_OTOM is not set
# CONFIG_MACH_AML_M5900 is not set
# CONFIG_MACH_TCT_HAMMER is not set
# CONFIG_MACH_VR1000 is not set
# CONFIG_MACH_QT2410 is not set
#
# S3C2412 Machines
#
# CONFIG_MACH_JIVE is not set
# CONFIG_MACH_SMDK2413 is not set
# CONFIG_MACH_SMDK2412 is not set
# CONFIG_MACH_VSTMS is not set
CONFIG_CPU_S3C2440=y
CONFIG_S3C2440_DMA=y
#
# S3C2440 Machines
#
# CONFIG_MACH_ANUBIS is not set
# CONFIG_MACH_OSIRIS is not set
# CONFIG_MACH_RX3715 is not set
# CONFIG_ARCH_S3C2440 is not set
# CONFIG_MACH_NEXCODER_2440 is not set
# CONFIG_MACH_AT2440EVB is not set
CONFIG_MACH_MINI2440=y
#
# S3C2442 Machines
#
#
# S3C2443 Machines
#
# CONFIG_MACH_SMDK2443 is not set
#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_32v4T=y
CONFIG_CPU_ABRT_EV4T=y
CONFIG_CPU_PABRT_NOIFAR=y
CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
# CONFIG_OUTER_CACHE is not set
#
# Bus support
#
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set
#
# Kernel Features
#
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
# CONFIG_PREEMPT is not set
CONFIG_HZ=200
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
CONFIG_ARCH_FLATMEM_HAS_HOLES=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_HIGHMEM is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
CONFIG_ZBOOT_ROM_TEXT=0
CONFIG_ZBOOT_ROM_BSS=0
CONFIG_CMDLINE=""
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
CONFIG_ATAGS_PROC=y
#
# CPU Power Management
#
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
#
# Floating point emulation
#
#
# At least one emulation must be selected
#
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_HAVE_AOUT=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_APM_EMULATION=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# 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=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
# CONFIG_NF_CONNTRACK is not set
# CONFIG_NETFILTER_XTABLES is not set
# CONFIG_IP_VS is not set
#
# IP: Netfilter Configuration
#
# CONFIG_NF_DEFRAG_IPV4 is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
CONFIG_STP=m
CONFIG_GARP=m
CONFIG_BRIDGE=m
# CONFIG_NET_DSA is not set
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_DECNET is not set
CONFIG_LLC=m
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
# CONFIG_AF_RXRPC is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_CFG80211=m
CONFIG_CFG80211_REG_DEBUG=y
CONFIG_WIRELESS_OLD_REGULATORY=y
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
#
# Rate control algorithm selection
#
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel"
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=m
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_CONCAT=y
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_TESTS is not set
# CONFIG_MTD_REDBOOT_PARTS is not set
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_AFS_PARTS is not set
# CONFIG_MTD_AR7_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
CONFIG_FTL=y
CONFIG_NFTL=y
CONFIG_NFTL_RW=y
CONFIG_INFTL=y
CONFIG_RFD_FTL=y
# CONFIG_SSFDC is not set
# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_CFI_INTELEXT is not set
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_RAM=y
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 is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_IMPA7 is not set
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_DATAFLASH is not set
# CONFIG_MTD_M25P80 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
# CONFIG_MTD_NAND_ECC_SMC is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_GPIO is not set
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_S3C2410=y
# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
# CONFIG_MTD_NAND_S3C2410_HWECC is not set
# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
CONFIG_MTD_NAND_PLATFORM=y
# CONFIG_MTD_ALAUDA is not set
# CONFIG_MTD_ONENAND is not set
#
# LPDDR flash memory drivers
#
CONFIG_MTD_LPDDR=y
CONFIG_MTD_QINFO_PROBE=y
#
# UBI - Unsorted block images
#
# 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=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=65536
# CONFIG_BLK_DEV_XIP is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_MISC_DEVICES=y
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_ISL29003 is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
CONFIG_EEPROM_AT24=y
# CONFIG_EEPROM_AT25 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_93CX6 is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=m
# CONFIG_CHR_DEV_SCH is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
CONFIG_COMPAT_NET_DEV_OPS=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_VETH is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_AX88796 is not set
# CONFIG_SMC91X is not set
CONFIG_DM9000=y
CONFIG_DM9000_DEBUGLEVEL=4
# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
# CONFIG_ENC28J60 is not set
# CONFIG_ETHOC is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
# CONFIG_DNET is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_B44 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
CONFIG_LIBERTAS=m
# CONFIG_LIBERTAS_USB is not set
CONFIG_LIBERTAS_SDIO=m
# CONFIG_LIBERTAS_SPI is not set
# CONFIG_LIBERTAS_DEBUG is not set
# CONFIG_LIBERTAS_THINFIRM is not set
# CONFIG_AT76C50X_USB is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_USB_NET_RNDIS_WLAN is not set
# CONFIG_RTL8187 is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_P54_COMMON is not set
# CONFIG_AR9170_USB is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
CONFIG_ZD1211RW=m
CONFIG_ZD1211RW_DEBUG=y
# CONFIG_RT2X00 is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
# CONFIG_PPPOE is not set
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_EVBUG=m
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ADS7846 is not set
# CONFIG_TOUCHSCREEN_AD7877 is not set
# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
# CONFIG_TOUCHSCREEN_AD7879 is not set
# CONFIG_TOUCHSCREEN_FUJITSU is not set
# CONFIG_TOUCHSCREEN_GUNZE is not set
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_WACOM_W8001 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_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
# CONFIG_GAMEPORT is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_SAMSUNG=y
CONFIG_SERIAL_SAMSUNG_UARTS=3
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
CONFIG_SERIAL_S3C2440=y
# CONFIG_SERIAL_MAX3100 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=128
CONFIG_IPMI_HANDLER=m
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_S3C2410=y
CONFIG_I2C_SIMTEC=y
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_TINY_USB is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_STUB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_MAX6875 is not set
CONFIG_SENSORS_TSL2550=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_BITBANG=y
# CONFIG_SPI_GPIO is not set
CONFIG_SPI_S3C24XX=y
# CONFIG_SPI_S3C24XX_GPIO is not set
#
# SPI Protocol Masters
#
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
#
# Memory mapped GPIO expanders:
#
#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
#
# PCI GPIO expanders:
#
#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_AD7414 is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADCXX 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_ADT7462 is not set
# CONFIG_SENSORS_ADT7470 is not set
# CONFIG_SENSORS_ADT7473 is not set
# CONFIG_SENSORS_ADT7475 is not set
# CONFIG_SENSORS_ATXP1 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_IBMAEM is not set
# CONFIG_SENSORS_IBMPEX is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM70 is not set
CONFIG_SENSORS_LM75=y
# 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_LTC4215 is not set
# CONFIG_SENSORS_LTC4245 is not set
# CONFIG_SENSORS_LM95241 is not set
# CONFIG_SENSORS_MAX1111 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_SHT15 is not set
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_ADS7828 is not set
# CONFIG_SENSORS_THMC50 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_W83L785TS is not set
# CONFIG_SENSORS_W83L786NG is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_LIS3_SPI is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_THERMAL=m
# CONFIG_THERMAL_HWMON is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
CONFIG_S3C2410_WATCHDOG=y
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_ASIC3 is not set
# CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TPS65010 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
#
# Multimedia devices
#
#
# Multimedia core support
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=m
CONFIG_VIDEO_MEDIA=m
#
# Multimedia drivers
#
# CONFIG_MEDIA_ATTACH is not set
CONFIG_MEDIA_TUNER=m
# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA9887=m
CONFIG_MEDIA_TUNER_TEA5761=m
CONFIG_MEDIA_TUNER_TEA5767=m
CONFIG_MEDIA_TUNER_MT20XX=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
CONFIG_MEDIA_TUNER_MC44S803=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L1=m
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# CONFIG_VIDEO_VIVI is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_VIDEO_AU0828 is not set
CONFIG_SOC_CAMERA=m
# CONFIG_SOC_CAMERA_MT9M001 is not set
# CONFIG_SOC_CAMERA_MT9M111 is not set
# CONFIG_SOC_CAMERA_MT9T031 is not set
# CONFIG_SOC_CAMERA_MT9V022 is not set
# CONFIG_SOC_CAMERA_TW9910 is not set
CONFIG_SOC_CAMERA_PLATFORM=m
# CONFIG_SOC_CAMERA_OV772X is not set
# CONFIG_VIDEO_SH_MOBILE_CEU is not set
CONFIG_V4L_USB_DRIVERS=y
# CONFIG_USB_VIDEO_CLASS is not set
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_USB_GSPCA=m
# CONFIG_USB_M5602 is not set
# CONFIG_USB_STV06XX is not set
# CONFIG_USB_GSPCA_CONEX is not set
# CONFIG_USB_GSPCA_ETOMS is not set
# CONFIG_USB_GSPCA_FINEPIX is not set
# CONFIG_USB_GSPCA_MARS is not set
# CONFIG_USB_GSPCA_MR97310A is not set
# CONFIG_USB_GSPCA_OV519 is not set
# CONFIG_USB_GSPCA_OV534 is not set
# CONFIG_USB_GSPCA_PAC207 is not set
# CONFIG_USB_GSPCA_PAC7311 is not set
# CONFIG_USB_GSPCA_SONIXB is not set
# CONFIG_USB_GSPCA_SONIXJ is not set
# CONFIG_USB_GSPCA_SPCA500 is not set
# CONFIG_USB_GSPCA_SPCA501 is not set
# CONFIG_USB_GSPCA_SPCA505 is not set
# CONFIG_USB_GSPCA_SPCA506 is not set
# CONFIG_USB_GSPCA_SPCA508 is not set
# CONFIG_USB_GSPCA_SPCA561 is not set
# CONFIG_USB_GSPCA_SQ905 is not set
# CONFIG_USB_GSPCA_SQ905C is not set
# CONFIG_USB_GSPCA_STK014 is not set
# CONFIG_USB_GSPCA_SUNPLUS is not set
# CONFIG_USB_GSPCA_T613 is not set
# CONFIG_USB_GSPCA_TV8532 is not set
# CONFIG_USB_GSPCA_VC032X is not set
CONFIG_USB_GSPCA_ZC3XX=m
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_HDPVR is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_CX231XX is not set
# CONFIG_VIDEO_USBVISION is not set
# CONFIG_USB_VICAM is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
# CONFIG_USB_QUICKCAM_MESSENGER is not set
# CONFIG_USB_ET61X251 is not set
# CONFIG_VIDEO_OVCAMCHIP is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
# CONFIG_USB_PWC_INPUT_EVDEV is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_USB_STKWEBCAM is not set
# CONFIG_USB_S2255 is not set
CONFIG_RADIO_ADAPTERS=y
# CONFIG_USB_DSBR is not set
# CONFIG_USB_SI470X is not set
# CONFIG_USB_MR800 is not set
# CONFIG_RADIO_TEA5764 is not set
# CONFIG_DVB_DYNAMIC_MINORS is not set
CONFIG_DVB_CAPTURE_DRIVERS=y
# CONFIG_TTPCI_EEPROM is not set
#
# Supported USB Adapters
#
# CONFIG_DVB_USB is not set
# CONFIG_DVB_SIANO_SMS1XXX is not set
#
# Supported FlexCopII (B2C2) Adapters
#
# CONFIG_DVB_B2C2_FLEXCOP is not set
#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
# CONFIG_DAB is not set
#
# Graphics support
#
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
# 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_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_UVESA is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_S3C2410=y
# CONFIG_FB_S3C2410_DEBUG is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_LTV350QV is not set
# CONFIG_LCD_ILI9320 is not set
# CONFIG_LCD_TDO24M is not set
# CONFIG_LCD_VGG2432A4 is not set
CONFIG_LCD_PLATFORM=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
CONFIG_BACKLIGHT_PWM=y
#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
CONFIG_FONT_8x8=y
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
CONFIG_FONT_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=y
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
# CONFIG_SND_DRIVERS is not set
# CONFIG_SND_ARM is not set
# CONFIG_SND_SPI is not set
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_SOC=y
CONFIG_SND_S3C24XX_SOC=y
CONFIG_SND_S3C24XX_SOC_I2S=y
# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=y
CONFIG_SND_SOC_I2C_AND_SPI=y
# CONFIG_SND_SOC_ALL_CODECS is not set
CONFIG_SND_SOC_L3=y
CONFIG_SND_SOC_UDA134X=y
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
CONFIG_HIDRAW=y
#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_CYPRESS=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EZKEY=y
CONFIG_HID_KYE=y
CONFIG_HID_GYRATION=y
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LOGITECH=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_NTRIG=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
CONFIG_HID_SUNPLUS=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_TOPSEED=y
# CONFIG_THRUSTMASTER_FF is not set
# CONFIG_ZEROPLUS_FF is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_MON is not set
# CONFIG_USB_WUSB is not set
# CONFIG_USB_WUSB_CBAF is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HWA_HCD is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_GADGET_MUSB_HDRC is not set
#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
# CONFIG_USB_PRINTER is not set
CONFIG_USB_WDM=m
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=m
# CONFIG_USB_STORAGE_FREECOM is not set
CONFIG_USB_STORAGE_ISD200=m
CONFIG_USB_STORAGE_USBAT=m
CONFIG_USB_STORAGE_SDDR09=m
CONFIG_USB_STORAGE_SDDR55=m
CONFIG_USB_STORAGE_JUMPSHOT=m
CONFIG_USB_STORAGE_ALAUDA=m
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
#
CONFIG_USB_SERIAL=m
# CONFIG_USB_EZUSB is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
CONFIG_USB_SERIAL_CP210X=m
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_MOTOROLA is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_QUALCOMM is not set
CONFIG_USB_SERIAL_SPCP8X5=m
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_SYMBOL is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_DEBUG is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_VST is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_PXA25X is not set
# CONFIG_USB_GADGET_PXA27X is not set
CONFIG_USB_GADGET_S3C2410=y
CONFIG_USB_S3C2410=y
# CONFIG_USB_S3C2410_DEBUG is not set
# CONFIG_USB_GADGET_IMX is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_AMD5536UDC is not set
# CONFIG_USB_GADGET_FSL_QE is not set
# CONFIG_USB_GADGET_CI13XXX is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
CONFIG_USB_ZERO=m
CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
CONFIG_USB_GADGETFS=m
CONFIG_USB_FILE_STORAGE=m
# CONFIG_USB_FILE_STORAGE_TEST is not set
CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
CONFIG_USB_CDC_COMPOSITE=m
#
# OTG and related infrastructure
#
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_NOP_USB_XCEIV is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=y
# CONFIG_MMC_TEST is not set
#
# MMC/SD/SDIO Host Controller Drivers
#
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SPI=y
CONFIG_MMC_S3C=y
# CONFIG_MEMSTICK is not set
# CONFIG_ACCESSIBILITY is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
#
# LED drivers
#
CONFIG_LEDS_S3C24XX=y
# CONFIG_LEDS_PCA9532 is not set
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_GPIO_PLATFORM=y
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_PWM is not set
# CONFIG_LEDS_BD2802 is not set
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
#
# iptables trigger is under Netfilter config (LED target)
#
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=y
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
#
# SPI RTC drivers
#
# CONFIG_RTC_DRV_M41T94 is not set
# CONFIG_RTC_DRV_DS1305 is not set
# CONFIG_RTC_DRV_DS1390 is not set
# CONFIG_RTC_DRV_MAX6902 is not set
# CONFIG_RTC_DRV_R9701 is not set
# CONFIG_RTC_DRV_RS5C348 is not set
# CONFIG_RTC_DRV_DS3234 is not set
#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
CONFIG_RTC_DRV_S3C=y
CONFIG_DMADEVICES=y
#
# DMA Devices
#
# CONFIG_AUXDISPLAY is not set
# CONFIG_REGULATOR is not set
# CONFIG_UIO is not set
# CONFIG_STAGING is not set
#
# File systems
#
CONFIG_EXT2_FS=m
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
CONFIG_GENERIC_ACL=y
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=m
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
CONFIG_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_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
CONFIG_ROMFS_FS=y
# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
# CONFIG_ROMFS_BACKED_BY_MTD is not set
CONFIG_ROMFS_BACKED_BY_BOTH=y
CONFIG_ROMFS_ON_BLOCK=y
CONFIG_ROMFS_ON_MTD=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_ROOT_NFS=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_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
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
CONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG 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=y
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="cp437"
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m
# CONFIG_DLM is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
# CONFIG_PAGE_POISONING is not set
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACING_SUPPORT=y
#
# Tracers
#
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_EVENT_TRACER is not set
# CONFIG_BOOT_TRACER is not set
# CONFIG_TRACE_BRANCH_PROFILING is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_ARM_UNWIND=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_ERRORS is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_LL is not set
CONFIG_DEBUG_S3C_UART=0
#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
CONFIG_SECURITY_FILE_CAPABILITIES=y
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=m
#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m
#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m
#
# Digest
#
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m
#
# Ciphers
#
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m
#
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
CONFIG_CRYPTO_HW=y
# CONFIG_BINARY_PRINTF is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_T10DIF=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
CONFIG_CRC7=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
arch/arm/mach-s3c2410/usb-simtec.c
View file @
413427b5
...
@@ -22,7 +22,6 @@
...
@@ -22,7 +22,6 @@
#include <linux/timer.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/device.h>
#include <linux/gpio.h>
#include <linux/io.h>
#include <linux/io.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
...
...
arch/arm/mach-s3c2440/Kconfig
View file @
413427b5
...
@@ -84,5 +84,15 @@ config MACH_AT2440EVB
...
@@ -84,5 +84,15 @@ config MACH_AT2440EVB
help
help
Say Y here if you are using the AT2440EVB development board
Say Y here if you are using the AT2440EVB development board
config MACH_MINI2440
bool "MINI2440 development board"
select CPU_S3C2440
select EEPROM_AT24
select LEDS_TRIGGER_BACKLIGHT
select SND_S3C24XX_SOC_S3C24XX_UDA134X
help
Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
available via various sources. It can come with a 3.5" or 7" touch LCD.
endmenu
endmenu
arch/arm/mach-s3c2440/Makefile
View file @
413427b5
...
@@ -22,3 +22,4 @@ obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
...
@@ -22,3 +22,4 @@ obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
obj-$(CONFIG_ARCH_S3C2440)
+=
mach-smdk2440.o
obj-$(CONFIG_ARCH_S3C2440)
+=
mach-smdk2440.o
obj-$(CONFIG_MACH_NEXCODER_2440)
+=
mach-nexcoder.o
obj-$(CONFIG_MACH_NEXCODER_2440)
+=
mach-nexcoder.o
obj-$(CONFIG_MACH_AT2440EVB)
+=
mach-at2440evb.o
obj-$(CONFIG_MACH_AT2440EVB)
+=
mach-at2440evb.o
obj-$(CONFIG_MACH_MINI2440)
+=
mach-mini2440.o
arch/arm/mach-s3c2440/mach-mini2440.c
0 → 100644
View file @
413427b5
/* linux/arch/arm/mach-s3c2440/mach-mini2440.c
*
* Copyright (c) 2008 Ramax Lo <ramaxlo@gmail.com>
* Based on mach-anubis.c by Ben Dooks <ben@simtec.co.uk>
* and modifications by SBZ <sbz@spgui.org> and
* Weibing <http://weibing.blogbus.com> and
* Michel Pollet <buserror@gmail.com>
*
* For product information, visit http://code.google.com/p/mini2440/
*
* 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/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <linux/input.h>
#include <linux/io.h>
#include <linux/serial_core.h>
#include <linux/dm9000.h>
#include <linux/i2c/at24.h>
#include <linux/platform_device.h>
#include <linux/gpio_keys.h>
#include <linux/i2c.h>
#include <linux/mmc/host.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <mach/hardware.h>
#include <mach/fb.h>
#include <asm/mach-types.h>
#include <plat/regs-serial.h>
#include <mach/regs-gpio.h>
#include <mach/leds-gpio.h>
#include <mach/regs-mem.h>
#include <mach/regs-lcd.h>
#include <mach/irqs.h>
#include <plat/nand.h>
#include <plat/iic.h>
#include <plat/mci.h>
#include <plat/udc.h>
#include <plat/regs-serial.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <sound/s3c24xx_uda134x.h>
#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
static
struct
map_desc
mini2440_iodesc
[]
__initdata
=
{
/* nothing to declare, move along */
};
#define UCON S3C2410_UCON_DEFAULT
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
static
struct
s3c2410_uartcfg
mini2440_uartcfgs
[]
__initdata
=
{
[
0
]
=
{
.
hwport
=
0
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
[
1
]
=
{
.
hwport
=
1
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
[
2
]
=
{
.
hwport
=
2
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
};
/* USB device UDC support */
static
void
mini2440_udc_pullup
(
enum
s3c2410_udc_cmd_e
cmd
)
{
pr_debug
(
"udc: pullup(%d)
\n
"
,
cmd
);
switch
(
cmd
)
{
case
S3C2410_UDC_P_ENABLE
:
s3c2410_gpio_setpin
(
S3C2410_GPC
(
5
),
1
);
break
;
case
S3C2410_UDC_P_DISABLE
:
s3c2410_gpio_setpin
(
S3C2410_GPC
(
5
),
0
);
break
;
case
S3C2410_UDC_P_RESET
:
break
;
default:
break
;
}
}
static
struct
s3c2410_udc_mach_info
mini2440_udc_cfg
__initdata
=
{
.
udc_command
=
mini2440_udc_pullup
,
};
/* LCD timing and setup */
/*
* This macro simplifies the table bellow
*/
#define _LCD_DECLARE(_clock,_xres,margin_left,margin_right,hsync, \
_yres,margin_top,margin_bottom,vsync, refresh) \
.width = _xres, \
.xres = _xres, \
.height = _yres, \
.yres = _yres, \
.left_margin = margin_left, \
.right_margin = margin_right, \
.upper_margin = margin_top, \
.lower_margin = margin_bottom, \
.hsync_len = hsync, \
.vsync_len = vsync, \
.pixclock = ((_clock*100000000000LL) / \
((refresh) * \
(hsync + margin_left + _xres + margin_right) * \
(vsync + margin_top + _yres + margin_bottom))), \
.bpp = 16,\
.type = (S3C2410_LCDCON1_TFT16BPP |\
S3C2410_LCDCON1_TFT)
struct
s3c2410fb_display
mini2440_lcd_cfg
[]
__initdata
=
{
[
0
]
=
{
/* mini2440 + 3.5" TFT + touchscreen */
_LCD_DECLARE
(
7
,
/* The 3.5 is quite fast */
240
,
21
,
38
,
6
,
/* x timing */
320
,
4
,
4
,
2
,
/* y timing */
60
),
/* refresh rate */
.
lcdcon5
=
(
S3C2410_LCDCON5_FRM565
|
S3C2410_LCDCON5_INVVLINE
|
S3C2410_LCDCON5_INVVFRAME
|
S3C2410_LCDCON5_INVVDEN
|
S3C2410_LCDCON5_PWREN
),
},
[
1
]
=
{
/* mini2440 + 7" TFT + touchscreen */
_LCD_DECLARE
(
10
,
/* the 7" runs slower */
800
,
40
,
40
,
48
,
/* x timing */
480
,
29
,
3
,
3
,
/* y timing */
50
),
/* refresh rate */
.
lcdcon5
=
(
S3C2410_LCDCON5_FRM565
|
S3C2410_LCDCON5_INVVLINE
|
S3C2410_LCDCON5_INVVFRAME
|
S3C2410_LCDCON5_PWREN
),
},
/* The VGA shield can outout at several resolutions. All share
* the same timings, however, anything smaller than 1024x768
* will only be displayed in the top left corner of a 1024x768
* XGA output unless you add optional dip switches to the shield.
* Therefore timings for other resolutions have been ommited here.
*/
[
2
]
=
{
_LCD_DECLARE
(
10
,
1024
,
1
,
2
,
2
,
/* y timing */
768
,
200
,
16
,
16
,
/* x timing */
24
),
/* refresh rate, maximum stable,
tested with the FPGA shield */
.
lcdcon5
=
(
S3C2410_LCDCON5_FRM565
|
S3C2410_LCDCON5_HWSWP
),
},
};
/* todo - put into gpio header */
#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2))
#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2))
struct
s3c2410fb_mach_info
mini2440_fb_info
__initdata
=
{
.
displays
=
&
mini2440_lcd_cfg
[
0
],
/* not constant! see init */
.
num_displays
=
1
,
.
default_display
=
0
,
/* Enable VD[2..7], VD[10..15], VD[18..23] and VCLK, syncs, VDEN
* and disable the pull down resistors on pins we are using for LCD
* data. */
.
gpcup
=
(
0xf
<<
1
)
|
(
0x3f
<<
10
),
.
gpccon
=
(
S3C2410_GPC1_VCLK
|
S3C2410_GPC2_VLINE
|
S3C2410_GPC3_VFRAME
|
S3C2410_GPC4_VM
|
S3C2410_GPC10_VD2
|
S3C2410_GPC11_VD3
|
S3C2410_GPC12_VD4
|
S3C2410_GPC13_VD5
|
S3C2410_GPC14_VD6
|
S3C2410_GPC15_VD7
),
.
gpccon_mask
=
(
S3C2410_GPCCON_MASK
(
1
)
|
S3C2410_GPCCON_MASK
(
2
)
|
S3C2410_GPCCON_MASK
(
3
)
|
S3C2410_GPCCON_MASK
(
4
)
|
S3C2410_GPCCON_MASK
(
10
)
|
S3C2410_GPCCON_MASK
(
11
)
|
S3C2410_GPCCON_MASK
(
12
)
|
S3C2410_GPCCON_MASK
(
13
)
|
S3C2410_GPCCON_MASK
(
14
)
|
S3C2410_GPCCON_MASK
(
15
)),
.
gpdup
=
(
0x3f
<<
2
)
|
(
0x3f
<<
10
),
.
gpdcon
=
(
S3C2410_GPD2_VD10
|
S3C2410_GPD3_VD11
|
S3C2410_GPD4_VD12
|
S3C2410_GPD5_VD13
|
S3C2410_GPD6_VD14
|
S3C2410_GPD7_VD15
|
S3C2410_GPD10_VD18
|
S3C2410_GPD11_VD19
|
S3C2410_GPD12_VD20
|
S3C2410_GPD13_VD21
|
S3C2410_GPD14_VD22
|
S3C2410_GPD15_VD23
),
.
gpdcon_mask
=
(
S3C2410_GPDCON_MASK
(
2
)
|
S3C2410_GPDCON_MASK
(
3
)
|
S3C2410_GPDCON_MASK
(
4
)
|
S3C2410_GPDCON_MASK
(
5
)
|
S3C2410_GPDCON_MASK
(
6
)
|
S3C2410_GPDCON_MASK
(
7
)
|
S3C2410_GPDCON_MASK
(
10
)
|
S3C2410_GPDCON_MASK
(
11
)
|
S3C2410_GPDCON_MASK
(
12
)
|
S3C2410_GPDCON_MASK
(
13
)
|
S3C2410_GPDCON_MASK
(
14
)
|
S3C2410_GPDCON_MASK
(
15
)),
};
/* MMC/SD */
static
struct
s3c24xx_mci_pdata
mini2440_mmc_cfg
__initdata
=
{
.
gpio_detect
=
S3C2410_GPG
(
8
),
.
gpio_wprotect
=
S3C2410_GPH
(
8
),
.
set_power
=
NULL
,
.
ocr_avail
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
};
/* NAND Flash on MINI2440 board */
static
struct
mtd_partition
mini2440_default_nand_part
[]
__initdata
=
{
[
0
]
=
{
.
name
=
"u-boot"
,
.
size
=
SZ_256K
,
.
offset
=
0
,
},
[
1
]
=
{
.
name
=
"u-boot-env"
,
.
size
=
SZ_128K
,
.
offset
=
SZ_256K
,
},
[
2
]
=
{
.
name
=
"kernel"
,
/* 5 megabytes, for a kernel with no modules
* or a uImage with a ramdisk attached */
.
size
=
0x00500000
,
.
offset
=
SZ_256K
+
SZ_128K
,
},
[
3
]
=
{
.
name
=
"root"
,
.
offset
=
SZ_256K
+
SZ_128K
+
0x00500000
,
.
size
=
MTDPART_SIZ_FULL
,
},
};
static
struct
s3c2410_nand_set
mini2440_nand_sets
[]
__initdata
=
{
[
0
]
=
{
.
name
=
"nand"
,
.
nr_chips
=
1
,
.
nr_partitions
=
ARRAY_SIZE
(
mini2440_default_nand_part
),
.
partitions
=
mini2440_default_nand_part
,
},
};
static
struct
s3c2410_platform_nand
mini2440_nand_info
__initdata
=
{
.
tacls
=
0
,
.
twrph0
=
25
,
.
twrph1
=
15
,
.
nr_sets
=
ARRAY_SIZE
(
mini2440_nand_sets
),
.
sets
=
mini2440_nand_sets
,
.
ignore_unset_ecc
=
1
,
};
/* DM9000AEP 10/100 ethernet controller */
static
struct
resource
mini2440_dm9k_resource
[]
__initdata
=
{
[
0
]
=
{
.
start
=
MACH_MINI2440_DM9K_BASE
,
.
end
=
MACH_MINI2440_DM9K_BASE
+
3
,
.
flags
=
IORESOURCE_MEM
},
[
1
]
=
{
.
start
=
MACH_MINI2440_DM9K_BASE
+
4
,
.
end
=
MACH_MINI2440_DM9K_BASE
+
7
,
.
flags
=
IORESOURCE_MEM
},
[
2
]
=
{
.
start
=
IRQ_EINT7
,
.
end
=
IRQ_EINT7
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHEDGE
,
}
};
/*
* The DM9000 has no eeprom, and it's MAC address is set by
* the bootloader before starting the kernel.
*/
static
struct
dm9000_plat_data
mini2440_dm9k_pdata
__initdata
=
{
.
flags
=
(
DM9000_PLATF_16BITONLY
|
DM9000_PLATF_NO_EEPROM
),
};
static
struct
platform_device
mini2440_device_eth
__initdata
=
{
.
name
=
"dm9000"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
mini2440_dm9k_resource
),
.
resource
=
mini2440_dm9k_resource
,
.
dev
=
{
.
platform_data
=
&
mini2440_dm9k_pdata
,
},
};
/* CON5
* +--+ /-----\
* | | | |
* | | | BAT |
* | | \_____/
* | |
* | | +----+ +----+
* | | | K5 | | K1 |
* | | +----+ +----+
* | | +----+ +----+
* | | | K4 | | K2 |
* | | +----+ +----+
* | | +----+ +----+
* | | | K6 | | K3 |
* | | +----+ +----+
* .....
*/
static
struct
gpio_keys_button
mini2440_buttons
[]
__initdata
=
{
{
.
gpio
=
S3C2410_GPG
(
0
),
/* K1 */
.
code
=
KEY_F1
,
.
desc
=
"Button 1"
,
.
active_low
=
1
,
},
{
.
gpio
=
S3C2410_GPG
(
3
),
/* K2 */
.
code
=
KEY_F2
,
.
desc
=
"Button 2"
,
.
active_low
=
1
,
},
{
.
gpio
=
S3C2410_GPG
(
5
),
/* K3 */
.
code
=
KEY_F3
,
.
desc
=
"Button 3"
,
.
active_low
=
1
,
},
{
.
gpio
=
S3C2410_GPG
(
6
),
/* K4 */
.
code
=
KEY_POWER
,
.
desc
=
"Power"
,
.
active_low
=
1
,
},
{
.
gpio
=
S3C2410_GPG
(
7
),
/* K5 */
.
code
=
KEY_F5
,
.
desc
=
"Button 5"
,
.
active_low
=
1
,
},
#if 0
/* this pin is also known as TCLK1 and seems to already
* marked as "in use" somehow in the kernel -- possibly wrongly */
{
.gpio = S3C2410_GPG(11), /* K6 */
.code = KEY_F6,
.desc = "Button 6",
.active_low = 1,
},
#endif
};
static
struct
gpio_keys_platform_data
mini2440_button_data
__initdata
=
{
.
buttons
=
mini2440_buttons
,
.
nbuttons
=
ARRAY_SIZE
(
mini2440_buttons
),
};
static
struct
platform_device
mini2440_button_device
__initdata
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
mini2440_button_data
,
}
};
/* LEDS */
static
struct
s3c24xx_led_platdata
mini2440_led1_pdata
__initdata
=
{
.
name
=
"led1"
,
.
gpio
=
S3C2410_GPB
(
5
),
.
flags
=
S3C24XX_LEDF_ACTLOW
|
S3C24XX_LEDF_TRISTATE
,
.
def_trigger
=
"heartbeat"
,
};
static
struct
s3c24xx_led_platdata
mini2440_led2_pdata
__initdata
=
{
.
name
=
"led2"
,
.
gpio
=
S3C2410_GPB
(
6
),
.
flags
=
S3C24XX_LEDF_ACTLOW
|
S3C24XX_LEDF_TRISTATE
,
.
def_trigger
=
"nand-disk"
,
};
static
struct
s3c24xx_led_platdata
mini2440_led3_pdata
__initdata
=
{
.
name
=
"led3"
,
.
gpio
=
S3C2410_GPB
(
7
),
.
flags
=
S3C24XX_LEDF_ACTLOW
|
S3C24XX_LEDF_TRISTATE
,
.
def_trigger
=
"mmc0"
,
};
static
struct
s3c24xx_led_platdata
mini2440_led4_pdata
__initdata
=
{
.
name
=
"led4"
,
.
gpio
=
S3C2410_GPB
(
8
),
.
flags
=
S3C24XX_LEDF_ACTLOW
|
S3C24XX_LEDF_TRISTATE
,
.
def_trigger
=
""
,
};
static
struct
s3c24xx_led_platdata
mini2440_led_backlight_pdata
__initdata
=
{
.
name
=
"backlight"
,
.
gpio
=
S3C2410_GPG
(
4
),
.
def_trigger
=
"backlight"
,
};
static
struct
platform_device
mini2440_led1
__initdata
=
{
.
name
=
"s3c24xx_led"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
mini2440_led1_pdata
,
},
};
static
struct
platform_device
mini2440_led2
__initdata
=
{
.
name
=
"s3c24xx_led"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
mini2440_led2_pdata
,
},
};
static
struct
platform_device
mini2440_led3
__initdata
=
{
.
name
=
"s3c24xx_led"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
mini2440_led3_pdata
,
},
};
static
struct
platform_device
mini2440_led4
__initdata
=
{
.
name
=
"s3c24xx_led"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
mini2440_led4_pdata
,
},
};
static
struct
platform_device
mini2440_led_backlight
__initdata
=
{
.
name
=
"s3c24xx_led"
,
.
id
=
5
,
.
dev
=
{
.
platform_data
=
&
mini2440_led_backlight_pdata
,
},
};
/* AUDIO */
static
struct
s3c24xx_uda134x_platform_data
mini2440_audio_pins
__initdata
=
{
.
l3_clk
=
S3C2410_GPB
(
4
),
.
l3_mode
=
S3C2410_GPB
(
2
),
.
l3_data
=
S3C2410_GPB
(
3
),
.
model
=
UDA134X_UDA1341
};
static
struct
platform_device
mini2440_audio
__initdata
=
{
.
name
=
"s3c24xx_uda134x"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
mini2440_audio_pins
,
},
};
/*
* I2C devices
*/
static
struct
at24_platform_data
at24c08
=
{
.
byte_len
=
SZ_8K
/
8
,
.
page_size
=
16
,
};
static
struct
i2c_board_info
mini2440_i2c_devs
[]
__initdata
=
{
{
I2C_BOARD_INFO
(
"24c08"
,
0x50
),
.
platform_data
=
&
at24c08
,
},
};
static
struct
platform_device
*
mini2440_devices
[]
__initdata
=
{
&
s3c_device_usb
,
&
s3c_device_wdt
,
/* &s3c_device_adc,*/
/* ADC doesn't like living with touchscreen ! */
&
s3c_device_i2c0
,
&
s3c_device_rtc
,
&
s3c_device_usbgadget
,
&
mini2440_device_eth
,
&
mini2440_led1
,
&
mini2440_led2
,
&
mini2440_led3
,
&
mini2440_led4
,
&
mini2440_button_device
,
&
s3c_device_nand
,
&
s3c_device_sdi
,
&
s3c_device_iis
,
&
mini2440_audio
,
/* &s3c_device_timer[0],*/
/* buzzer pwm, no API for it */
/* remaining devices are optional */
};
static
void
__init
mini2440_map_io
(
void
)
{
s3c24xx_init_io
(
mini2440_iodesc
,
ARRAY_SIZE
(
mini2440_iodesc
));
s3c24xx_init_clocks
(
12000000
);
s3c24xx_init_uarts
(
mini2440_uartcfgs
,
ARRAY_SIZE
(
mini2440_uartcfgs
));
s3c_device_nand
.
dev
.
platform_data
=
&
mini2440_nand_info
;
s3c_device_sdi
.
dev
.
platform_data
=
&
mini2440_mmc_cfg
;
}
/*
* mini2440_features string
*
* t = Touchscreen present
* b = backlight control
* c = camera [TODO]
* 0-9 LCD configuration
*
*/
static
char
mini2440_features_str
[
12
]
__initdata
=
"0tb"
;
static
int
__init
mini2440_features_setup
(
char
*
str
)
{
if
(
str
)
strlcpy
(
mini2440_features_str
,
str
,
sizeof
(
mini2440_features_str
));
return
1
;
}
__setup
(
"mini2440="
,
mini2440_features_setup
);
#define FEATURE_SCREEN (1 << 0)
#define FEATURE_BACKLIGHT (1 << 1)
#define FEATURE_TOUCH (1 << 2)
#define FEATURE_CAMERA (1 << 3)
struct
mini2440_features_t
{
int
count
;
int
done
;
int
lcd_index
;
struct
platform_device
*
optional
[
8
];
};
static
void
mini2440_parse_features
(
struct
mini2440_features_t
*
features
,
const
char
*
features_str
)
{
const
char
*
fp
=
features_str
;
features
->
count
=
0
;
features
->
done
=
0
;
features
->
lcd_index
=
-
1
;
while
(
*
fp
)
{
char
f
=
*
fp
++
;
switch
(
f
)
{
case
'0'
...
'9'
:
/* tft screen */
if
(
features
->
done
&
FEATURE_SCREEN
)
{
printk
(
KERN_INFO
"MINI2440: '%c' ignored, "
"screen type already set
\n
"
,
f
);
}
else
{
int
li
=
f
-
'0'
;
if
(
li
>=
ARRAY_SIZE
(
mini2440_lcd_cfg
))
printk
(
KERN_INFO
"MINI2440: "
"'%c' out of range LCD mode
\n
"
,
f
);
else
{
features
->
optional
[
features
->
count
++
]
=
&
s3c_device_lcd
;
features
->
lcd_index
=
li
;
}
}
features
->
done
|=
FEATURE_SCREEN
;
break
;
case
'b'
:
if
(
features
->
done
&
FEATURE_BACKLIGHT
)
printk
(
KERN_INFO
"MINI2440: '%c' ignored, "
"backlight already set
\n
"
,
f
);
else
{
features
->
optional
[
features
->
count
++
]
=
&
mini2440_led_backlight
;
}
features
->
done
|=
FEATURE_BACKLIGHT
;
break
;
case
't'
:
printk
(
KERN_INFO
"MINI2440: '%c' ignored, "
"touchscreen not compiled in
\n
"
,
f
);
break
;
case
'c'
:
if
(
features
->
done
&
FEATURE_CAMERA
)
printk
(
KERN_INFO
"MINI2440: '%c' ignored, "
"camera already registered
\n
"
,
f
);
else
features
->
optional
[
features
->
count
++
]
=
&
s3c_device_camif
;
features
->
done
|=
FEATURE_CAMERA
;
break
;
}
}
}
static
void
__init
mini2440_init
(
void
)
{
struct
mini2440_features_t
features
=
{
0
};
int
i
;
printk
(
KERN_INFO
"MINI2440: Option string mini2440=%s
\n
"
,
mini2440_features_str
);
/* Parse the feature string */
mini2440_parse_features
(
&
features
,
mini2440_features_str
);
/* turn LCD on */
s3c2410_gpio_cfgpin
(
S3C2410_GPC
(
0
),
S3C2410_GPC0_LEND
);
/* Turn the backlight early on */
s3c2410_gpio_setpin
(
S3C2410_GPG
(
4
),
1
);
s3c2410_gpio_cfgpin
(
S3C2410_GPG
(
4
),
S3C2410_GPIO_OUTPUT
);
/* remove pullup on optional PWM backlight -- unused on 3.5 and 7"s */
s3c2410_gpio_pullup
(
S3C2410_GPB
(
1
),
0
);
s3c2410_gpio_setpin
(
S3C2410_GPB
(
1
),
0
);
s3c2410_gpio_cfgpin
(
S3C2410_GPB
(
1
),
S3C2410_GPIO_INPUT
);
/* Make sure the D+ pullup pin is output */
s3c2410_gpio_cfgpin
(
S3C2410_GPC
(
5
),
S3C2410_GPIO_OUTPUT
);
/* mark the key as input, without pullups (there is one on the board) */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
mini2440_buttons
);
i
++
)
{
s3c2410_gpio_pullup
(
mini2440_buttons
[
i
].
gpio
,
0
);
s3c2410_gpio_cfgpin
(
mini2440_buttons
[
i
].
gpio
,
S3C2410_GPIO_INPUT
);
}
if
(
features
.
lcd_index
!=
-
1
)
{
int
li
;
mini2440_fb_info
.
displays
=
&
mini2440_lcd_cfg
[
features
.
lcd_index
];
printk
(
KERN_INFO
"MINI2440: LCD"
);
for
(
li
=
0
;
li
<
ARRAY_SIZE
(
mini2440_lcd_cfg
);
li
++
)
if
(
li
==
features
.
lcd_index
)
printk
(
" [%d:%dx%d]"
,
li
,
mini2440_lcd_cfg
[
li
].
width
,
mini2440_lcd_cfg
[
li
].
height
);
else
printk
(
" %d:%dx%d"
,
li
,
mini2440_lcd_cfg
[
li
].
width
,
mini2440_lcd_cfg
[
li
].
height
);
printk
(
"
\n
"
);
s3c24xx_fb_set_platdata
(
&
mini2440_fb_info
);
}
s3c24xx_udc_set_platdata
(
&
mini2440_udc_cfg
);
s3c_i2c0_set_platdata
(
NULL
);
i2c_register_board_info
(
0
,
mini2440_i2c_devs
,
ARRAY_SIZE
(
mini2440_i2c_devs
));
platform_add_devices
(
mini2440_devices
,
ARRAY_SIZE
(
mini2440_devices
));
if
(
features
.
count
)
/* the optional features */
platform_add_devices
(
features
.
optional
,
features
.
count
);
}
MACHINE_START
(
MINI2440
,
"MINI2440"
)
/* Maintainer: Michel Pollet <buserror@gmail.com> */
.
phys_io
=
S3C2410_PA_UART
,
.
io_pg_offst
=
(((
u32
)
S3C24XX_VA_UART
)
>>
18
)
&
0xfffc
,
.
boot_params
=
S3C2410_SDRAM_PA
+
0x100
,
.
map_io
=
mini2440_map_io
,
.
init_machine
=
mini2440_init
,
.
init_irq
=
s3c24xx_init_irq
,
.
timer
=
&
s3c24xx_timer
,
MACHINE_END
arch/arm/mach-s3c2442/Kconfig
View file @
413427b5
...
@@ -24,6 +24,18 @@ config SMDK2440_CPU2442
...
@@ -24,6 +24,18 @@ config SMDK2440_CPU2442
depends on ARCH_S3C2440
depends on ARCH_S3C2440
select CPU_S3C2442
select CPU_S3C2442
config MACH_NEO1973_GTA02
bool "Openmoko GTA02 / Freerunner phone"
select CPU_S3C2442
select MFD_PCF50633
select PCF50633_GPIO
select I2C
select POWER_SUPPLY
select MACH_NEO1973
select S3C2410_PWM
help
Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone
endmenu
endmenu
arch/arm/mach-s3c2442/Makefile
View file @
413427b5
...
@@ -12,5 +12,7 @@ obj- :=
...
@@ -12,5 +12,7 @@ obj- :=
obj-$(CONFIG_CPU_S3C2442)
+=
s3c2442.o
obj-$(CONFIG_CPU_S3C2442)
+=
s3c2442.o
obj-$(CONFIG_CPU_S3C2442)
+=
clock.o
obj-$(CONFIG_CPU_S3C2442)
+=
clock.o
obj-$(CONFIG_MACH_NEO1973_GTA02)
+=
mach-gta02.o
# Machine support
# Machine support
arch/arm/mach-s3c2442/include/mach/gta02.h
0 → 100644
View file @
413427b5
#ifndef _GTA02_H
#define _GTA02_H
#include <mach/regs-gpio.h>
/* Different hardware revisions, passed in ATAG_REVISION by u-boot */
#define GTA02v1_SYSTEM_REV 0x00000310
#define GTA02v2_SYSTEM_REV 0x00000320
#define GTA02v3_SYSTEM_REV 0x00000330
#define GTA02v4_SYSTEM_REV 0x00000340
#define GTA02v5_SYSTEM_REV 0x00000350
/* since A7 is basically same as A6, we use A6 PCB ID */
#define GTA02v6_SYSTEM_REV 0x00000360
#define GTA02_GPIO_n3DL_GSM S3C2410_GPA(13)
/* v1 + v2 + v3 only */
#define GTA02_GPIO_PWR_LED1 S3C2410_GPB(0)
#define GTA02_GPIO_PWR_LED2 S3C2410_GPB(1)
#define GTA02_GPIO_AUX_LED S3C2410_GPB(2)
#define GTA02_GPIO_VIBRATOR_ON S3C2410_GPB(3)
#define GTA02_GPIO_MODEM_RST S3C2410_GPB(5)
#define GTA02_GPIO_BT_EN S3C2410_GPB(6)
#define GTA02_GPIO_MODEM_ON S3C2410_GPB(7)
#define GTA02_GPIO_EXTINT8 S3C2410_GPB(8)
#define GTA02_GPIO_USB_PULLUP S3C2410_GPB(9)
#define GTA02_GPIO_PIO5 S3C2410_GPC(5)
/* v3 + v4 only */
#define GTA02v3_GPIO_nG1_CS S3C2410_GPD(12)
/* v3 + v4 only */
#define GTA02v3_GPIO_nG2_CS S3C2410_GPD(13)
/* v3 + v4 only */
#define GTA02v5_GPIO_HDQ S3C2410_GPD(14)
/* v5 + */
#define GTA02_GPIO_nG1_INT S3C2410_GPF(0)
#define GTA02_GPIO_IO1 S3C2410_GPF(1)
#define GTA02_GPIO_PIO_2 S3C2410_GPF(2)
/* v2 + v3 + v4 only */
#define GTA02_GPIO_JACK_INSERT S3C2410_GPF(4)
#define GTA02_GPIO_WLAN_GPIO1 S3C2410_GPF(5)
/* v2 + v3 + v4 only */
#define GTA02_GPIO_AUX_KEY S3C2410_GPF(6)
#define GTA02_GPIO_HOLD_KEY S3C2410_GPF(7)
#define GTA02_GPIO_3D_IRQ S3C2410_GPG(4)
#define GTA02v2_GPIO_nG2_INT S3C2410_GPG(8)
/* v2 + v3 + v4 only */
#define GTA02v3_GPIO_nUSB_OC S3C2410_GPG(9)
/* v3 + v4 only */
#define GTA02v3_GPIO_nUSB_FLT S3C2410_GPG(10)
/* v3 + v4 only */
#define GTA02v3_GPIO_nGSM_OC S3C2410_GPG(11)
/* v3 + v4 only */
#define GTA02_GPIO_AMP_SHUT S3C2440_GPJ1
/* v2 + v3 + v4 only */
#define GTA02v1_GPIO_WLAN_GPIO10 S3C2440_GPJ2
#define GTA02_GPIO_HP_IN S3C2440_GPJ2
/* v2 + v3 + v4 only */
#define GTA02_GPIO_INT0 S3C2440_GPJ3
/* v2 + v3 + v4 only */
#define GTA02_GPIO_nGSM_EN S3C2440_GPJ4
#define GTA02_GPIO_3D_RESET S3C2440_GPJ5
#define GTA02_GPIO_nDL_GSM S3C2440_GPJ6
/* v4 + v5 only */
#define GTA02_GPIO_WLAN_GPIO0 S3C2440_GPJ7
#define GTA02v1_GPIO_BAT_ID S3C2440_GPJ8
#define GTA02_GPIO_KEEPACT S3C2440_GPJ8
#define GTA02v1_GPIO_HP_IN S3C2440_GPJ10
#define GTA02_CHIP_PWD S3C2440_GPJ11
/* v2 + v3 + v4 only */
#define GTA02_GPIO_nWLAN_RESET S3C2440_GPJ12
/* v2 + v3 + v4 only */
#define GTA02_IRQ_GSENSOR_1 IRQ_EINT0
#define GTA02_IRQ_MODEM IRQ_EINT1
#define GTA02_IRQ_PIO_2 IRQ_EINT2
/* v2 + v3 + v4 only */
#define GTA02_IRQ_nJACK_INSERT IRQ_EINT4
#define GTA02_IRQ_WLAN_GPIO1 IRQ_EINT5
#define GTA02_IRQ_AUX IRQ_EINT6
#define GTA02_IRQ_nHOLD IRQ_EINT7
#define GTA02_IRQ_PCF50633 IRQ_EINT9
#define GTA02_IRQ_3D IRQ_EINT12
#define GTA02_IRQ_GSENSOR_2 IRQ_EINT16
/* v2 + v3 + v4 only */
#define GTA02v3_IRQ_nUSB_OC IRQ_EINT17
/* v3 + v4 only */
#define GTA02v3_IRQ_nUSB_FLT IRQ_EINT18
/* v3 + v4 only */
#define GTA02v3_IRQ_nGSM_OC IRQ_EINT19
/* v3 + v4 only */
/* returns 00 000 on GTA02 A5 and earlier, A6 returns 01 001 */
#define GTA02_PCB_ID1_0 S3C2410_GPC(13)
#define GTA02_PCB_ID1_1 S3C2410_GPC(15)
#define GTA02_PCB_ID1_2 S3C2410_GPD(0)
#define GTA02_PCB_ID2_0 S3C2410_GPD(3)
#define GTA02_PCB_ID2_1 S3C2410_GPD(4)
int
gta02_get_pcb_revision
(
void
);
#endif
/* _GTA02_H */
arch/arm/mach-s3c2442/mach-gta02.c
0 → 100644
View file @
413427b5
/*
* linux/arch/arm/mach-s3c2442/mach-gta02.c
*
* S3C2442 Machine Support for Openmoko GTA02 / FreeRunner.
*
* Copyright (C) 2006-2009 by Openmoko, Inc.
* Authors: Harald Welte <laforge@openmoko.org>
* Andy Green <andy@openmoko.org>
* Werner Almesberger <werner@openmoko.org>
* All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*/
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <linux/workqueue.h>
#include <linux/platform_device.h>
#include <linux/serial_core.h>
#include <linux/spi/spi.h>
#include <linux/mmc/host.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>
#include <linux/io.h>
#include <linux/i2c.h>
#include <linux/backlight.h>
#include <linux/regulator/machine.h>
#include <linux/mfd/pcf50633/core.h>
#include <linux/mfd/pcf50633/mbc.h>
#include <linux/mfd/pcf50633/adc.h>
#include <linux/mfd/pcf50633/gpio.h>
#include <linux/mfd/pcf50633/pmic.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/irq.h>
#include <asm/mach-types.h>
#include <mach/regs-irq.h>
#include <mach/regs-gpio.h>
#include <mach/regs-gpioj.h>
#include <mach/fb.h>
#include <mach/spi.h>
#include <mach/spi-gpio.h>
#include <plat/usb-control.h>
#include <mach/regs-mem.h>
#include <mach/hardware.h>
#include <mach/gta02.h>
#include <plat/regs-serial.h>
#include <plat/nand.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <plat/pm.h>
#include <plat/udc.h>
#include <plat/gpio-cfg.h>
#include <plat/iic.h>
static
struct
pcf50633
*
gta02_pcf
;
/*
* This gets called every 1ms when we paniced.
*/
static
long
gta02_panic_blink
(
long
count
)
{
long
delay
=
0
;
static
long
last_blink
;
static
char
led
;
/* Fast blink: 200ms period. */
if
(
count
-
last_blink
<
100
)
return
0
;
led
^=
1
;
gpio_direction_output
(
GTA02_GPIO_AUX_LED
,
led
);
last_blink
=
count
;
return
delay
;
}
static
struct
map_desc
gta02_iodesc
[]
__initdata
=
{
{
.
virtual
=
0xe0000000
,
.
pfn
=
__phys_to_pfn
(
S3C2410_CS3
+
0x01000000
),
.
length
=
SZ_1M
,
.
type
=
MT_DEVICE
},
};
#define UCON (S3C2410_UCON_DEFAULT | S3C2443_UCON_RXERR_IRQEN)
#define ULCON (S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB)
#define UFCON (S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE)
static
struct
s3c2410_uartcfg
gta02_uartcfgs
[]
=
{
[
0
]
=
{
.
hwport
=
0
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
[
1
]
=
{
.
hwport
=
1
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
[
2
]
=
{
.
hwport
=
2
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
},
};
#ifdef CONFIG_CHARGER_PCF50633
/*
* On GTA02 the 1A charger features a 48K resistor to 0V on the ID pin.
* We use this to recognize that we can pull 1A from the USB socket.
*
* These constants are the measured pcf50633 ADC levels with the 1A
* charger / 48K resistor, and with no pulldown resistor.
*/
#define ADC_NOM_CHG_DETECT_1A 6
#define ADC_NOM_CHG_DETECT_USB 43
static
void
gta02_configure_pmu_for_charger
(
struct
pcf50633
*
pcf
,
void
*
unused
,
int
res
)
{
int
ma
;
/* Interpret charger type */
if
(
res
<
((
ADC_NOM_CHG_DETECT_USB
+
ADC_NOM_CHG_DETECT_1A
)
/
2
))
{
/*
* Sanity - stop GPO driving out now that we have a 1A charger
* GPO controls USB Host power generation on GTA02
*/
pcf50633_gpio_set
(
pcf
,
PCF50633_GPO
,
0
);
ma
=
1000
;
}
else
ma
=
100
;
pcf50633_mbc_usb_curlim_set
(
pcf
,
ma
);
}
static
struct
delayed_work
gta02_charger_work
;
static
int
gta02_usb_vbus_draw
;
static
void
gta02_charger_worker
(
struct
work_struct
*
work
)
{
if
(
gta02_usb_vbus_draw
)
{
pcf50633_mbc_usb_curlim_set
(
gta02_pcf
,
gta02_usb_vbus_draw
);
return
;
}
#ifdef CONFIG_PCF50633_ADC
pcf50633_adc_async_read
(
gta02_pcf
,
PCF50633_ADCC1_MUX_ADCIN1
,
PCF50633_ADCC1_AVERAGE_16
,
gta02_configure_pmu_for_charger
,
NULL
);
#else
/*
* If the PCF50633 ADC is disabled we fallback to a
* 100mA limit for safety.
*/
pcf50633_mbc_usb_curlim_set
(
pcf
,
100
);
#endif
}
#define GTA02_CHARGER_CONFIGURE_TIMEOUT ((3000 * HZ) / 1000)
static
void
gta02_pmu_event_callback
(
struct
pcf50633
*
pcf
,
int
irq
)
{
if
(
irq
==
PCF50633_IRQ_USBINS
)
{
schedule_delayed_work
(
&
gta02_charger_work
,
GTA02_CHARGER_CONFIGURE_TIMEOUT
);
return
;
}
if
(
irq
==
PCF50633_IRQ_USBREM
)
{
cancel_delayed_work_sync
(
&
gta02_charger_work
);
gta02_usb_vbus_draw
=
0
;
}
}
static
void
gta02_udc_vbus_draw
(
unsigned
int
ma
)
{
if
(
!
gta02_pcf
)
return
;
gta02_usb_vbus_draw
=
ma
;
schedule_delayed_work
(
&
gta02_charger_work
,
GTA02_CHARGER_CONFIGURE_TIMEOUT
);
}
#else
/* !CONFIG_CHARGER_PCF50633 */
#define gta02_pmu_event_callback NULL
#define gta02_udc_vbus_draw NULL
#endif
/*
* This is called when pc50633 is probed, unfortunately quite late in the
* day since it is an I2C bus device. Here we can belatedly define some
* platform devices with the advantage that we can mark the pcf50633 as the
* parent. This makes them get suspended and resumed with their parent
* the pcf50633 still around.
*/
static
void
gta02_pmu_attach_child_devices
(
struct
pcf50633
*
pcf
);
static
char
*
gta02_batteries
[]
=
{
"battery"
,
};
struct
pcf50633_platform_data
gta02_pcf_pdata
=
{
.
resumers
=
{
[
0
]
=
PCF50633_INT1_USBINS
|
PCF50633_INT1_USBREM
|
PCF50633_INT1_ALARM
,
[
1
]
=
PCF50633_INT2_ONKEYF
,
[
2
]
=
PCF50633_INT3_ONKEY1S
,
[
3
]
=
PCF50633_INT4_LOWSYS
|
PCF50633_INT4_LOWBAT
|
PCF50633_INT4_HIGHTMP
,
},
.
batteries
=
gta02_batteries
,
.
num_batteries
=
ARRAY_SIZE
(
gta02_batteries
),
.
reg_init_data
=
{
[
PCF50633_REGULATOR_AUTO
]
=
{
.
constraints
=
{
.
min_uV
=
3300000
,
.
max_uV
=
3300000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
always_on
=
1
,
.
apply_uV
=
1
,
.
state_mem
=
{
.
enabled
=
1
,
},
},
},
[
PCF50633_REGULATOR_DOWN1
]
=
{
.
constraints
=
{
.
min_uV
=
1300000
,
.
max_uV
=
1600000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
always_on
=
1
,
.
apply_uV
=
1
,
},
},
[
PCF50633_REGULATOR_DOWN2
]
=
{
.
constraints
=
{
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
.
always_on
=
1
,
.
state_mem
=
{
.
enabled
=
1
,
},
},
},
[
PCF50633_REGULATOR_HCLDO
]
=
{
.
constraints
=
{
.
min_uV
=
2000000
,
.
max_uV
=
3300000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
.
always_on
=
1
,
},
},
[
PCF50633_REGULATOR_LDO1
]
=
{
.
constraints
=
{
.
min_uV
=
3300000
,
.
max_uV
=
3300000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
.
state_mem
=
{
.
enabled
=
0
,
},
},
},
[
PCF50633_REGULATOR_LDO2
]
=
{
.
constraints
=
{
.
min_uV
=
3300000
,
.
max_uV
=
3300000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
},
},
[
PCF50633_REGULATOR_LDO3
]
=
{
.
constraints
=
{
.
min_uV
=
3000000
,
.
max_uV
=
3000000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
},
},
[
PCF50633_REGULATOR_LDO4
]
=
{
.
constraints
=
{
.
min_uV
=
3200000
,
.
max_uV
=
3200000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
},
},
[
PCF50633_REGULATOR_LDO5
]
=
{
.
constraints
=
{
.
min_uV
=
3000000
,
.
max_uV
=
3000000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
apply_uV
=
1
,
.
state_mem
=
{
.
enabled
=
1
,
},
},
},
[
PCF50633_REGULATOR_LDO6
]
=
{
.
constraints
=
{
.
min_uV
=
3000000
,
.
max_uV
=
3000000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
},
},
[
PCF50633_REGULATOR_MEMLDO
]
=
{
.
constraints
=
{
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
state_mem
=
{
.
enabled
=
1
,
},
},
},
},
.
probe_done
=
gta02_pmu_attach_child_devices
,
.
mbc_event_callback
=
gta02_pmu_event_callback
,
};
/* NOR Flash. */
#define GTA02_FLASH_BASE 0x18000000
/* GCS3 */
#define GTA02_FLASH_SIZE 0x200000
/* 2MBytes */
static
struct
physmap_flash_data
gta02_nor_flash_data
=
{
.
width
=
2
,
};
static
struct
resource
gta02_nor_flash_resource
=
{
.
start
=
GTA02_FLASH_BASE
,
.
end
=
GTA02_FLASH_BASE
+
GTA02_FLASH_SIZE
-
1
,
.
flags
=
IORESOURCE_MEM
,
};
static
struct
platform_device
gta02_nor_flash
=
{
.
name
=
"physmap-flash"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
gta02_nor_flash_data
,
},
.
resource
=
&
gta02_nor_flash_resource
,
.
num_resources
=
1
,
};
struct
platform_device
s3c24xx_pwm_device
=
{
.
name
=
"s3c24xx_pwm"
,
.
num_resources
=
0
,
};
static
struct
i2c_board_info
gta02_i2c_devs
[]
__initdata
=
{
{
I2C_BOARD_INFO
(
"pcf50633"
,
0x73
),
.
irq
=
GTA02_IRQ_PCF50633
,
.
platform_data
=
&
gta02_pcf_pdata
,
},
{
I2C_BOARD_INFO
(
"wm8753"
,
0x1a
),
},
};
static
struct
s3c2410_nand_set
gta02_nand_sets
[]
=
{
[
0
]
=
{
/*
* This name is also hard-coded in the boot loaders, so
* changing it would would require all users to upgrade
* their boot loaders, some of which are stored in a NOR
* that is considered to be immutable.
*/
.
name
=
"neo1973-nand"
,
.
nr_chips
=
1
,
.
use_bbt
=
1
,
.
force_soft_ecc
=
1
,
},
};
/*
* Choose a set of timings derived from S3C@2442B MCP54
* data sheet (K5D2G13ACM-D075 MCP Memory).
*/
static
struct
s3c2410_platform_nand
gta02_nand_info
=
{
.
tacls
=
0
,
.
twrph0
=
25
,
.
twrph1
=
15
,
.
nr_sets
=
ARRAY_SIZE
(
gta02_nand_sets
),
.
sets
=
gta02_nand_sets
,
};
static
void
gta02_udc_command
(
enum
s3c2410_udc_cmd_e
cmd
)
{
switch
(
cmd
)
{
case
S3C2410_UDC_P_ENABLE
:
pr_debug
(
"%s S3C2410_UDC_P_ENABLE
\n
"
,
__func__
);
gpio_direction_output
(
GTA02_GPIO_USB_PULLUP
,
1
);
break
;
case
S3C2410_UDC_P_DISABLE
:
pr_debug
(
"%s S3C2410_UDC_P_DISABLE
\n
"
,
__func__
);
gpio_direction_output
(
GTA02_GPIO_USB_PULLUP
,
0
);
break
;
case
S3C2410_UDC_P_RESET
:
pr_debug
(
"%s S3C2410_UDC_P_RESET
\n
"
,
__func__
);
/* FIXME: Do something here. */
}
}
/* Get PMU to set USB current limit accordingly. */
static
struct
s3c2410_udc_mach_info
gta02_udc_cfg
=
{
.
vbus_draw
=
gta02_udc_vbus_draw
,
.
udc_command
=
gta02_udc_command
,
};
static
void
gta02_bl_set_intensity
(
int
intensity
)
{
struct
pcf50633
*
pcf
=
gta02_pcf
;
int
old_intensity
=
pcf50633_reg_read
(
pcf
,
PCF50633_REG_LEDOUT
);
/* We map 8-bit intensity to 6-bit intensity in hardware. */
intensity
>>=
2
;
/*
* This can happen during, eg, print of panic on blanked console,
* but we can't service i2c without interrupts active, so abort.
*/
if
(
in_atomic
())
{
printk
(
KERN_ERR
"gta02_bl_set_intensity called while atomic
\n
"
);
return
;
}
old_intensity
=
pcf50633_reg_read
(
pcf
,
PCF50633_REG_LEDOUT
);
if
(
intensity
==
old_intensity
)
return
;
/* We can't do this anywhere else. */
pcf50633_reg_write
(
pcf
,
PCF50633_REG_LEDDIM
,
5
);
if
(
!
(
pcf50633_reg_read
(
pcf
,
PCF50633_REG_LEDENA
)
&
3
))
old_intensity
=
0
;
/*
* The PCF50633 cannot handle LEDOUT = 0 (datasheet p60)
* if seen, you have to re-enable the LED unit.
*/
if
(
!
intensity
||
!
old_intensity
)
pcf50633_reg_write
(
pcf
,
PCF50633_REG_LEDENA
,
0
);
/* Illegal to set LEDOUT to 0. */
if
(
!
intensity
)
pcf50633_reg_set_bit_mask
(
pcf
,
PCF50633_REG_LEDOUT
,
0x3f
,
2
);
else
pcf50633_reg_set_bit_mask
(
pcf
,
PCF50633_REG_LEDOUT
,
0x3f
,
intensity
);
if
(
intensity
)
pcf50633_reg_write
(
pcf
,
PCF50633_REG_LEDENA
,
2
);
}
static
struct
generic_bl_info
gta02_bl_info
=
{
.
name
=
"gta02-bl"
,
.
max_intensity
=
0xff
,
.
default_intensity
=
0xff
,
.
set_bl_intensity
=
gta02_bl_set_intensity
,
};
static
struct
platform_device
gta02_bl_dev
=
{
.
name
=
"generic-bl"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
gta02_bl_info
,
},
};
/* USB */
static
struct
s3c2410_hcd_info
gta02_usb_info
=
{
.
port
[
0
]
=
{
.
flags
=
S3C_HCDFLG_USED
,
},
.
port
[
1
]
=
{
.
flags
=
0
,
},
};
static
void
__init
gta02_map_io
(
void
)
{
s3c24xx_init_io
(
gta02_iodesc
,
ARRAY_SIZE
(
gta02_iodesc
));
s3c24xx_init_clocks
(
12000000
);
s3c24xx_init_uarts
(
gta02_uartcfgs
,
ARRAY_SIZE
(
gta02_uartcfgs
));
}
/* These are the guys that don't need to be children of PMU. */
static
struct
platform_device
*
gta02_devices
[]
__initdata
=
{
&
s3c_device_usb
,
&
s3c_device_wdt
,
&
s3c_device_sdi
,
&
s3c_device_usbgadget
,
&
s3c_device_nand
,
&
gta02_nor_flash
,
&
s3c24xx_pwm_device
,
&
s3c_device_iis
,
&
s3c_device_i2c0
,
};
/* These guys DO need to be children of PMU. */
static
struct
platform_device
*
gta02_devices_pmu_children
[]
=
{
&
gta02_bl_dev
,
};
/*
* This is called when pc50633 is probed, quite late in the day since it is an
* I2C bus device. Here we can define platform devices with the advantage that
* we can mark the pcf50633 as the parent. This makes them get suspended and
* resumed with their parent the pcf50633 still around. All devices whose
* operation depends on something from pcf50633 must have this relationship
* made explicit like this, or suspend and resume will become an unreliable
* hellworld.
*/
static
void
gta02_pmu_attach_child_devices
(
struct
pcf50633
*
pcf
)
{
int
n
;
/* Grab a copy of the now probed PMU pointer. */
gta02_pcf
=
pcf
;
for
(
n
=
0
;
n
<
ARRAY_SIZE
(
gta02_devices_pmu_children
);
n
++
)
gta02_devices_pmu_children
[
n
]
->
dev
.
parent
=
pcf
->
dev
;
platform_add_devices
(
gta02_devices_pmu_children
,
ARRAY_SIZE
(
gta02_devices_pmu_children
));
}
static
void
gta02_poweroff
(
void
)
{
pcf50633_reg_set_bit_mask
(
gta02_pcf
,
PCF50633_REG_OOCSHDWN
,
1
,
1
);
}
static
void
__init
gta02_machine_init
(
void
)
{
/* Set the panic callback to make AUX LED blink at ~5Hz. */
panic_blink
=
gta02_panic_blink
;
s3c_pm_init
();
#ifdef CONFIG_CHARGER_PCF50633
INIT_DELAYED_WORK
(
&
gta02_charger_work
,
gta02_charger_worker
);
#endif
s3c_device_usb
.
dev
.
platform_data
=
&
gta02_usb_info
;
s3c_device_nand
.
dev
.
platform_data
=
&
gta02_nand_info
;
s3c24xx_udc_set_platdata
(
&
gta02_udc_cfg
);
s3c_i2c0_set_platdata
(
NULL
);
i2c_register_board_info
(
0
,
gta02_i2c_devs
,
ARRAY_SIZE
(
gta02_i2c_devs
));
platform_add_devices
(
gta02_devices
,
ARRAY_SIZE
(
gta02_devices
));
pm_power_off
=
gta02_poweroff
;
}
MACHINE_START
(
NEO1973_GTA02
,
"GTA02"
)
/* Maintainer: Nelson Castillo <arhuaco@freaks-unidos.net> */
.
phys_io
=
S3C2410_PA_UART
,
.
io_pg_offst
=
(((
u32
)
S3C24XX_VA_UART
)
>>
18
)
&
0xfffc
,
.
boot_params
=
S3C2410_SDRAM_PA
+
0x100
,
.
map_io
=
gta02_map_io
,
.
init_irq
=
s3c24xx_init_irq
,
.
init_machine
=
gta02_machine_init
,
.
timer
=
&
s3c24xx_timer
,
MACHINE_END
arch/arm/plat-s3c/Makefile
View file @
413427b5
...
@@ -34,6 +34,7 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
...
@@ -34,6 +34,7 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
obj-$(CONFIG_S3C_DEV_HSMMC1)
+=
dev-hsmmc1.o
obj-$(CONFIG_S3C_DEV_HSMMC1)
+=
dev-hsmmc1.o
obj-y
+=
dev-i2c0.o
obj-y
+=
dev-i2c0.o
obj-$(CONFIG_S3C_DEV_I2C1)
+=
dev-i2c1.o
obj-$(CONFIG_S3C_DEV_I2C1)
+=
dev-i2c1.o
obj-$(CONFIG_SND_S3C24XX_SOC)
+=
dev-audio.o
obj-$(CONFIG_S3C_DEV_FB)
+=
dev-fb.o
obj-$(CONFIG_S3C_DEV_FB)
+=
dev-fb.o
obj-$(CONFIG_S3C_DEV_USB_HOST)
+=
dev-usb.o
obj-$(CONFIG_S3C_DEV_USB_HOST)
+=
dev-usb.o
obj-$(CONFIG_S3C_DEV_USB_HSOTG)
+=
dev-usb-hsotg.o
obj-$(CONFIG_S3C_DEV_USB_HSOTG)
+=
dev-usb-hsotg.o
arch/arm/plat-s3c/dev-audio.c
0 → 100644
View file @
413427b5
/* linux/arch/arm/plat-s3c/dev-audio.c
*
* Copyright 2009 Wolfson Microelectronics
* Mark Brown <broonie@opensource.wolfsonmicro.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/string.h>
#include <linux/platform_device.h>
#include <mach/irqs.h>
#include <mach/map.h>
#include <plat/devs.h>
static
struct
resource
s3c64xx_iis0_resource
[]
=
{
[
0
]
=
{
.
start
=
S3C64XX_PA_IIS0
,
.
end
=
S3C64XX_PA_IIS0
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
struct
platform_device
s3c64xx_device_iis0
=
{
.
name
=
"s3c64xx-iis"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iis0_resource
),
.
resource
=
s3c64xx_iis0_resource
,
};
EXPORT_SYMBOL
(
s3c64xx_device_iis0
);
static
struct
resource
s3c64xx_iis1_resource
[]
=
{
[
0
]
=
{
.
start
=
S3C64XX_PA_IIS1
,
.
end
=
S3C64XX_PA_IIS1
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
struct
platform_device
s3c64xx_device_iis1
=
{
.
name
=
"s3c64xx-iis"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iis1_resource
),
.
resource
=
s3c64xx_iis1_resource
,
};
EXPORT_SYMBOL
(
s3c64xx_device_iis1
);
static
struct
resource
s3c64xx_iisv4_resource
[]
=
{
[
0
]
=
{
.
start
=
S3C64XX_PA_IISV4
,
.
end
=
S3C64XX_PA_IISV4
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
struct
platform_device
s3c64xx_device_iisv4
=
{
.
name
=
"s3c64xx-iis-v4"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iisv4_resource
),
.
resource
=
s3c64xx_iisv4_resource
,
};
EXPORT_SYMBOL
(
s3c64xx_device_iisv4
);
arch/arm/plat-s3c/include/plat/devs.h
View file @
413427b5
...
@@ -24,13 +24,16 @@ extern struct platform_device *s3c24xx_uart_src[];
...
@@ -24,13 +24,16 @@ extern struct platform_device *s3c24xx_uart_src[];
extern
struct
platform_device
s3c_device_timer
[];
extern
struct
platform_device
s3c_device_timer
[];
extern
struct
platform_device
s3c64xx_device_iis0
;
extern
struct
platform_device
s3c64xx_device_iis1
;
extern
struct
platform_device
s3c64xx_device_iisv4
;
extern
struct
platform_device
s3c_device_fb
;
extern
struct
platform_device
s3c_device_fb
;
extern
struct
platform_device
s3c_device_usb
;
extern
struct
platform_device
s3c_device_usb
;
extern
struct
platform_device
s3c_device_lcd
;
extern
struct
platform_device
s3c_device_lcd
;
extern
struct
platform_device
s3c_device_wdt
;
extern
struct
platform_device
s3c_device_wdt
;
extern
struct
platform_device
s3c_device_i2c0
;
extern
struct
platform_device
s3c_device_i2c0
;
extern
struct
platform_device
s3c_device_i2c1
;
extern
struct
platform_device
s3c_device_i2c1
;
extern
struct
platform_device
s3c_device_iis
;
extern
struct
platform_device
s3c_device_rtc
;
extern
struct
platform_device
s3c_device_rtc
;
extern
struct
platform_device
s3c_device_adc
;
extern
struct
platform_device
s3c_device_adc
;
extern
struct
platform_device
s3c_device_sdi
;
extern
struct
platform_device
s3c_device_sdi
;
...
...
arch/arm/plat-s3c64xx/Makefile
View file @
413427b5
...
@@ -23,6 +23,7 @@ obj-y += gpiolib.o
...
@@ -23,6 +23,7 @@ obj-y += gpiolib.o
obj-$(CONFIG_CPU_S3C6400_INIT)
+=
s3c6400-init.o
obj-$(CONFIG_CPU_S3C6400_INIT)
+=
s3c6400-init.o
obj-$(CONFIG_CPU_S3C6400_CLOCK)
+=
s3c6400-clock.o
obj-$(CONFIG_CPU_S3C6400_CLOCK)
+=
s3c6400-clock.o
obj-$(CONFIG_CPU_FREQ_S3C64XX)
+=
cpufreq.o
# PM support
# PM support
...
...
arch/arm/plat-s3c64xx/cpufreq.c
0 → 100644
View file @
413427b5
/* linux/arch/arm/plat-s3c64xx/cpufreq.c
*
* Copyright 2009 Wolfson Microelectronics plc
*
* S3C64xx CPUfreq Support
*
* 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/types.h>
#include <linux/init.h>
#include <linux/cpufreq.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/regulator/consumer.h>
static
struct
clk
*
armclk
;
static
struct
regulator
*
vddarm
;
#ifdef CONFIG_CPU_S3C6410
struct
s3c64xx_dvfs
{
unsigned
int
vddarm_min
;
unsigned
int
vddarm_max
;
};
static
struct
s3c64xx_dvfs
s3c64xx_dvfs_table
[]
=
{
[
0
]
=
{
1000000
,
1000000
},
[
1
]
=
{
1000000
,
1050000
},
[
2
]
=
{
1050000
,
1100000
},
[
3
]
=
{
1050000
,
1150000
},
[
4
]
=
{
1250000
,
1350000
},
};
static
struct
cpufreq_frequency_table
s3c64xx_freq_table
[]
=
{
{
0
,
66000
},
{
0
,
133000
},
{
1
,
222000
},
{
1
,
266000
},
{
2
,
333000
},
{
2
,
400000
},
{
3
,
532000
},
{
3
,
533000
},
{
4
,
667000
},
{
0
,
CPUFREQ_TABLE_END
},
};
#endif
static
int
s3c64xx_cpufreq_verify_speed
(
struct
cpufreq_policy
*
policy
)
{
if
(
policy
->
cpu
!=
0
)
return
-
EINVAL
;
return
cpufreq_frequency_table_verify
(
policy
,
s3c64xx_freq_table
);
}
static
unsigned
int
s3c64xx_cpufreq_get_speed
(
unsigned
int
cpu
)
{
if
(
cpu
!=
0
)
return
0
;
return
clk_get_rate
(
armclk
)
/
1000
;
}
static
int
s3c64xx_cpufreq_set_target
(
struct
cpufreq_policy
*
policy
,
unsigned
int
target_freq
,
unsigned
int
relation
)
{
int
ret
;
unsigned
int
i
;
struct
cpufreq_freqs
freqs
;
struct
s3c64xx_dvfs
*
dvfs
;
ret
=
cpufreq_frequency_table_target
(
policy
,
s3c64xx_freq_table
,
target_freq
,
relation
,
&
i
);
if
(
ret
!=
0
)
return
ret
;
freqs
.
cpu
=
0
;
freqs
.
old
=
clk_get_rate
(
armclk
)
/
1000
;
freqs
.
new
=
s3c64xx_freq_table
[
i
].
frequency
;
freqs
.
flags
=
0
;
dvfs
=
&
s3c64xx_dvfs_table
[
s3c64xx_freq_table
[
i
].
index
];
if
(
freqs
.
old
==
freqs
.
new
)
return
0
;
pr_debug
(
"cpufreq: Transition %d-%dkHz
\n
"
,
freqs
.
old
,
freqs
.
new
);
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_PRECHANGE
);
#ifdef CONFIG_REGULATOR
if
(
vddarm
&&
freqs
.
new
>
freqs
.
old
)
{
ret
=
regulator_set_voltage
(
vddarm
,
dvfs
->
vddarm_min
,
dvfs
->
vddarm_max
);
if
(
ret
!=
0
)
{
pr_err
(
"cpufreq: Failed to set VDDARM for %dkHz: %d
\n
"
,
freqs
.
new
,
ret
);
goto
err
;
}
}
#endif
ret
=
clk_set_rate
(
armclk
,
freqs
.
new
*
1000
);
if
(
ret
<
0
)
{
pr_err
(
"cpufreq: Failed to set rate %dkHz: %d
\n
"
,
freqs
.
new
,
ret
);
goto
err
;
}
#ifdef CONFIG_REGULATOR
if
(
vddarm
&&
freqs
.
new
<
freqs
.
old
)
{
ret
=
regulator_set_voltage
(
vddarm
,
dvfs
->
vddarm_min
,
dvfs
->
vddarm_max
);
if
(
ret
!=
0
)
{
pr_err
(
"cpufreq: Failed to set VDDARM for %dkHz: %d
\n
"
,
freqs
.
new
,
ret
);
goto
err_clk
;
}
}
#endif
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
pr_debug
(
"cpufreq: Set actual frequency %lukHz
\n
"
,
clk_get_rate
(
armclk
)
/
1000
);
return
0
;
err_clk:
if
(
clk_set_rate
(
armclk
,
freqs
.
old
*
1000
)
<
0
)
pr_err
(
"Failed to restore original clock rate
\n
"
);
err:
cpufreq_notify_transition
(
&
freqs
,
CPUFREQ_POSTCHANGE
);
return
ret
;
}
#ifdef CONFIG_REGULATOR
static
void
__init
s3c64xx_cpufreq_constrain_voltages
(
void
)
{
int
count
,
v
,
i
,
found
;
struct
cpufreq_frequency_table
*
freq
;
struct
s3c64xx_dvfs
*
dvfs
;
count
=
regulator_count_voltages
(
vddarm
);
if
(
count
<
0
)
{
pr_err
(
"cpufreq: Unable to check supported voltages
\n
"
);
return
;
}
freq
=
s3c64xx_freq_table
;
while
(
freq
->
frequency
!=
CPUFREQ_TABLE_END
)
{
if
(
freq
->
frequency
==
CPUFREQ_ENTRY_INVALID
)
continue
;
dvfs
=
&
s3c64xx_dvfs_table
[
freq
->
index
];
found
=
0
;
for
(
i
=
0
;
i
<
count
;
i
++
)
{
v
=
regulator_list_voltage
(
vddarm
,
i
);
if
(
v
>=
dvfs
->
vddarm_min
&&
v
<=
dvfs
->
vddarm_max
)
found
=
1
;
}
if
(
!
found
)
{
pr_debug
(
"cpufreq: %dkHz unsupported by regulator
\n
"
,
freq
->
frequency
);
freq
->
frequency
=
CPUFREQ_ENTRY_INVALID
;
}
freq
++
;
}
}
#endif
static
int
__init
s3c64xx_cpufreq_driver_init
(
struct
cpufreq_policy
*
policy
)
{
int
ret
;
struct
cpufreq_frequency_table
*
freq
;
if
(
policy
->
cpu
!=
0
)
return
-
EINVAL
;
if
(
s3c64xx_freq_table
==
NULL
)
{
pr_err
(
"cpufreq: No frequency information for this CPU
\n
"
);
return
-
ENODEV
;
}
armclk
=
clk_get
(
NULL
,
"armclk"
);
if
(
IS_ERR
(
armclk
))
{
pr_err
(
"cpufreq: Unable to obtain ARMCLK: %ld
\n
"
,
PTR_ERR
(
armclk
));
return
PTR_ERR
(
armclk
);
}
#ifdef CONFIG_REGULATOR
vddarm
=
regulator_get
(
NULL
,
"vddarm"
);
if
(
IS_ERR
(
vddarm
))
{
ret
=
PTR_ERR
(
vddarm
);
pr_err
(
"cpufreq: Failed to obtain VDDARM: %d
\n
"
,
ret
);
pr_err
(
"cpufreq: Only frequency scaling available
\n
"
);
vddarm
=
NULL
;
}
else
{
s3c64xx_cpufreq_constrain_voltages
();
}
#endif
freq
=
s3c64xx_freq_table
;
while
(
freq
->
frequency
!=
CPUFREQ_TABLE_END
)
{
unsigned
long
r
;
/* Check for frequencies we can generate */
r
=
clk_round_rate
(
armclk
,
freq
->
frequency
*
1000
);
r
/=
1000
;
if
(
r
!=
freq
->
frequency
)
freq
->
frequency
=
CPUFREQ_ENTRY_INVALID
;
/* If we have no regulator then assume startup
* frequency is the maximum we can support. */
if
(
!
vddarm
&&
freq
->
frequency
>
s3c64xx_cpufreq_get_speed
(
0
))
freq
->
frequency
=
CPUFREQ_ENTRY_INVALID
;
freq
++
;
}
policy
->
cur
=
clk_get_rate
(
armclk
)
/
1000
;
/* Pick a conservative guess in ns: we'll need ~1 I2C/SPI
* write plus clock reprogramming. */
policy
->
cpuinfo
.
transition_latency
=
2
*
1000
*
1000
;
ret
=
cpufreq_frequency_table_cpuinfo
(
policy
,
s3c64xx_freq_table
);
if
(
ret
!=
0
)
{
pr_err
(
"cpufreq: Failed to configure frequency table: %d
\n
"
,
ret
);
regulator_put
(
vddarm
);
clk_put
(
armclk
);
}
return
ret
;
}
static
struct
cpufreq_driver
s3c64xx_cpufreq_driver
=
{
.
owner
=
THIS_MODULE
,
.
flags
=
0
,
.
verify
=
s3c64xx_cpufreq_verify_speed
,
.
target
=
s3c64xx_cpufreq_set_target
,
.
get
=
s3c64xx_cpufreq_get_speed
,
.
init
=
s3c64xx_cpufreq_driver_init
,
.
name
=
"s3c"
,
};
static
int
__init
s3c64xx_cpufreq_init
(
void
)
{
return
cpufreq_register_driver
(
&
s3c64xx_cpufreq_driver
);
}
module_init
(
s3c64xx_cpufreq_init
);
drivers/mmc/host/s3cmci.c
View file @
413427b5
...
@@ -794,7 +794,7 @@ static void s3cmci_dma_setup(struct s3cmci_host *host,
...
@@ -794,7 +794,7 @@ static void s3cmci_dma_setup(struct s3cmci_host *host,
host
->
mem
->
start
+
host
->
sdidata
);
host
->
mem
->
start
+
host
->
sdidata
);
if
(
!
setup_ok
)
{
if
(
!
setup_ok
)
{
s3c2410_dma_config
(
host
->
dma
,
4
,
0
);
s3c2410_dma_config
(
host
->
dma
,
4
);
s3c2410_dma_set_buffdone_fn
(
host
->
dma
,
s3c2410_dma_set_buffdone_fn
(
host
->
dma
,
s3cmci_dma_done_callback
);
s3cmci_dma_done_callback
);
s3c2410_dma_setflags
(
host
->
dma
,
S3C2410_DMAF_AUTOSTART
);
s3c2410_dma_setflags
(
host
->
dma
,
S3C2410_DMAF_AUTOSTART
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment