aboutsummaryrefslogtreecommitdiffstats
path: root/packages/linux/linux-ezx-2.6.21
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-ezx-2.6.21')
-rw-r--r--packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a1200/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200)584
-rw-r--r--packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a780/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-a780)471
-rw-r--r--packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/e680/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-e680)473
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch82
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch83
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch38
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-flip.patch10
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch22
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-leds.patch41
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch90
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-ts.patch19
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch83
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch14
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch14
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/defconfig-e21092
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch38
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch22
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-leds.patch287
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch10
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch90
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-ts.patch19
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch1302
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch28
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch36
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-core.patch220
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch132
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch342
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch24
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch1398
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch15
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/index.html60
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch41
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch143
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch35
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/series12
-rw-r--r--packages/linux/linux-ezx-2.6.21/rokre2/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre2/defconfig1582
-rw-r--r--packages/linux/linux-ezx-2.6.21/rokre6/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre6/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-e6)582
47 files changed, 6646 insertions, 3013 deletions
diff --git a/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200 b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
index 36021906b7..ea7475ced2 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200
+++ b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Wed Jun 13 17:26:12 2007
+# Sun Sep 9 16:54:53 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -151,10 +150,13 @@ CONFIG_PXA_EZX=y
# CONFIG_PXA_EZX_E2 is not set
CONFIG_PXA_EZX_A1200=y
# CONFIG_PXA_EZX_E6 is not set
-# CONFIG_EZX_BP is not set
+CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_TF=y
-# CONFIG_EZX_EMU is not set
+CONFIG_EZX_EOC=y
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
CONFIG_PXA27x=y
CONFIG_PXA_SSP=y
@@ -195,7 +197,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -212,11 +214,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -225,6 +227,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -254,6 +258,10 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -263,15 +271,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# 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_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -280,11 +288,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -316,6 +468,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -323,8 +476,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 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_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -346,7 +526,101 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_E2 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
#
# Parallel port support
@@ -363,10 +637,13 @@ CONFIG_CONNECTOR=m
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -412,7 +689,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -438,7 +715,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -451,11 +737,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -559,6 +845,8 @@ CONFIG_HW_RANDOM=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
#
# I2C support
@@ -655,7 +943,50 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# 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_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX 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_W9968CF 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
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -668,8 +999,8 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_EZX is not set
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
@@ -713,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -880,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -906,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -918,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -925,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -943,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -958,6 +1390,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -968,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1086,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1098,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780 b/packages/linux/linux-ezx-2.6.21/a780/defconfig
index bd794af856..9ea8e88266 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780
+++ b/packages/linux/linux-ezx-2.6.21/a780/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Sat Jun 2 19:52:36 2007
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 10:37:45 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -153,7 +152,6 @@ CONFIG_PXA_EZX_A780=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_TF=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -198,7 +196,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -215,11 +213,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -228,6 +226,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -257,6 +257,10 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -266,15 +270,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# 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_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -283,11 +287,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -319,6 +467,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -326,28 +475,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -428,7 +584,7 @@ CONFIG_MTD_XIP=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x0
-CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_LEN=0x0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
@@ -480,10 +636,13 @@ CONFIG_MTD_EZX_A780=y
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -529,7 +688,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -555,7 +714,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -568,11 +736,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -775,7 +943,50 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# 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_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX 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_W9968CF 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
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -788,7 +999,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
@@ -833,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -1000,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1026,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -1038,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -1045,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -1063,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1089,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1207,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1219,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680 b/packages/linux/linux-ezx-2.6.21/e680/defconfig
index d180351886..770df7f34c 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680
+++ b/packages/linux/linux-ezx-2.6.21/e680/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Sat Jun 2 18:29:02 2007
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 16:51:47 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -153,7 +152,6 @@ CONFIG_PXA_EZX_E680=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_SD=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -198,7 +196,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -215,11 +213,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -228,6 +226,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -257,6 +257,10 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -266,15 +270,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# 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_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -283,11 +287,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -319,6 +467,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -326,28 +475,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -428,7 +584,7 @@ CONFIG_MTD_XIP=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x0
-CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_LEN=0x0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
@@ -480,10 +636,13 @@ CONFIG_MTD_EZX_A780=y
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -529,7 +688,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -555,7 +714,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -568,11 +736,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -768,14 +936,57 @@ CONFIG_LEDS_CLASS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_E680=y
+# CONFIG_LEDS_E680 is not set
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# 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_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX 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_W9968CF 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
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -788,7 +999,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
@@ -833,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -1000,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1026,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -1038,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -1045,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -1063,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1089,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1207,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1219,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
new file mode 100644
index 0000000000..577aa66303
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
@@ -0,0 +1,82 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-09 13:29:56.000000000 -0300
+@@ -25,6 +25,7 @@
+ #include <asm/arch/mmc.h>
+
+ #include "generic.h"
++#include "ezx-eoc.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+@@ -227,11 +228,69 @@
+ .resource = pcap_ts_resources,
+ };
+
++
++/* EOC */
++static const unsigned int tab_init_eoc_reg[][2] =
++{
++ {POWER_IC_REG_EOC_INT_MASK, 0x00000FEF},
++ {POWER_IC_REG_EOC_POWER_CONTROL_0, 0x00000C00},
++ {POWER_IC_REG_EOC_POWER_CONTROL_1, 0x0000000C},
++ {POWER_IC_REG_EOC_CONN_CONTROL, 0x00021044},
++};
++
++static void dump_eoc_registers(void)
++{
++ int i, val = 0;
++
++ printk("========DUMP EOC=========\n");
++ for (i = 0; i < POWER_IC_REG_EOC_NUM; i++) {
++ eoc_reg_read(i, &val);
++ printk("eoc_registers[%d] = 0x%08X\n", i, val);
++ }
++ printk("========END DUMP=========\n");
++}
++
++/*
++ * FIXME: The same about the PCAP driver applies here.
++ * This is the initial state only.
++ * Which bits does the change to USB/UART/AUDIO mode?
++ * I think that this is causing the crash on pxa27x-udc
++ * you are setting the 'port connected' bit, and thats why
++ * you are getting interrupts early.
++ * --WM
++ */
++
++static int __init a1200_eoc_init(void)
++{
++ int i;
++
++ for (i = 0; i < sizeof(tab_init_eoc_reg)/sizeof(unsigned int)/2; i++)
++ {
++ eoc_reg_write(tab_init_eoc_reg[i][0], tab_init_eoc_reg[i][1]);
++ }
++ dump_eoc_registers();
++ return 0;
++}
++
++static struct ezx_eoc_platform_data a1200_eoc_platform_data = {
++ .init = a1200_eoc_init,
++};
++
++struct platform_device a1200_eoc_device = {
++ .name = "ezx-eoc",
++ .id = -1,
++ .dev = {
++ .platform_data = &a1200_eoc_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &pcap_ts_device,
++ &a1200_eoc_device,
+ };
+
++
+ static void __init a1200_init(void)
+ {
+ set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
index 0d2640a2e7..042254b115 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
@@ -1,20 +1,8 @@
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:31.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:44:29.000000000 -0300
-@@ -97,6 +97,7 @@
- config PXA_EZX_A1200
- bool "Motorola A1200 GSM Phone"
- select PXA27x
-+ select EZX_MCI_TF
-
- config PXA_EZX_E6
- bool "Motorola E6 GSM Phone"
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:26.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:44:56.000000000 -0300
-@@ -13,11 +13,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
+@@ -13,6 +13,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -23,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -20,12 +22,102 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -25,6 +28,95 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -125,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
static struct pxafb_mode_info mode_a1200 = {
.pixclock = 192308,
.xres = 240,
-@@ -54,6 +146,7 @@
+@@ -118,6 +210,7 @@
static void __init a1200_init(void)
{
set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
new file mode 100644
index 0000000000..8aa1e46d73
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
@@ -0,0 +1,83 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:32:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,70 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init a1200_pcap_init(void)
++{
++ /*
++ * FIXME: this is the PCAP INITIAL STATE.
++ * most of these writes should NOT be done here
++ * * voltage regulators, voltage enablers should be set by the
++ * driver which uses the connected hardware. Otherwise you
++ * drain power unnecessarily.
++ * * interrupt related registers should be set by the irq functions
++ * only. I think that the INT_SEL register selects on which irq
++ * pin the (ap/bp) the irq goes. This should go on ezx-pcap.c, but
++ * only if it actually makes any difference.
++ * * Only power state automatic changes should be done here.
++ * (*LOWPWR, *STBY, LOWPWR*)
++ * * I removed some writes which i consider extremelly wrong. And
++ * which i think will not break anything (they were overwritten
++ * later anyway).
++ *
++ * --WM
++ */
++ ezx_pcap_write(PCAP_REG_INT_SEL, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_SWCTRL, 0x2ee6); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_VREG1, 0x15778e3); /* wrong */
++ ezx_pcap_write(PCAP_REG_VREG2, 0x810234); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG, 0x1024bec); /* wrong */
++ ezx_pcap_write(PCAP_REG_PWR, 0x94108); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG_MASK, 0x214d48); /* wrong */
++ ezx_pcap_write(PCAP_REG_BUSCTRL, 0x2a0); /* wrong */
++ ezx_pcap_write(PCAP_REG_LOWPWR, 0x1d9610c);
++ ezx_pcap_write(PCAP_REG_PERIPH, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_GP, 0x107); /* probably unnecessary */
++
++ return 0;
++}
++
++static struct pcap_platform_data a1200_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_CS_AH | PCAP_MCI_TF,
++ .clk = 1,
++ .init = a1200_pcap_init,
++};
++
++static struct resource a1200_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a1200_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a1200_pcap_resources),
++ .resource = a1200_pcap_resources,
++ .dev = {
++ .platform_data = &a1200_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a1200_pcap_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
index a7ca6362b0..a8c8f2ee29 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
@@ -1,16 +1,16 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:33:41.000000000 -0300
-@@ -117,6 +117,27 @@
- .exit = a1200_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:55:10.000000000 -0300
+@@ -203,8 +203,33 @@
+ },
};
+/* PCAP_TS */
+struct resource pcap_ts_resources[] = {
+ [0] = {
-+ .start = EZX_IRQ_ADCDONE2,
-+ .end = EZX_IRQ_ADCDONE2,
++ .start = EZX_IRQ_ADCDONE,
++ .end = EZX_IRQ_ADCDONE,
+ .flags = IORESOURCE_IRQ,
+ },
+ [1] = {
@@ -23,17 +23,15 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &a1200_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_a1200 = {
- .pixclock = 192308,
- .xres = 240,
-@@ -141,6 +162,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
new file mode 100644
index 0000000000..f6121c6e7f
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
+@@ -211,8 +211,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource a780_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(a780_emu_resources),
++ .resource = a780_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
++ &a780_emu_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
index b93b1b14e4..88f15041db 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:47.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:58:17.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
@@ -17,6 +17,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -214,8 +215,31 @@
- },
+@@ -311,10 +312,33 @@
+ .resource = pcap_ts_resources,
};
+static struct gpio_keys_button a780flip_buttons[] = {
@@ -37,6 +37,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+
+
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
&pcap_ts_device,
+ &a780flip_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
index 902889abe6..d7d114cfed 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:54:38.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:56:22.000000000 -0300
-@@ -16,18 +16,21 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
+@@ -16,6 +16,7 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,13 +10,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
- #include <asm/arch/pxafb.h>
+@@ -24,11 +25,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
#include <asm/arch/mmc.h>
+#include <asm/arch/kbd.h>
#include "generic.h"
- #include "ezx.h"
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -24,8 +24,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#ifdef CONFIG_EZX_PCAP
extern int ezx_pcap_mmcsd_power(int);
-@@ -141,6 +144,55 @@
- .pxafb_lcd_power = &ezx_lcd_power,
+@@ -235,6 +238,55 @@
+ .resource = a780_emu_resources,
};
+static unsigned char a780_keycode[] = {
@@ -78,9 +78,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+};
+
static struct platform_device *devices[] __initdata = {
- };
-
-@@ -159,6 +211,7 @@
+ &a780_pcap_device,
+ &a780_emu_device,
+@@ -255,6 +307,7 @@
set_pxa_fb_info(&a780_fb_info);
pxa_set_mci_info(&a780_mci_platform_data);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
index 5a9a9383f7..e8336d8855 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:33:45.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-08-31 23:59:27.000000000 -0300
@@ -104,6 +104,13 @@
These triggers allow kernel events to drive the LEDs and can
be configured via sysfs. If unsure, say Y.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:33:45.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Makefile 2007-08-31 23:59:27.000000000 -0300
@@ -16,6 +16,7 @@
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
@@ -36,7 +36,7 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-06-08 18:39:04.000000000 +0200
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-08-31 23:59:27.000000000 -0300
@@ -0,0 +1,122 @@
+/*
+ * EZX Platform LED Driver for the Motorola A780 GSM Phone
@@ -62,22 +62,22 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+{
+ if ( value > 31 ) value = 31;
+ printk( KERN_DEBUG "a780led_main_set: %d\n", value );
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3, value & 0x08);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4, value & 0x10);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL4, value & 0x10);
+}
+
+static void a780led_aux_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+ if ( value > 31 ) value = 31;
+ printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3, value & 0x08);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+}
+
+static struct led_classdev a780_main_led = {
@@ -162,18 +162,23 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:39:04.000000000 +0200
-@@ -236,10 +236,15 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:27.000000000 -0300
+@@ -333,12 +333,20 @@
},
};
+static struct platform_device a780led_device = {
+ .name = "a780-led",
+ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
+};
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
&pcap_ts_device,
&a780flip_device,
+ &a780led_device,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
index 4877bfffa5..1238c1cf71 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:44:14.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:47:01.000000000 -0300
-@@ -14,11 +14,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:54.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
+@@ -14,6 +14,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -11,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -21,12 +23,102 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -26,6 +29,95 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -113,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
static struct pxafb_mode_info mode_a780 = {
.pixclock = 150000,
.xres = 240,
-@@ -66,6 +158,7 @@
+@@ -137,6 +229,7 @@
PSLR = 0x05800f00;
set_pxa_fb_info(&a780_fb_info);
@@ -121,15 +122,3 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
/* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:47:13.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:11.000000000 -0300
-@@ -87,6 +87,7 @@
- config PXA_EZX_A780
- bool "Motorola A780 GSM Phone"
- select PXA27x
-+ select EZX_MCI_TF
-
- config PXA_EZX_E2
- bool "Motorola E2 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
new file mode 100644
index 0000000000..afb5d9c005
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 22:33:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:17.000000000 -0300
+@@ -20,6 +20,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -49,7 +50,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init a780_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set(PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data a780_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_TF,
++ .clk = 1,
++ .init = a780_pcap_init,
++};
++
++static struct resource a780_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a780_pcap_resources),
++ .resource = a780_pcap_resources,
++ .dev = {
++ .platform_data = &a780_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a780_pcap_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
index a4a476ac59..e7ca3c106a 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
@@ -1,9 +1,9 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:32:48.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:33:10.000000000 -0300
-@@ -121,6 +121,27 @@
- .exit = a780_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:06:53.000000000 -0300
+@@ -287,9 +287,34 @@
+ },
};
+/* PCAP_TS */
@@ -23,17 +23,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_a780 = {
- .pixclock = 150000,
- .xres = 240,
-@@ -194,6 +215,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
index 7436c40f5f..aa903feea7 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
@@ -1,74 +1,26 @@
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
---- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-05-08 15:19:26.000000000 -0300
-@@ -18,10 +18,13 @@
- #include <linux/leds.h>
- #include <asm/arch/ezx-pcap.h>
-
-+extern void ezx_pcap_vibrator_level(u_int32_t);
-+
- static void a780led_main_set(struct led_classdev *led_cdev, enum led_brightness value)
- {
- if ( value > 31 ) value = 31;
- printk( KERN_DEBUG "a780led_main_set: %d\n", value );
-+#warning FIXME: use read/write operations
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04);
-@@ -33,6 +36,7 @@
- {
- if ( value > 31 ) value = 31;
- printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
-+#warning FIXME: use read/write operations
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04);
-@@ -40,6 +44,43 @@
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+--- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-09-01 00:23:39.000000000 -0300
+@@ -40,6 +40,17 @@
+ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
}
+static void a780vibrator_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
-+ if ( value > 4 ) value = 4;
++ if (value > 4) value = 4;
+ printk( KERN_DEBUG "a780vibrator_set: %d\n", value );
-+
-+ switch(value)
-+ {
-+ case 0:
-+ /* turn off vibrator */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 0);
-+ break;
-+
-+ case 1:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 2:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 3:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL2);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 4:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ default:
-+ break;
-+ }
++ ezx_pcap_vibrator_level(value-1);
++ if (value == 0)
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 0);
++ else
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 1);
+}
+
static struct led_classdev a780_main_led = {
.name = "a780:main",
.default_trigger = "none",
-@@ -52,11 +93,18 @@
+@@ -52,11 +63,18 @@
.brightness_set = a780led_aux_set,
};
@@ -87,7 +39,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -64,6 +112,7 @@
+@@ -64,6 +82,7 @@
{
led_classdev_resume(&a780_main_led);
led_classdev_resume(&a780_aux_led);
@@ -95,7 +47,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
#endif
-@@ -77,8 +126,16 @@
+@@ -77,8 +96,16 @@
return ret;
ret = led_classdev_register(&pdev->dev, &a780_aux_led);
@@ -113,7 +65,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return ret;
}
-@@ -87,6 +144,7 @@
+@@ -87,6 +114,7 @@
{
led_classdev_unregister(&a780_main_led);
led_classdev_unregister(&a780_aux_led);
@@ -121,19 +73,18 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -111,6 +169,8 @@
+@@ -111,6 +139,7 @@
{
a780led_main_set( &a780_main_led, 0 );
a780led_aux_set( &a780_aux_led, 0 );
+ a780vibrator_set( &a780_vibrator, 0 );
-+
platform_driver_unregister(&a780led_driver);
}
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-09-01 00:15:08.000000000 -0300
@@ -105,11 +105,11 @@
be configured via sysfs. If unsure, say Y.
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
new file mode 100644
index 0000000000..feea138984
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:30:56.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:36:26.000000000 -0300
+@@ -153,7 +153,8 @@
+ static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
+ {
+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
+-
++ /* no dma if on loopback */
++ if (!prtd->params) return 0;
+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
+ DCSR(prtd->dma_ch) = 0;
+ DCMD(prtd->dma_ch) = 0;
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
index 1fc8283ca2..dd5b71a512 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-05-14 21:14:38.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-09-02 22:50:31.000000000 -0300
@@ -0,0 +1,671 @@
+/*
+ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
@@ -43,7 +43,7 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
+#include "pxa2xx-pcm.h"
+#include "pxa2xx-ssp.h"
+
-+#define PXA_SSP_DEBUG 1
++#define PXA_SSP_DEBUG 0
+
+/*
+ * The following should be defined in pxa-regs.h
@@ -677,7 +677,7 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h 2007-05-14 21:14:38.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h 2007-09-02 22:48:59.000000000 -0300
@@ -0,0 +1,42 @@
+/*
+ * linux/sound/arm/pxa2xx-ssp.h
@@ -723,8 +723,8 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h
+#endif
Index: linux-2.6.21/sound/soc/pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-05-14 21:16:22.000000000 -0300
-+++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-05-14 21:17:01.000000000 -0300
+--- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-09-02 22:48:51.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-09-02 22:50:18.000000000 -0300
@@ -20,6 +20,10 @@
config SND_PXA2XX_SOC_I2S
tristate
@@ -738,8 +738,8 @@ Index: linux-2.6.21/sound/soc/pxa/Kconfig
depends on SND_PXA2XX_SOC && PXA_SHARP_C7xx
Index: linux-2.6.21/sound/soc/pxa/Makefile
===================================================================
---- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-05-14 21:14:52.000000000 -0300
-+++ linux-2.6.21/sound/soc/pxa/Makefile 2007-05-14 21:16:10.000000000 -0300
+--- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-09-02 22:48:51.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Makefile 2007-09-02 22:50:18.000000000 -0300
@@ -2,10 +2,12 @@
snd-soc-pxa2xx-objs := pxa2xx-pcm.o
snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
deleted file mode 100755
index be512457d9..0000000000
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
+++ /dev/null
@@ -1,1092 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21.4
-# Wed Jun 13 17:29:50 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=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_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION="-ezxdev"
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# 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_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX 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_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-# CONFIG_MACH_TRIZEPS4 is not set
-CONFIG_PXA_EZX=y
-# CONFIG_PXA_EZX_E680 is not set
-# CONFIG_PXA_EZX_A780 is not set
-CONFIG_PXA_EZX_E2=y
-# CONFIG_PXA_EZX_A1200 is not set
-# CONFIG_PXA_EZX_E6 is not set
-# CONFIG_EZX_BP is not set
-CONFIG_EZX_PCAP=y
-# CONFIG_EZX_EMU is not set
-CONFIG_PXA27x=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# 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_DIAG is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-CONFIG_CONNECTOR=m
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNPACPI is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_NETLINK is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=y
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# PHY device support
-#
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=y
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# 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_KEYBOARD_PXA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=8
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=m
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_PXA2XX=m
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_EZX is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# 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
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB support
-#
-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
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_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
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-# CONFIG_USB_GTCO is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-
-#
-# 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_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD 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_PHIDGET 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
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS 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_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=y
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-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_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
-CONFIG_NFS_DIRECTIO=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-# CONFIG_CIFS_STATS2 is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-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
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch
new file mode 100644
index 0000000000..3645aef040
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:47:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:48:06.000000000 -0300
+@@ -214,8 +214,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource e680_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(e680_emu_resources),
++ .resource = e680_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
++ &e680_emu_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
index 2a2d9c7a72..ffd8bbb754 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:54:39.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:56:30.000000000 -0300
-@@ -15,18 +15,21 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:07:33.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:10:47.000000000 -0300
+@@ -15,6 +15,7 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,13 +10,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
- #include <asm/arch/pxafb.h>
+@@ -23,11 +24,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
#include <asm/arch/mmc.h>
+#include <asm/arch/kbd.h>
#include "generic.h"
- #include "ezx.h"
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -24,8 +24,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#ifdef CONFIG_EZX_PCAP
extern int ezx_pcap_mmcsd_power(int);
-@@ -144,6 +147,58 @@
- .pxafb_lcd_power = &ezx_lcd_power,
+@@ -238,6 +241,58 @@
+ .resource = e680_emu_resources,
};
+static unsigned char e680_keycode[] = {
@@ -81,9 +81,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
- };
-
-@@ -162,6 +217,7 @@
+ &e680_pcap_device,
+ &e680_emu_device,
+@@ -258,6 +313,7 @@
set_pxa_fb_info(&e680_fb_info);
pxa_set_mci_info(&e680_mci_platform_data);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
index 82dc93b611..72ba219a44 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:12.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-09-06 00:49:29.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-09-06 00:51:36.000000000 -0300
@@ -111,6 +111,13 @@
This option enables support for the LEDs on the
Motorola A780 GSM Phone.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:12.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-09-06 00:49:29.000000000 -0300
++++ linux-2.6.21/drivers/leds/Makefile 2007-09-06 00:49:30.000000000 -0300
@@ -17,6 +17,7 @@
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
@@ -36,8 +36,8 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-e680.c 2007-06-08 18:39:12.000000000 +0200
-@@ -0,0 +1,309 @@
++++ linux-2.6.21/drivers/leds/leds-e680.c 2007-09-06 00:51:22.000000000 -0300
+@@ -0,0 +1,235 @@
+/*
+ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone
+ *
@@ -73,147 +73,100 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+extern int ezx_pcap_read(u_int8_t, u_int32_t *);
+extern int ezx_pcap_write(u_int8_t, u_int32_t);
+
-+static enum led_brightness old_red;
-+static enum led_brightness old_green;
-+static enum led_brightness old_blue;
-+
+typedef struct {
-+ unsigned char ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 disactive*/
-+ unsigned char ind_GPIO_green; /*Indicator Green control GPIO 47: 0 active, 1 disactive*/
-+ unsigned char pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
-+ unsigned char pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
-+ unsigned char pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
-+ unsigned char pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
-+ unsigned char pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
-+ unsigned char pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
-+ unsigned char pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
++ u_int8_t ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 inactive */
++ u_int8_t ind_GPIO_green; /*Indicator Green control GPIO 47: 0 inactive, 1 active */
++ u_int8_t pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
++ u_int8_t pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
++ u_int8_t pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
++ u_int8_t pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
++ u_int8_t pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
++ u_int8_t pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
++// u_int8_t pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
+} PCAP2_LED_REGISTER_VALUE;
+
+const PCAP2_LED_REGISTER_VALUE led_register_value[]=
+{
-+ /* on/off pulsepower timing intensity */
-+ {0x1,0x1, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0}, /* OFF */
-+ {0x0,0x1, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* RED */
-+ {0x1,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* GREEN */
-+ {0x0,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* ORANGE = RED + GREEN */
-+ {0x1,0x1, 0x0,0x1, 0x0,0xc, 0x0,0x0,0x0}, /* BLUE */
-+ {0x0,0x1, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_RED = RED + BLUE */
-+ {0x1,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_GREEN = GREEN + BLUE */
-+ {0x0,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* WHITE = RED + GREEN + BLUE */
++ {0x1,0x0, 0x0,0x0, 0x0,0x0, 0x1,0x0}, /* 0 OFF */
++
++ {0x0,0x0, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 1 RED */
++ {0x1,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 2 GREEN */
++ {0x0,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 3 ORANGE */
++ {0x1,0x0, 0x0,0x1, 0x0,0xf, 0x0,0x0}, /* 4 BLUE */
++ {0x0,0x0, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 5 MAGENTA */
++ {0x1,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 6 CYAN */
++ {0x0,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 7 WHITE */
+};
+
-+static void e680led_led_set( enum led_brightness red, enum led_brightness green, enum led_brightness blue )
++static void e680led_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
-+ unsigned int tempValue = 0;
-+ unsigned int value = 0;
-+ unsigned int stateIndex = 0;
-+ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl, ledg_ctrl, ledr_i, ledg_i,skip;
-+
-+ printk( KERN_DEBUG "e680led_led_set: red=%d, green=%d, blue=%d", red, green, blue );
-+ stateIndex = ( ( blue << 2 ) | ( green << 1 ) | ( red ) ) & 0x7;
-+ printk( KERN_DEBUG "LED stateIndex is %d", stateIndex );
-+ gpio_red = led_register_value[stateIndex].ind_GPIO_red & 0x1;
-+ gpio_green = led_register_value[stateIndex].ind_GPIO_green & 0x1;
-+ ledr_en = led_register_value[stateIndex].pcap_LEDR_en & 0x1;
-+ ledg_en = led_register_value[stateIndex].pcap_LEDG_en & 0x1;
-+ ledr_ctrl = led_register_value[stateIndex].pcap_LEDR_CTRL & 0xf;
-+ ledg_ctrl = led_register_value[stateIndex].pcap_LEDG_CTRL & 0xf;
-+ ledr_i = led_register_value[stateIndex].pcap_LEDR_I & 0x3;
-+ ledg_i = led_register_value[stateIndex].pcap_LEDG_I & 0x3;
-+ skip = led_register_value[stateIndex].pcap_SKIP_on & 0x1;
-+
-+ /* disable LEDs */
-+ if( ezx_pcap_read(SSP_PCAP_ADJ_PERIPH_REGISTER,&tempValue) != SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_WARNING "LED PCAP Read Failed\n" );
-+ return;
++ unsigned int tempValue;
++ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl,
++ ledg_ctrl, ledr_i, ledg_i, skip, t, color;
++ unsigned char t_mask[2] = { 0xc, 0xc };
++
++ skip = 0;
++ if (value & 128) {
++ value &= (~128);
++ skip = 1;
+ }
-+ tempValue &= (~SSP_PCAP_LED_MASK);
-+ if( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) != SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_WARNING "LED PCAP Write Failed (Clear Data)\n" );
-+ return;
++
++ /* 7 colors - simple on */
++ if (value <= 7)
++ color = value;
++ /* 4 colors - 11 timed on */
++ else if (value <= 51) {
++ value -= 7;
++ color = ((value-1)%4)+1;
++ t = ((value-1)/4)+1;
++ t_mask[0] = t;
++ t_mask[1] = t;
++ }
++ /* 3 colors - 22 change color */
++ else if (value <= 84) {
++ value -= 51;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[1] = t;
++ }
++ else if (value <= 117) {
++ value -= 84;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[0] = t;
+ }
++ /* 3 colors - alternate with blue */
++ else if (value <= 120) {
++ color = value-113;
++ t_mask[0] = 0xa;
++ t_mask[1] = 0xb;
++ }
++ /* invalid value */
++ else
++ color = 1;
+
-+ /* configure GPIOs as output */
-+ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
-+ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
++ gpio_red = led_register_value[color].ind_GPIO_red;
++ gpio_green = led_register_value[color].ind_GPIO_green;
++ ledr_en = led_register_value[color].pcap_LEDR_en;
++ ledg_en = led_register_value[color].pcap_LEDG_en;
++ ledr_ctrl = led_register_value[color].pcap_LEDR_CTRL & t_mask[0];
++ ledg_ctrl = led_register_value[color].pcap_LEDG_CTRL & t_mask[1];
++ ledr_i = led_register_value[color].pcap_LEDR_I;
++ ledg_i = led_register_value[color].pcap_LEDG_I;
+
-+ //FIXME: Simplify this logic
-+ if ( (gpio_green && gpio_red) )
-+ {
-+ /*Disable Red & Green signal*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 1); /*IND_CNTL_R_BUL Low active*/
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 0); /*IND_CNTL_G_BUL High active*/
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
-+
-+ printk( KERN_DEBUG "LED GPIO Green & Red Disable\n");
-+ } else if ( gpio_green && !gpio_red )
-+ {
-+ /*Green Disable, Red Enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 0);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 0);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
-+
-+ printk( KERN_DEBUG "LED GPIO Green Disable, Red Enable\n");
-+ } else if (gpio_red && !gpio_green )
-+ {
-+ /*Red Disable, Green Enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 1);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 1);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
-+ printk( KERN_DEBUG "LED GPIO Red Disable, Green Enable");
-+ }else
-+ {
-+ /*Red & Green enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 0);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 1);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
-+ printk( KERN_DEBUG "LED GPIO Red & Green Enable\n");
-+ }
++ ezx_pcap_read(PCAP_REG_PERIPH,&tempValue);
+
-+ /* Write PCAP LED Peripheral Control Register*/
-+ value = ( ledr_en | (ledg_en <<1) | (ledr_ctrl <<2) | (ledg_ctrl <<6) |
-+ (ledr_i << 10) | (ledg_i <<12) | (skip <<14) ) & 0x7fff;
-+ tempValue |= (value <<SSP_PCAP_LED_SHIFT);
-+
-+ if ( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) == SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_DEBUG "LED PCAP Write Success (0x%x :0x%x)\n",tempValue,value);
-+ old_red = red;
-+ old_green = green;
-+ old_blue = blue;
-+ return;
-+ } else {
-+ printk( KERN_DEBUG "LED PCAP Write Failed (State Change)\n");
-+ return;
-+ }
-+}
++ tempValue &= (~SSP_PCAP_LED_MASK);
+
-+static void e680led_red_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_red_set: %d\n", value );
-+ e680led_led_set( 1 && value, old_green, old_blue );
-+}
++ pxa_gpio_set_value(IND_CNTL_R_BUL, gpio_red);
++ pxa_gpio_set_value(IND_CNTL_G_BUL, gpio_green);
+
-+static void e680led_green_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_green_set: %d\n", value );
-+ e680led_led_set( old_red, 1 && value, old_blue );
-+}
++ /* Write PCAP LED Peripheral Control Register*/
++ tempValue = ((ledr_en | (ledg_en << 1) | (ledr_ctrl << 2) |
++ (ledg_ctrl << 6) | (ledr_i << 10) | (ledg_i << 12) |
++ (skip << 14)) & 0x7fff) << SSP_PCAP_LED_SHIFT;
+
-+static void e680led_blue_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_blue_set: %d\n", value );
-+ e680led_led_set( old_red, old_green, 1 && value );
++ ezx_pcap_write(PCAP_REG_PERIPH,tempValue);
+}
+
+static void e680led_keypad_set(struct led_classdev *led_cdev, enum led_brightness value)
@@ -238,25 +191,13 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+#endif
+}
+
-+static struct led_classdev e680_red_led = {
-+ .name = "e680:red",
-+ .default_trigger = "none",
-+ .brightness_set = e680led_red_set,
-+};
-+
-+static struct led_classdev e680_green_led = {
-+ .name = "e680:green",
++static struct led_classdev e680_led = {
++ .name = "e680:led",
+ .default_trigger = "none",
-+ .brightness_set = e680led_green_set,
++ .brightness_set = e680led_set,
+};
+
-+static struct led_classdev e680_blue_led = {
-+ .name = "e680:blue",
-+ .default_trigger = "none",
-+ .brightness_set = e680led_blue_set,
-+};
-+
-+static struct led_classdev e680_keypad_led = {
++static struct led_classdev e680_keypad = {
+ .name = "e680:keypad",
+ .default_trigger = "none",
+ .brightness_set = e680led_keypad_set,
@@ -265,19 +206,15 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+#ifdef CONFIG_PM
+static int e680led_suspend(struct platform_device *dev, pm_message_t state)
+{
-+ led_classdev_suspend(&e680_red_led);
-+ led_classdev_suspend(&e680_green_led);
-+ led_classdev_suspend(&e680_blue_led);
-+ led_classdev_suspend(&e680_keypad_led);
++ led_classdev_suspend(&e680_led);
++ led_classdev_suspend(&e680_keypad);
+ return 0;
+}
+
+static int e680led_resume(struct platform_device *dev)
+{
-+ led_classdev_resume(&e680_red_led);
-+ led_classdev_resume(&e680_green_led);
-+ led_classdev_resume(&e680_blue_led);
-+ led_classdev_resume(&e680_keypad_led);
++ led_classdev_resume(&e680_led);
++ led_classdev_resume(&e680_keypad);
+ return 0;
+}
+#endif
@@ -286,35 +223,25 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+{
+ int ret;
+
-+ ret = led_classdev_register(&pdev->dev, &e680_red_led);
-+ if (ret < 0)
-+ return ret;
++ /* configure GPIOs as output */
++ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
++ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
+
-+ ret = led_classdev_register(&pdev->dev, &e680_green_led);
++ ret = led_classdev_register(&pdev->dev, &e680_led);
+ if (ret < 0)
-+ led_classdev_unregister(&e680_red_led);
-+
-+ ret = led_classdev_register(&pdev->dev, &e680_blue_led);
-+ if (ret < 0) {
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ }
++ return ret;
+
-+ ret = led_classdev_register(&pdev->dev, &e680_keypad_led);
++ ret = led_classdev_register(&pdev->dev, &e680_keypad);
+ if (ret < 0) {
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ led_classdev_unregister(&e680_blue_led);
++ led_classdev_unregister(&e680_led);
+ }
+ return ret;
+}
+
+static int e680led_remove(struct platform_device *pdev)
+{
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ led_classdev_unregister(&e680_blue_led);
-+ led_classdev_unregister(&e680_keypad_led);
++ led_classdev_unregister(&e680_led);
++ led_classdev_unregister(&e680_keypad);
+ return 0;
+}
+
@@ -337,7 +264,6 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+
+static void __exit e680led_exit(void)
+{
-+ e680led_led_set( 0, 0, 0 );
+ platform_driver_unregister(&e680led_driver);
+}
+
@@ -349,18 +275,23 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:39:12.000000000 +0200
-@@ -242,9 +242,15 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:23.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:30.000000000 -0300
+@@ -339,11 +339,20 @@
},
};
+static struct platform_device e680led_device = {
+ .name = "e680-led",
+ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
+};
+
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
&pcap_ts_device,
&e680locksw_device,
+ &e680led_device,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
index 36b52a916a..e669a51957 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:48.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:48:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:23.000000000 -0300
@@ -16,6 +16,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -220,8 +221,30 @@
- },
+@@ -317,10 +318,32 @@
+ .resource = pcap_ts_resources,
};
+static struct gpio_keys_button e680locksw_buttons[] = {
@@ -36,6 +36,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
&pcap_ts_device,
+ &e680locksw_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
index b5bb2931f1..7f0826163d 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:43:08.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:48:20.000000000 -0300
-@@ -13,11 +13,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:32:30.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:54:44.000000000 -0300
+@@ -13,6 +13,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -11,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -20,12 +22,106 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -25,6 +28,99 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -117,7 +118,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
static struct pxafb_mode_info mode_e680 = {
.pixclock = 150000,
.xres = 240,
-@@ -65,6 +161,7 @@
+@@ -136,6 +232,7 @@
PSLR = 0x05800f00;
set_pxa_fb_info(&e680_fb_info);
@@ -125,15 +126,3 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
/* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:55.000000000 -0300
-@@ -83,6 +83,7 @@
- config PXA_EZX_E680
- bool "Motorola E680 GSM Phone"
- select PXA27x
-+ select EZX_MCI_SD
-
- config PXA_EZX_A780
- bool "Motorola A780 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch
new file mode 100644
index 0000000000..12ce023749
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:41:38.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:44:56.000000000 -0300
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init e680_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set( PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data e680_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_SD,
++ .clk = 1,
++ .init = e680_pcap_init,
++};
++
++static struct resource e680_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(e680_pcap_resources),
++ .resource = e680_pcap_resources,
++ .dev = {
++ .platform_data = &e680_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &e680_pcap_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
index 52f9ce34b5..109623c68c 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
@@ -1,9 +1,9 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:32:49.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:33:26.000000000 -0300
-@@ -124,6 +124,27 @@
- .exit = e680_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:10:47.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:11:01.000000000 -0300
+@@ -293,9 +293,34 @@
+ },
};
+/* PCAP_TS */
@@ -23,17 +23,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_e680 = {
- .pixclock = 150000,
- .xres = 240,
-@@ -200,6 +221,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch
new file mode 100644
index 0000000000..1dda2e544c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch
@@ -0,0 +1,1302 @@
+Index: linux-2.6.21/sound/soc/codecs/pcap2.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/codecs/pcap2.c 2007-09-07 14:28:32.000000000 -0300
+@@ -0,0 +1,796 @@
++/*
++ * pcap2.c - PCAP2 ASIC Audio driver
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/delay.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/hardware.h>
++
++#include "pcap2.h"
++
++#define AUDIO_NAME "pcap2-codec"
++#define PCAP2_VERSION "0.1"
++
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++static struct snd_soc_device *pcap2_codec_socdev;
++
++/*
++ * Debug
++ */
++
++//#define PCAP2_DEBUG
++
++#ifdef PCAP2_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++#define dump_registers() pcap2_codec_read(NULL, 13); \
++ pcap2_codec_read(NULL, 12); \
++ pcap2_codec_read(NULL, 11); \
++ pcap2_codec_read(NULL, 26);
++
++
++
++
++/*
++ * ASoC limits register value to 16 bits and pcap uses 32 bit registers
++ * to work around this, we get 16 bits from low, mid or high positions.
++ * ASoC limits register number to 8 bits we use 0x1f for register
++ * number and 0xe0 for register offset. -WM
++ */
++static int pcap2_codec_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ unsigned int tmp;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++
++ if (reg & SL) {
++ tmp &= 0xffff0000;
++ tmp |= (value & 0xffff);
++ }
++ else if (reg & SM) {
++ tmp &= 0xff0000ff;
++ tmp |= ((value << 8) & 0x00ffff00);
++ }
++ else if (reg & SH) {
++ tmp &= 0xffff;
++ tmp |= ((value << 16) & 0xffff0000);
++ }
++ else
++ tmp = value;
++
++ dbg("codec_write reg=%x, rval=%08x, fval=%08x", reg, tmp, value);
++ ezx_pcap_write((reg & 0x1f), tmp);
++ return 0;
++
++}
++
++static unsigned int pcap2_codec_read(struct snd_soc_codec *codec, unsigned int reg)
++{
++ unsigned int tmp, ret;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++ ret = tmp;
++ if (reg & SL)
++ ret = (tmp & 0xffff);
++ else if (reg & SM)
++ ret = ((tmp >> 8) & 0xffff);
++ else if (reg & SH)
++ ret = ((tmp >> 16) & 0xffff);
++
++ dbg("codec_read reg=%x, rval=%08x, fval=%08x", reg, tmp, ret);
++ return(ret);
++
++}
++
++static const char *pcap2_output_select[] = {"2ch", "2->1ch", "2->1ch -3db", "2->1ch -6db"};
++
++static const struct soc_enum pcap2_enum[] = {
++SOC_ENUM_SINGLE((PCAP2_OUTPUT_AMP|SH), 3, 4, pcap2_output_select),
++};
++
++static const struct snd_kcontrol_new pcap2_input_mixer_controls[] = {
++SOC_DAPM_SINGLE("A3 Switch", (PCAP2_INPUT_AMP|SL), 6, 1, 0),
++SOC_DAPM_SINGLE("A5 Switch", (PCAP2_INPUT_AMP|SL), 8, 1, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("A1 Switch", (PCAP2_OUTPUT_AMP|SL), 0, 1, 0),
++SOC_DAPM_SINGLE("A2 Switch", (PCAP2_OUTPUT_AMP|SL), 1, 1, 0),
++SOC_DAPM_SINGLE("AR Switch", (PCAP2_OUTPUT_AMP|SL), 5, 1, 0),
++SOC_DAPM_SINGLE("AL Switch", (PCAP2_OUTPUT_AMP|SL), 6, 1, 0),
++};
++
++/* pcap2 codec non DAPM controls */
++static const struct snd_kcontrol_new pcap2_codec_snd_controls[] = {
++SOC_SINGLE("Output gain", (PCAP2_OUTPUT_AMP|SM), 5, 15, 0),
++SOC_SINGLE("Input gain", (PCAP2_INPUT_AMP|SL), 0, 31, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_codec_dm_mux_control[] = {
++ SOC_DAPM_ENUM("Output Mode", pcap2_enum[0]),
++};
++
++/* add non dapm controls */
++static int pcap2_codec_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(pcap2_codec_snd_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&pcap2_codec_snd_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* pcap2 codec DAPM controls */
++static const struct snd_soc_dapm_widget pcap2_codec_dapm_widgets[] = {
++ SND_SOC_DAPM_DAC("ST_DAC", "ST_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_DAC("CDC_DAC", "CDC_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_ADC("CDC_ADC", "CDC_DAC capture", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_PGA("PGA_ST", (PCAP2_OUTPUT_AMP|SL), 9, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_CDC", (PCAP2_OUTPUT_AMP|SL), 8, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_R", (PCAP2_OUTPUT_AMP|SL), 11, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_L", (PCAP2_OUTPUT_AMP|SL), 12, 0, NULL, 0),
++ SND_SOC_DAPM_MUX("Downmixer", SND_SOC_NOPM, 0, 0, pcap2_codec_dm_mux_control),
++ SND_SOC_DAPM_PGA("PGA_A1CTRL", (PCAP2_OUTPUT_AMP|SH), 1, 1, NULL, 0),
++ SND_SOC_DAPM_MIXER("Output Mixer", SND_SOC_NOPM, 0, 0, &pcap2_output_mixer_controls[0], ARRAY_SIZE(pcap2_output_mixer_controls)),
++ SND_SOC_DAPM_OUTPUT("A1"), /* Earpiece */
++ SND_SOC_DAPM_OUTPUT("A2"), /* LoudSpeaker */
++ SND_SOC_DAPM_OUTPUT("AR"), /* headset right */
++ SND_SOC_DAPM_OUTPUT("AL"), /* headset left */
++
++ SND_SOC_DAPM_MICBIAS("BIAS1", (PCAP2_INPUT_AMP|SL), 10, 0),
++ SND_SOC_DAPM_MICBIAS("BIAS2", (PCAP2_INPUT_AMP|SL), 11, 0),
++ SND_SOC_DAPM_MIXER("Input Mixer", SND_SOC_NOPM, 0, 0, &pcap2_input_mixer_controls[0], ARRAY_SIZE(pcap2_input_mixer_controls)),
++ SND_SOC_DAPM_INPUT("A3"), /* Headset Mic */
++ SND_SOC_DAPM_INPUT("A5"), /* Builtin Mic */
++};
++
++static const char *audio_map[][3] = {
++ { "A1", NULL, "Output Mixer" },
++ { "A2", NULL, "Output Mixer" },
++ { "AR", NULL, "Output Mixer" },
++ { "AL", NULL, "Output Mixer" },
++
++ { "Output Mixer", "A1 Switch", "PGA_A1CTRL" },
++ { "Output Mixer", "A2 Switch", "Downmixer" },
++ { "Output Mixer", "AR Switch", "PGA_R" },
++ { "Output Mixer", "AL Switch", "PGA_L" },
++
++ { "PGA_A1CTRL", NULL, "Downmixer" },
++
++ { "Downmixer", "2->1ch", "PGA_L" },
++ { "Downmixer", "2->1ch", "PGA_R" },
++ { "Downmixer", "2->1ch -3db", "PGA_L" },
++ { "Downmixer", "2->1ch -3db", "PGA_R" },
++ { "Downmixer", "2->1ch -6db", "PGA_L" },
++ { "Downmixer", "2->1ch -6db", "PGA_R" },
++ { "Downmixer", "2ch", "PGA_R" },
++
++ { "PGA_R", NULL, "PGA_ST" },
++ { "PGA_L", NULL, "PGA_ST" },
++ { "PGA_R", NULL, "PGA_CDC" },
++
++ { "PGA_ST", NULL, "ST_DAC" },
++ { "PGA_CDC", NULL, "CDC_DAC" },
++
++ /* input path */
++ { "BIAS1", NULL, "A3" },
++ { "BIAS2", NULL, "A5" },
++
++ { "Input Mixer", "A3 Switch", "BIAS1" },
++ { "Input Mixer", "A5 Switch", "BIAS2" },
++
++ { "PGA_R", NULL, "Input Mixer" },
++
++ { "PGA_CDC", NULL, "PGA_R" },
++ { "CDC_ADC", NULL, "PGA_CDC" },
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int pcap2_codec_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(pcap2_codec_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &pcap2_codec_dapm_widgets[i]);
++ }
++
++ /* set up audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0],
++ audio_map[i][1], audio_map[i][2]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static int pcap2_codec_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ unsigned int input = pcap2_codec_read(codec, PCAP2_INPUT_AMP);
++
++ input &= ~PCAP2_INPUT_AMP_LOWPWR;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0:
++ case SNDRV_CTL_POWER_D1:
++ case SNDRV_CTL_POWER_D2:
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ dbg("dapm: ON\n");
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ input |= PCAP2_INPUT_AMP_LOWPWR;
++ dbg("dapm: OFF\n");
++ break;
++ }
++ codec->dapm_state = event;
++ pcap2_codec_write(codec, PCAP2_INPUT_AMP, input);
++ return 0;
++}
++
++static int pcap2_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 11025:
++ tmp |= PCAP2_ST_DAC_RATE_11025;
++ break;
++ case 12000:
++ tmp |= PCAP2_ST_DAC_RATE_12000;
++ break;
++ case 16000:
++ tmp |= PCAP2_ST_DAC_RATE_16000;
++ break;
++ case 22050:
++ tmp |= PCAP2_ST_DAC_RATE_22050;
++ break;
++ case 24000:
++ tmp |= PCAP2_ST_DAC_RATE_24000;
++ break;
++ case 32000:
++ tmp |= PCAP2_ST_DAC_RATE_32000;
++ break;
++ case 44100:
++ tmp |= PCAP2_ST_DAC_RATE_44100;
++ break;
++ case 48000:
++ tmp |= PCAP2_ST_DAC_RATE_48000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_ST_DAC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 16000:
++ tmp |= PCAP2_CODEC_RATE_16000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_CODEC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++
++ return 0;
++}
++
++static int pcap2_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ struct snd_soc_dapm_widget *w;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp &= ~(PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++ if ((!strcmp(w->name, "CDC_DAC") || !strcmp(w->name, "CDC_ADC")) && w->connected)
++ goto in_use;
++ }
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp &= ~(PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++in_use:
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int pcap2_set_dai_sysclk(struct snd_soc_codec_dai *codec_dai,
++ int clk_id, unsigned int freq, int dir)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++
++ unsigned int tmp;
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_ST_DAC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_ST_DAC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_ST_DAC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_ST_DAC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_ST_DAC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_ST_DAC_CLK_26M;
++ break;
++/* case EXT_MCLK:
++ tmp |= PCAP2_ST_DAC_CLK_MCLK;
++ break;
++ case FSYNC:
++ tmp |= PCAP2_ST_DAC_CLK_FSYNC;
++ break;
++ case BITCLK:
++ tmp |= PCAP2_ST_DAC_CLK_BITCLK;
++ break;
++*/ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_CODEC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_CODEC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_CODEC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_CODEC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_CODEC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_CODEC_CLK_26M;
++ break;
++ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
++ unsigned int fmt)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp = 0;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ /* disable CODEC */
++ pcap2_codec_write(codec, PCAP2_CODEC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x1;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ tmp |= 0x4000;
++ break;
++/* case SND_SOC_NET:
++ tmp |= 0x2000;
++ break;
++*/ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x60000;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x40000;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x20000;
++ break;
++ }
++ /* set dai to AP */
++ tmp |= 0x1000;
++
++ /* set BCLK */
++ tmp |= 0x18000;
++
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++
++ /* disable ST_DAC */
++ pcap2_codec_write(codec, PCAP2_ST_DAC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x2;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x600;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x400;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x200;
++ break;
++ }
++ if (codec_dai->id == PCAP2_MONO_DAI)
++ /* set dai to AP */
++ tmp |= 0x8000;
++
++ tmp |= 0x5; /* IHF / OHF */
++
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_prepare(struct snd_pcm_substream *substream)
++{
++
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++ /* FIXME enable clock only if codec is master */
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 1);
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp |= (PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 1);
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp |= (PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ snd_soc_dapm_sync_endpoints(codec);
++ mdelay(1);
++#ifdef PCAP2_DEBUG
++ dump_registers();
++#endif
++ return 0;
++}
++
++/*
++ * Define codec DAI.
++ */
++struct snd_soc_codec_dai pcap2_dai[] = {
++{
++ .name = "PCAP2 MONO",
++ .id = 0,
++ .playback = {
++ .stream_name = "CDC_DAC playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .stream_name = "CDC_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 STEREO",
++ .id = 1,
++ .playback = {
++ .stream_name = "ST_DAC playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = { /* FIXME: PCAP support this?? */
++ .stream_name = "ST_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 BP",
++ .id = 2,
++ .playback = {
++ .stream_name = "BP playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++};
++EXPORT_SYMBOL_GPL(pcap2_dai);
++
++static int pcap2_codec_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_suspend");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int pcap2_codec_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_resume");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ pcap2_codec_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the PCAP2 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int pcap2_codec_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ dbg("pcap2_codec_init");
++ codec->name = "PCAP2 Audio";
++ codec->owner = THIS_MODULE;
++ codec->read = pcap2_codec_read;
++ codec->write = pcap2_codec_write;
++ codec->dapm_event = pcap2_codec_dapm_event;
++ codec->dai = pcap2_dai;
++ codec->num_dai = ARRAY_SIZE(pcap2_dai);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ return ret;
++ }
++ /* power on device */
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ /* set the update bits */
++
++ pcap2_codec_add_controls(codec);
++ pcap2_codec_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static int pcap2_codec_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct pcap2_codec_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++ info("PCAP2 Audio Codec %s", PCAP2_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ pcap2_codec_socdev = socdev;
++
++ ret = pcap2_codec_init(socdev);
++ return ret;
++}
++
++/* power down chip and remove */
++static int pcap2_codec_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ if (codec->control_data)
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++
++ kfree(codec);
++
++ return 0;
++}
++
++/* codec device ops */
++struct snd_soc_codec_device soc_codec_dev_pcap2 = {
++ .probe = pcap2_codec_probe,
++ .remove = pcap2_codec_remove,
++ .suspend = pcap2_codec_suspend,
++ .resume = pcap2_codec_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_pcap2);
++
++MODULE_DESCRIPTION("ASoC PCAP2 codec");
++MODULE_AUTHOR("Daniel Ribeiro");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/sound/soc/codecs/pcap2.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/codecs/pcap2.h 2007-09-07 12:13:49.000000000 -0300
+@@ -0,0 +1,81 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#ifndef _PCAP2_H
++#define _PCAP2_H
++
++/* 16 bit reads/writes on pcap registers (ugly workaround) */
++#define SL (1 << 5) /* lower 16 bits */
++#define SM (1 << 6) /* mid 16 bits */
++#define SH (1 << 7) /* higher 16 bits */
++
++/* PCAP2 register space */
++#define PCAP2_CODEC 0x0b
++#define PCAP2_OUTPUT_AMP 0x0c
++#define PCAP2_ST_DAC 0x0d
++#define PCAP2_INPUT_AMP 0x1a
++
++#define PCAP2_MONO_DAI 0
++#define PCAP2_STEREO_DAI 1
++#define PCAP2_BP_DAI 2
++
++#define PCAP2_CLK_BP 0
++#define PCAP2_CLK_AP 1
++
++#define PCAP2_CODEC_EN 0x2000
++#define PCAP2_CODEC_CLK_EN 0x1000
++#define PCAP2_CODEC_RESET_DF 0x800
++#define PCAP2_CODEC_RATE_MASK 0x4000
++#define PCAP2_CODEC_RATE_8000 0x0
++#define PCAP2_CODEC_RATE_16000 0x4000
++#define PCAP2_CODEC_CLKSEL_MASK 0x10000
++#define PCAP2_CODEC_CLKSEL_AP 0x10000
++#define PCAP2_CODEC_CLKSEL_BP 0x0
++#define PCAP2_CODEC_CLK_MASK 0x1c0
++#define PCAP2_CODEC_CLK_13M 0x0
++#define PCAP2_CODEC_CLK_15M36 0x40
++#define PCAP2_CODEC_CLK_16M8 0x80
++#define PCAP2_CODEC_CLK_19M44 0xc0
++#define PCAP2_CODEC_CLK_26M 0x100
++
++#define PCAP2_ST_DAC_EN 0x80
++#define PCAP2_ST_DAC_CLK_EN 0x20
++#define PCAP2_ST_DAC_RESET_DF 0x40
++#define PCAP2_ST_DAC_RATE_MASK 0xf00
++#define PCAP2_ST_DAC_RATE_8000 0x0
++#define PCAP2_ST_DAC_RATE_11025 0x100
++#define PCAP2_ST_DAC_RATE_12000 0x200
++#define PCAP2_ST_DAC_RATE_16000 0x300
++#define PCAP2_ST_DAC_RATE_22050 0x400
++#define PCAP2_ST_DAC_RATE_24000 0x500
++#define PCAP2_ST_DAC_RATE_32000 0x600
++#define PCAP2_ST_DAC_RATE_44100 0x700
++#define PCAP2_ST_DAC_RATE_48000 0x800
++#define PCAP2_ST_DAC_CLKSEL_MASK 0x80000
++#define PCAP2_ST_DAC_CLKSEL_AP 0x80000
++#define PCAP2_ST_DAC_CLKSEL_BP 0x0
++#define PCAP2_ST_DAC_CLK_MASK 0x1c
++#define PCAP2_ST_DAC_CLK_13M 0x0
++#define PCAP2_ST_DAC_CLK_15M36 0x4
++#define PCAP2_ST_DAC_CLK_16M8 0x8
++#define PCAP2_ST_DAC_CLK_19M44 0xc
++#define PCAP2_ST_DAC_CLK_26M 0x10
++#define PCAP2_ST_DAC_CLK_MCLK 0x14
++#define PCAP2_ST_DAC_CLK_FSYNC 0x18
++#define PCAP2_ST_DAC_CLK_BITCLK 0x1c
++
++#define PCAP2_INPUT_AMP_LOWPWR 0x80000
++#define PCAP2_INPUT_AMP_V2EN2 0x200000
++
++#define PCAP2_OUTPUT_AMP_PGAR_EN 0x800
++#define PCAP2_OUTPUT_AMP_PGAL_EN 0x1000
++#define PCAP2_OUTPUT_AMP_CDC_SW 0x100
++#define PCAP2_OUTPUT_AMP_ST_DAC_SW 0x200
++
++extern struct snd_soc_codec_dai pcap2_dai[];
++extern struct snd_soc_codec_device soc_codec_dev_pcap2;
++
++#endif
+Index: linux-2.6.21/sound/soc/pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-09-07 12:13:49.000000000 -0300
+@@ -60,4 +60,13 @@
+ Say Y if you want to add support for SoC audio on Sharp
+ Zaurus SL-C6000x models (Tosa).
+
++config SND_PXA2XX_SOC_EZX
++ tristate "SoC Audio support for EZX"
++ depends on SND_PXA2XX_SOC && PXA_EZX
++ select SND_PXA2XX_SOC_SSP
++ select SND_SOC_PCAP2
++ help
++ Say Y if you want to add support for SoC audio on
++ Motorola EZX Phones (a780/e680).
++
+ endmenu
+Index: linux-2.6.21/sound/soc/pxa/ezx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/pxa/ezx.c 2007-09-07 13:12:24.000000000 -0300
+@@ -0,0 +1,349 @@
++/*
++ * ezx.c - Machine specific code for EZX phones
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++
++#include <asm/arch/ezx-pcap.h>
++
++#include "../codecs/pcap2.h"
++#include "pxa2xx-pcm.h"
++#include "pxa2xx-ssp.h"
++
++#define GPIO_HW_ATTENUATE_A780 96
++
++static struct snd_soc_codec *control_codec;
++
++static void ezx_ext_control(struct snd_soc_codec *codec)
++{
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_A1)))
++ snd_soc_dapm_set_endpoint(codec, "Headset", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "Headset", 0);
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_MB2)))
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 0);
++
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static irqreturn_t jack_irq(int irq, void *data)
++{
++ ezx_ext_control(control_codec);
++ return IRQ_HANDLED;
++}
++
++
++/*
++ * Alsa operations
++ * Only implement the required operations for your platform.
++ * These operations are specific to the machine only.
++ */
++
++ /*
++ * Called by ALSA when a PCM substream is opened, private data can be allocated.
++ */
++static int ezx_machine_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ ezx_ext_control(codec);
++ return 0;
++}
++
++/*
++ * Called by ALSA when the hardware params are set by application. This
++ * function can also be called multiple times and can allocate buffers
++ * (using snd_pcm_lib_* ). It's non-atomic.
++ */
++static int ezx_machine_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret;
++
++ /* set codec DAI configuration */
++ if (codec_dai->id == PCAP2_STEREO_DAI)
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM);
++ else
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* Turn on clock output on CLK_PIO */
++ OSCC |= 0x8;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_AP,
++ 13000000, SND_SOC_CLOCK_IN);
++ if(ret < 0)
++ return ret;
++
++ /* set cpu DAI configuration */
++ ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_tristate(cpu_dai, 0);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai,PXA2XX_SSP_CLK_EXT,
++ 0, SND_SOC_CLOCK_IN);
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++/*
++ * Free's resources allocated by hw_params, can be called multiple times
++ */
++static int ezx_machine_hw_free(struct snd_pcm_substream *substream)
++{
++ OSCC &= ~0x8; /* turn off clock output on CLK_PIO */
++
++ return 0;
++}
++
++static int ezx_machine_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* override pxa2xx-ssp sample size for stereo/network mode */
++ SSCR0_P(cpu_dai->id+1) &= ~(SSCR0_DSS | SSCR0_EDSS);
++ SSCR0_P(cpu_dai->id+1) |= (SSCR0_EDSS | SSCR0_DataSize(16));
++ }
++ return 0;
++}
++
++/* machine Alsa PCM operations */
++static struct snd_soc_ops ezx_ops = {
++ .startup = ezx_machine_startup,
++ .prepare = ezx_machine_prepare,
++ .hw_free = ezx_machine_hw_free,
++ .hw_params = ezx_machine_hw_params,
++};
++
++static int bp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++// struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret = 0;
++ /* set codec DAI configuration */
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_BP,
++ 13000000, SND_SOC_CLOCK_IN);
++
++ return ret;
++}
++
++
++
++/* machine dapm widgets */
++static const struct snd_soc_dapm_widget ezx_dapm_widgets[] = {
++ SND_SOC_DAPM_HP("Headset", NULL),
++ SND_SOC_DAPM_SPK("Earpiece", NULL),
++ SND_SOC_DAPM_SPK("Loudspeaker", NULL),
++ SND_SOC_DAPM_MIC("Built-in Mic", NULL),
++ SND_SOC_DAPM_MIC("External Mic", NULL),
++};
++
++/* machine audio map (connections to the codec pins) */
++static const char *audio_map[][3] = {
++ { "Headset", NULL, "AR" },
++ { "Headset", NULL, "AL" },
++ { "Earpiece", NULL, "A1" },
++ { "Loudspeaker", NULL, "A2" },
++
++ { "Built-in Mic", NULL, "A5" },
++ { "External Mic", NULL, "A3" },
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Initialise the machine audio subsystem.
++ */
++static int ezx_machine_init(struct snd_soc_codec *codec)
++{
++ int i;
++ /* mark unused codec pins as NC */
++// snd_soc_dapm_set_endpoint(codec, "FIXME", 0);
++ control_codec = codec;
++
++ /* Add ezx specific controls */
++// for (i = 0; i < ARRAY_SIZE(ezx_controls); i++) {
++// if ((err = snd_ctl_add(codec->card, snd_soc_cnew(&ezx_controls[i], codec, NULL))) < 0)
++// return err;
++// }
++
++ /* Add ezx specific widgets */
++ for(i = 0; i < ARRAY_SIZE(ezx_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &ezx_dapm_widgets[i]);
++ }
++ /* Set up ezx specific audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
++ }
++
++ /* synchronise subsystem */
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_cpu_dai bp_dai =
++{
++ .name = "Baseband",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++// .startup = bp_startup,
++// .shutdown = bp_shutdown,
++ .hw_params = bp_hw_params,
++// .hw_free = bp_hw_free,
++ },
++};
++
++/* template digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link ezx_dai[] = {
++{
++ .name = "PCAP2 STEREO",
++ .stream_name = "stereo playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_STEREO_DAI],
++ .init = ezx_machine_init,
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 MONO",
++ .stream_name = "mono playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_MONO_DAI],
++// .init = ezx_machine_init, /* the stereo call already registered our controls */
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 BP",
++ .stream_name = "BP Audio",
++ .cpu_dai = &bp_dai,
++ .codec_dai = &pcap2_dai[PCAP2_BP_DAI],
++},
++};
++
++/* template audio machine driver */
++static struct snd_soc_machine snd_soc_machine_ezx = {
++ .name = "Motorola EZX",
++// .probe
++// .remove
++// .suspend_pre
++// .resume_post
++ .dai_link = ezx_dai,
++ .num_links = ARRAY_SIZE(ezx_dai),
++};
++
++/* template audio subsystem */
++static struct snd_soc_device ezx_snd_devdata = {
++ .machine = &snd_soc_machine_ezx,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_pcap2,
++};
++
++static struct platform_device *ezx_snd_device;
++
++static int __init ezx_init(void)
++{
++ int ret;
++ ezx_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!ezx_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(ezx_snd_device, &ezx_snd_devdata);
++ ezx_snd_devdata.dev = &ezx_snd_device->dev;
++ ret = platform_device_add(ezx_snd_device);
++
++ if (ret)
++ platform_device_put(ezx_snd_device);
++ /* configure gpio for ssp3 */
++ pxa_gpio_mode(GPIO83_SFRM3_MD); /* SFRM */
++ pxa_gpio_mode(GPIO81_STXD3_MD); /* TXD */
++ pxa_gpio_mode(GPIO52_SCLK3_MD); /* SCLK */
++ pxa_gpio_mode(GPIO89_SRXD3_MD); /* RXD */
++
++ /* configure gpio for ssp2 */
++ pxa_gpio_mode(37 | GPIO_IN); /* SFRM */
++ pxa_gpio_mode(38 | GPIO_IN); /* TXD */
++ pxa_gpio_mode(22 | GPIO_IN); /* SCLK */
++ pxa_gpio_mode(88 | GPIO_IN); /* RXD */
++
++ pxa_gpio_mode(GPIO_HW_ATTENUATE_A780 | GPIO_OUT);
++ pxa_gpio_set_value(GPIO_HW_ATTENUATE_A780, 1);
++
++ /* request jack irq */
++ request_irq(EZX_IRQ_HEADJACK, &jack_irq, SA_INTERRUPT, "headphone jack", NULL);
++ request_irq(EZX_IRQ_MIC, &jack_irq, SA_INTERRUPT, "mic jack", NULL);
++
++ return ret;
++}
++
++static void __exit ezx_exit(void)
++{
++ free_irq(EZX_IRQ_HEADJACK, NULL);
++ free_irq(EZX_IRQ_MIC, NULL);
++ platform_device_unregister(ezx_snd_device);
++}
++
++module_init(ezx_init);
++module_exit(ezx_exit);
++
+Index: linux-2.6.21/sound/soc/codecs/Makefile
+===================================================================
+--- linux-2.6.21.orig/sound/soc/codecs/Makefile 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/codecs/Makefile 2007-09-07 12:13:49.000000000 -0300
+@@ -2,8 +2,10 @@
+ snd-soc-wm8731-objs := wm8731.o
+ snd-soc-wm8750-objs := wm8750.o
+ snd-soc-wm9712-objs := wm9712.o
++snd-soc-pcap2-objs := pcap2.o
+
+ obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
+ obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
+ obj-$(CONFIG_SND_SOC_WM8750) += snd-soc-wm8750.o
+ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
++obj-$(CONFIG_SND_SOC_PCAP2) += snd-soc-pcap2.o
+Index: linux-2.6.21/sound/soc/codecs/Kconfig
+===================================================================
+--- linux-2.6.21.orig/sound/soc/codecs/Kconfig 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/codecs/Kconfig 2007-09-07 12:13:49.000000000 -0300
+@@ -13,3 +13,7 @@
+ config SND_SOC_WM9712
+ tristate
+ depends on SND_SOC
++
++config SND_SOC_PCAP2
++ tristate
++ depends on SND_SOC && EZX_PCAP
+Index: linux-2.6.21/sound/soc/pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Makefile 2007-09-07 12:13:49.000000000 -0300
+@@ -14,9 +14,10 @@
+ snd-soc-poodle-objs := poodle.o
+ snd-soc-tosa-objs := tosa.o
+ snd-soc-spitz-objs := spitz.o
++snd-soc-ezx-objs := ezx.o
+
+ obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o
+-
++obj-$(CONFIG_SND_PXA2XX_SOC_EZX) += snd-soc-ezx.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
index 7054ef549b..c0284e3a1f 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/video/backlight/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-06-02 20:03:06.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-06-02 20:26:49.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-08-01 19:38:48.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-08-01 20:00:56.000000000 -0300
@@ -63,3 +63,12 @@
help
If you have a Frontpath ProGear say Y to enable the
@@ -22,8 +22,8 @@ Index: linux-2.6.21/drivers/video/backlight/Kconfig
+
Index: linux-2.6.21/drivers/video/backlight/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-06-02 20:03:06.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Makefile 2007-06-02 20:26:49.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-08-01 19:38:48.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Makefile 2007-08-01 20:00:56.000000000 -0300
@@ -6,3 +6,4 @@
obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
@@ -32,7 +32,7 @@ Index: linux-2.6.21/drivers/video/backlight/Makefile
Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-06-02 20:26:49.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-08-01 20:00:56.000000000 -0300
@@ -0,0 +1,142 @@
+/*
+ * Backlight Driver for Motorola A780 and E680(i) GSM Phones.
@@ -178,9 +178,9 @@ Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:19:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:26:49.000000000 -0300
-@@ -67,6 +67,12 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-08-01 19:39:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-08-01 20:00:56.000000000 -0300
+@@ -65,6 +65,12 @@
#endif
EXPORT_SYMBOL(ezx_backlight_power);
@@ -190,13 +190,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+ .id = -1,
+};
+
- /* SSP */
- struct platform_device ezxssp_device = {
- .name = "ezx-ssp",
-@@ -179,6 +185,7 @@
+ /* OHCI Controller */
+ static int ezx_ohci_init(struct device *dev)
+ {
+@@ -121,6 +127,7 @@
+
+ static struct platform_device *devices[] __initdata = {
&ezxbp_device,
- &ezxpcap_device,
- &ezxemu_device,
+ &ezxbacklight_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
index a0b3b61b12..8e8abcb738 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:03:12.000000000 -0300
-@@ -100,9 +100,41 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-08-16 15:52:21.000000000 -0300
+@@ -86,8 +86,40 @@
.init = ezx_ohci_init,
};
@@ -39,15 +39,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
+ &ezxbp_device,
};
static int __init ezx_init(void)
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:03:11.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-08-16 15:52:20.000000000 -0300
@@ -102,6 +102,9 @@
endchoice
@@ -61,8 +60,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-06-02 18:26:22.000000000 -0300
-@@ -0,0 +1,249 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-08-16 15:52:43.000000000 -0300
+@@ -0,0 +1,262 @@
+/*
+ * BP handshake code for Motorola EZX phones
+ *
@@ -110,7 +109,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+{
+ if (pxa_gpio_get_value(GPIO_BB_WDI2) == 0) {
+ DEBUGP("BP request poweroff!\n");
-+// pm_power_off();
++ /*
++ * It is correct to power off here, the following line is
++ * commented out because e680 lowers WDI2 when BP is in
++ * flash mode, otherwise WDI2 is used to detect low
++ * battery. You can safely uncomment this line if you are
++ * using this kernel with BP in normal mode.
++ */
++#ifndef CONFIG_PXA_EZX_E680
++ pm_power_off();
++#endif
+ }
+}
+
@@ -186,6 +194,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+ if (!bp_handshake_passed()) {
+ handshake();
+ if (bp_handshake_passed()) {
++ /* FIXME: (test) try to not disable irq_wdi2 and drain battery */
+ disable_irq(bp->irq_wdi2);
+
+ /* set bp_rdy handle for usb ipc */
@@ -202,7 +211,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+static irqreturn_t bp_wdi2_handler(int irq, void *dev_id)
+{
+ DEBUGP("BP request poweroff!\n");
-+// pm_power_off();
++ /* same case as check_power_off() */
++#ifndef CONFIG_PXA_EZX_E680
++ pm_power_off();
++#endif
+ return IRQ_HANDLED;
+}
+
@@ -314,8 +326,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:03:11.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-08-16 15:52:20.000000000 -0300
@@ -24,6 +24,7 @@
obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
index c0e9435723..653e814fb4 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:50.000000000 -0300
@@ -53,3 +53,6 @@
str r1, [r0, #0x18]
#endif
@@ -11,8 +11,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+#endif
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-28 20:54:54.000000000 -0300
@@ -37,6 +37,10 @@
bool "Keith und Koep Trizeps4 DIMM-Module"
select PXA27x
@@ -68,13 +68,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-28 20:54:54.000000000 -0300
@@ -18,6 +18,12 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
obj-$(CONFIG_MACH_TOSA) += tosa.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_ssp.o
++obj-$(CONFIG_PXA_EZX) += ezx.o
+obj-$(CONFIG_PXA_EZX_A780) += ezx-a780.o
+obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
+obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
@@ -86,8 +86,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,135 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-28 20:54:54.000000000 -0300
+@@ -0,0 +1,118 @@
+/*
+ * ezx.c - Common code for EZX platform.
+ *
@@ -108,11 +108,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+#include <asm/arch/pxafb.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/ohci.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
-+
-+extern int ezx_ssp_set_machinfo(struct ezxssp_machinfo *);
+
+/* EZX PXA Framebuffer */
+void ezx_lcd_power(int on, struct fb_var_screeninfo *var)
@@ -156,18 +154,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+#endif
+EXPORT_SYMBOL(ezx_backlight_power);
+
-+/* SSP */
-+struct platform_device ezxssp_device = {
-+ .name = "ezx-ssp",
-+ .id = -1,
-+};
-+
-+struct ezxssp_machinfo ezx_ssp_machinfo = {
-+ .port = 1,
-+ .cs_pcap = GPIO_SPI_CE,
-+ .clk_pcap = 1,
-+};
-+
+/* OHCI Controller */
+static int ezx_ohci_init(struct device *dev)
+{
@@ -192,15 +178,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
+
+static struct platform_device *devices[] __initdata = {
-+ &ezxssp_device,
+};
+
+static int __init ezx_init(void)
+{
+ CKEN = CKEN9_OSTIMER | CKEN22_MEMC;
+
-+ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
-+
+ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
+ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
+ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
@@ -226,7 +209,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-28 16:51:50.000000000 -0300
@@ -0,0 +1,225 @@
+/*
+ * linux/include/asm-arm/arch-pxa/ezx.h
@@ -455,8 +438,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+
Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 18:18:49.000000000 -0300
@@ -849,6 +849,8 @@
#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
#define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
@@ -572,8 +555,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
#define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
Index: linux-2.6.21/arch/arm/boot/compressed/head.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-28 16:51:50.000000000 -0300
@@ -117,6 +117,9 @@
mov r0, r0
.endr
@@ -586,8 +569,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head.S
.word start @ absolute load/run zImage address
Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:50.000000000 -0300
@@ -14,14 +14,14 @@
#define STUART ((volatile unsigned long *)0x40700000)
#define HWUART ((volatile unsigned long *)0x41600000)
@@ -606,155 +589,10 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
}
/*
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,126 @@
-+/*
-+ * SSP control code for Motorola EZX phones
-+ *
-+ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include "ezx.h"
-+
-+static DEFINE_SPINLOCK(ezx_ssp_lock);
-+static struct ssp_dev ezx_ssp_dev;
-+static struct ssp_state ezx_ssp_state;
-+static struct ezxssp_machinfo *ssp_machinfo;
-+
-+/* PCAP */
-+unsigned long ezx_ssp_pcap_putget(ulong data)
-+{
-+ unsigned long flag;
-+ u32 ret = 0;
-+
-+ spin_lock_irqsave(&ezx_ssp_lock, flag);
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPCR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+
-+ ssp_write_word(&ezx_ssp_dev,data);
-+ ssp_read_word(&ezx_ssp_dev, &ret);
-+
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(ezx_ssp_pcap_putget);
-+
-+void __init ezx_ssp_set_machinfo(struct ezxssp_machinfo *machinfo)
-+{
-+ ssp_machinfo = machinfo;
-+}
-+
-+static int __init ezx_ssp_probe(struct platform_device *dev)
-+{
-+ int ret;
-+ /* PCAP init */
-+ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
-+ pxa_gpio_mode(GPIO24_SFRM_MD);
-+ pxa_gpio_mode(GPIO25_STXD_MD);
-+ pxa_gpio_mode(GPIO26_SRXD_MD);
-+
-+ /* Chip Select - Disable All */
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ pxa_gpio_mode(ssp_machinfo->cs_pcap | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+ ret = ssp_init(&ezx_ssp_dev, ssp_machinfo->port, 0);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register SSP handler!\n");
-+ else {
-+ ssp_disable(&ezx_ssp_dev);
-+ ssp_config(&ezx_ssp_dev,
-+ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
-+ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
-+ 0, SSCR0_SerClkDiv(ssp_machinfo->clk_pcap));
-+ ssp_enable(&ezx_ssp_dev);
-+ }
-+
-+ return ret;
-+}
-+
-+static int ezx_ssp_remove(struct platform_device *dev)
-+{
-+ ssp_exit(&ezx_ssp_dev);
-+ return 0;
-+}
-+
-+static int ezx_ssp_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ ssp_flush(&ezx_ssp_dev);
-+ ssp_save_state(&ezx_ssp_dev,&ezx_ssp_state);
-+
-+ return 0;
-+}
-+
-+static int ezx_ssp_resume(struct platform_device *dev)
-+{
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
-+ ssp_enable(&ezx_ssp_dev);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ezxssp_driver = {
-+ .probe = ezx_ssp_probe,
-+ .remove = ezx_ssp_remove,
-+ .suspend = ezx_ssp_suspend,
-+ .resume = ezx_ssp_resume,
-+ .driver = {
-+ .name = "ezx-ssp",
-+ },
-+};
-+
-+int __init ezx_ssp_init(void)
-+{
-+ return platform_driver_register(&ezxssp_driver);
-+}
-+
-+arch_initcall(ezx_ssp_init);
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,9 @@
-+#include <asm/arch/ezx.h>
-+
-+/* SSP */
-+struct ezxssp_machinfo {
-+ int port;
-+ int cs_pcap;
-+ int clk_pcap;
-+};
-+
Index: linux-2.6.21/arch/arm/mm/init.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mm/init.c 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-06-28 16:51:50.000000000 -0300
@@ -241,6 +241,10 @@
*/
reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
@@ -769,7 +607,7 @@ Index: linux-2.6.21/arch/arm/mm/init.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 20:53:01.000000000 -0300
@@ -0,0 +1,88 @@
+/*
+ * ezx-a780.c - Code specific to A780 GSM Phone.
@@ -792,9 +630,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -862,7 +700,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-28 20:54:24.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e2.c - Code specific to E2 GSM Phone.
@@ -884,9 +722,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -937,7 +775,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-28 20:53:29.000000000 -0300
@@ -0,0 +1,87 @@
+/*
+ * ezx-e680.c - Code specific to E680 GSM Phone.
@@ -959,9 +797,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -1029,7 +867,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 20:53:48.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-a1200.c - Code specific to A1200 GSM Phone.
@@ -1051,9 +889,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -1104,7 +942,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-02 14:48:08.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-28 20:54:07.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e6.c - Code specific to E6 GSM Phone.
@@ -1126,9 +964,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
index 94581d4531..01ab60d9ec 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-06-02 20:32:34.000000000 -0300
-@@ -0,0 +1,215 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-09-07 15:27:23.000000000 -0300
+@@ -0,0 +1,219 @@
+/*
+ * EMU Driver for Motorola EZX phones
+ *
@@ -27,6 +27,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+static struct pxa2xx_udc_mach_info ezx_udc_info;
+extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
+extern int ezx_pcap_read_bit(u_int32_t);
++static int emu_irq_usb4v;
++static int emu_irq_usb1v;
++
+
+#if defined CONFIG_EZX_EMU_USB
+#define emu_switch_to_default() emu_switch_to_usb()
@@ -38,6 +41,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_usb(void)
+{
++ printk(KERN_NOTICE "EMU: Switching to USB\n");
+ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
+ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
+ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
@@ -45,18 +49,19 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
+ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
+ UP2OCR = 0x02000000;
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_FSENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 1);
+ clr_GPIO(GPIO_EMU_MUX1);
+ clr_GPIO(GPIO_EMU_MUX2);
+}
+
+void emu_switch_to_uart(void)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN,0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR, 1);
++ printk(KERN_NOTICE "EMU: Switching to UART\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN,0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232_DIR, 1);
+ set_GPIO(GPIO39_FFTXD);
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
+ set_GPIO(GPIO34_TXENB);
@@ -73,6 +78,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_audio(int stereo)
+{
++ printk(KERN_NOTICE "EMU: Switching to audio(%s)\n", (stereo ? "stereo" : "mono"));
+ clr_GPIO(GPIO39_VPOUT);
+ if (stereo) {
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_IN);
@@ -96,8 +102,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_nothing(void)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ printk(KERN_NOTICE "EMU: Switching to disconnected\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
+ set_GPIO(GPIO34_TXENB);
+ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
@@ -112,11 +119,11 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+{
+ switch (irq) {
+ case EZX_IRQ_USB4V:
-+ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
+ emu_switch_to_default();
+ break;
+ case EZX_IRQ_USB1V:
-+ if(!ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V))
++ if(!ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB1V)))
+ emu_switch_to_nothing();
+ break;
+ }
@@ -130,12 +137,23 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
+ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
+
-+ request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
-+ request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
++ emu_irq_usb4v = platform_get_irq(dev, 0);
++ if(emu_irq_usb4v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB4V!\n");
++ return emu_irq_usb4v;
++ }
++ emu_irq_usb1v = platform_get_irq(dev, 1);
++ if(emu_irq_usb1v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB1V!\n");
++ return emu_irq_usb1v;
++ }
++
++ request_irq(emu_irq_usb4v, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
++ request_irq(emu_irq_usb1v, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
+
+ pxa_set_udc_info(&ezx_udc_info);
+
-+ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
+ emu_switch_to_default();
+ else
+ emu_switch_to_nothing();
@@ -145,21 +163,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+static int ezx_emu_remove(struct platform_device *dev)
+{
-+ free_irq(EZX_IRQ_USB4V, NULL);
-+ free_irq(EZX_IRQ_USB1V, NULL);
-+
-+ return 0;
-+}
-+
-+static int ezx_emu_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ emu_switch_to_nothing();
-+ return 0;
-+}
++ free_irq(emu_irq_usb4v, NULL);
++ free_irq(emu_irq_usb1v, NULL);
+
-+static int ezx_emu_resume(struct platform_device *dev)
-+{
-+ emu_switch_to_default();
+ return 0;
+}
+
@@ -170,12 +176,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ switch (cmd) {
+ case PXA2XX_UDC_CMD_DISCONNECT:
+ printk(KERN_NOTICE "USB cmd disconnect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,0);
+ udc_connected_status = 0;
+ break;
+ case PXA2XX_UDC_CMD_CONNECT:
+ printk(KERN_NOTICE "USB cmd connect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,1);
+ udc_connected_status = 1;
+ break;
+ }
@@ -194,8 +200,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+static struct platform_driver ezxemu_driver = {
+ .probe = ezx_emu_probe,
+ .remove = ezx_emu_remove,
-+ .suspend = ezx_emu_suspend,
-+ .resume = ezx_emu_resume,
+ .driver = {
+ .name = "ezx-emu",
+ .owner = THIS_MODULE,
@@ -220,19 +224,11 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:34.000000000 -0300
-@@ -73,6 +73,7 @@
-
- endchoice
-
-+
- endif
-
- if PXA_EZX
-@@ -117,6 +118,28 @@
- config EZX_MCI_TF
- bool
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-07 11:32:26.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-07 15:34:08.000000000 -0300
+@@ -108,6 +108,28 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
@@ -259,50 +255,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
endmenu
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:34.000000000 -0300
-@@ -150,11 +150,35 @@
- .resource = ezxpcap_resources,
- };
-
-+/* EMU */
-+static struct resource ezxemu_resources[] = {
-+ [0] = {
-+ .start = EZX_IRQ_USB4V,
-+ .end = EZX_IRQ_USB4V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = EZX_IRQ_USB1V,
-+ .end = EZX_IRQ_USB1V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device ezxemu_device = {
-+ .name = "ezx-emu",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxpcap_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(ezxemu_resources),
-+ .resource = ezxemu_resources,
-+};
-
- static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
- &ezxbp_device,
- &ezxpcap_device,
-+ &ezxemu_device,
- };
-
- /* PM */
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:34.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-07 11:32:26.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-07 15:34:08.000000000 -0300
@@ -26,6 +26,7 @@
obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
obj-$(CONFIG_EZX_BP) += ezx-bp.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
new file mode 100644
index 0000000000..f21894e904
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
@@ -0,0 +1,342 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c 2007-09-09 13:33:19.000000000 -0300
+@@ -0,0 +1,270 @@
++/*
++ * EZX EOC Driver for Motorola EZX phones
++ *
++ * Copyright (C) 2007 Alex Zhang <celeber2@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++
++#include "ezx-eoc.h"
++
++#if 1
++#define EOC_DBG printk
++#else
++#define EOC_DBG(x, args...)
++#endif
++
++#define EOC_REG_ADDR_SIZE 1
++#define EOC_REG_DATA_SIZE 3
++
++struct ezx_eoc_platform_data *pdata;
++static int eoc_func = EOC_FUNC_USB_NET;
++static const char eoc_i2c_driver_name[] = "ezx-eoc";
++
++/* Addresses to scan */
++static unsigned short normal_i2c[] = {
++ 0x17, /* Address for version 2.0 and above */
++ // 0x7C, /* Address for versions prior too 2.0 */
++ I2C_CLIENT_END
++};
++
++/* I2C Magic */
++I2C_CLIENT_INSMOD;
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter);
++static int ezx_eoc_detect(struct i2c_adapter *adapter, int address, int kind);
++static int ezx_eoc_detach_client(struct i2c_client *client);
++
++static struct i2c_client *eoc_i2c_client = NULL;
++
++static struct i2c_driver eoc_i2c_driver = {
++ .driver = {
++ .name = (char *)eoc_i2c_driver_name,
++ },
++ .id = I2C_DRIVERID_EEPROM,
++ .attach_adapter = ezx_eoc_attach_adapter,
++ .detach_client = ezx_eoc_detach_client,
++};
++
++int eoc_reg_read(int reg, unsigned int *reg_value)
++{
++ unsigned char reg_num = reg;
++ unsigned char value[EOC_REG_DATA_SIZE];
++ int retval;
++
++ struct i2c_msg msgs[2] =
++ {
++ { 0, 0, EOC_REG_ADDR_SIZE, &reg_num },
++ { 0, I2C_M_RD, EOC_REG_DATA_SIZE, value }
++ };
++
++ /* check if we have initialized */ /*not necessary --WM
++ if (eoc_i2c_client == NULL)
++ {
++ EOC_DBG("eoc_reg_read: not initialized\n");
++ return -EINVAL;
++ }
++*/
++ msgs[0].addr = msgs[1].addr = eoc_i2c_client->addr;
++
++ /* transfer message to client */
++ retval = i2c_transfer(eoc_i2c_client->adapter, msgs, 2);
++ if (retval >= 0)
++ {
++ *reg_value = (value[2] << 0);
++ *reg_value |= (value[1] << 8);
++ *reg_value |= (value[0] << 16);
++ }
++ return retval;
++}
++EXPORT_SYMBOL_GPL(eoc_reg_read);
++
++int eoc_reg_write(int reg, unsigned int reg_value)
++{
++ unsigned char value[EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE];
++ int retval;
++
++ /* check if we have initialized */ /*not necessary --WM
++ if (eoc_i2c_client == NULL)
++ {
++ EOC_DBG("eoc_reg_write: not initialized\n");
++ return -EINVAL;
++ }
++*/
++ /* Copy the data into a buffer into the correct format */
++ value[0] = reg;
++ value[1] = (reg_value >> 16) & 0xFF;
++ value[2] = (reg_value >> 8) & 0xFF;
++ value[3] = (reg_value >> 0) & 0xFF;
++
++ /* Write the data to the EOC */
++ retval = i2c_master_send (eoc_i2c_client, value, EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE);
++
++ return retval;
++}
++EXPORT_SYMBOL_GPL(eoc_reg_write);
++
++static void eoc_switch_to_usb(void)
++{
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ EOC_DBG("ALEX;*********************************************emu_switch_to_usb;\n");
++}
++
++static void eoc_switch_to_nothing(void)
++{
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++}
++
++static void eoc_switch_to_default(void)
++{
++ switch (eoc_func) {
++ case EOC_FUNC_USB_NET:
++ eoc_switch_to_usb();
++ break;
++ case EOC_FUNC_NOTHING:
++ eoc_switch_to_nothing();
++ break;
++ }
++}
++
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter)
++{
++ return i2c_probe(adapter, &addr_data, ezx_eoc_detect);
++}
++
++/* This function is called by i2c_probe */
++static int ezx_eoc_detect(struct i2c_adapter *adapter, int address, int kind)
++{
++ struct i2c_client *new_client;
++ int err = 0;
++
++ if (!(new_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL)))
++ return -ENOMEM;
++
++ new_client->addr = address;
++ new_client->adapter = adapter;
++ new_client->driver = &eoc_i2c_driver;
++ new_client->flags = 0;
++ strlcpy(new_client->name, eoc_i2c_driver_name, I2C_NAME_SIZE);
++
++ if ((err = i2c_attach_client(new_client))) {
++ kfree(new_client);
++ return err;
++ }
++
++ eoc_i2c_client = new_client;
++
++ if (pdata && pdata->init) {
++ pdata->init();
++ }
++ else
++ return -EINVAL;
++
++ eoc_switch_to_default();
++
++ return 0;
++}
++
++static int ezx_eoc_detach_client(struct i2c_client *client)
++{
++ int err;
++
++ err = i2c_detach_client(client);
++ if (err)
++ return err;
++
++ return 0;
++}
++
++static int __init ezx_eoc_probe(struct platform_device *dev)
++{
++ int ret;
++
++ pdata = dev->dev.platform_data;
++
++ ret = i2c_add_driver(&eoc_i2c_driver);
++ if (ret != 0)
++ return -EINVAL;
++
++ /*
++ * I think we should save platform_data and call init and eoc_switch
++ * from ezx_eoc_detect, after client is setup.
++ * And there is no need for all the "check if initialised" checks if
++ * you assure that you only call read/write after the client is set.
++ * Probably, this was causing the crash on i2c-core too.
++ * --WM
++ */
++
++ /* FIXME: should set udc_info here -WM */
++ return 0;
++}
++
++static int ezx_eoc_remove(struct platform_device *dev)
++{
++ return i2c_del_driver(&eoc_i2c_driver);
++}
++
++static int ezx_eoc_suspend(struct platform_device *dev, pm_message_t state)
++{
++ eoc_switch_to_nothing();
++ return 0;
++}
++
++static int ezx_eoc_resume(struct platform_device *dev)
++{
++ eoc_switch_to_default();
++ return 0;
++}
++
++static struct platform_driver ezx_eoc_driver = {
++ .probe = ezx_eoc_probe,
++ .remove = ezx_eoc_remove,
++ .suspend = ezx_eoc_suspend,
++ .resume = ezx_eoc_resume,
++ .driver = {
++ .name = "ezx-eoc",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_eoc_init(void)
++{
++ return platform_driver_register(&ezx_eoc_driver);
++}
++
++void ezx_eoc_exit(void)
++{
++ return platform_driver_unregister(&ezx_eoc_driver);
++}
++
++MODULE_AUTHOR("Alex Zhang <celeber2@gmail.com>");
++MODULE_DESCRIPTION("EZX EOC I2C driver");
++MODULE_LICENSE("GPL");
++
++/* doesnt module_init work?? -WM */
++/*late_initcall(ezx_eoc_init);*/
++module_init(ezx_eoc_init);
++module_exit(ezx_eoc_exit);
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h 2007-09-07 22:15:52.000000000 -0300
+@@ -0,0 +1,33 @@
++/*
++ * linux/arch/arm/mach-pxa/ezx-eoc.h
++ *
++ * Copyright (C) Alex Zhang <celeber2@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#ifndef __EZX_EOC_H__
++#define __EZX_EOC_H__
++
++enum {
++ POWER_IC_REG_EOC_INT_STATUS,
++ POWER_IC_REG_EOC_INT_MASK,
++ POWER_IC_REG_EOC_INT_SENSE,
++ POWER_IC_REG_EOC_POWER_CONTROL_0,
++ POWER_IC_REG_EOC_POWER_CONTROL_1,
++ POWER_IC_REG_EOC_CONN_CONTROL,
++ POWER_IC_REG_EOC_NUM
++};
++
++enum {
++ EOC_FUNC_NOTHING,
++ EOC_FUNC_USB_NET,
++};
++
++struct ezx_eoc_platform_data {
++ int (*init)(void);
++};
++
++#endif /* __EZX_EOC_H__ */
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-07 22:15:52.000000000 -0300
+@@ -108,6 +108,12 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+
++config EZX_EOC
++ tristate "EOC i2c driver of Motorola EZX phones"
++ depends on I2C && EXPERIMENTAL && PXA_EZX_A1200
++ help
++ EOC i2c driver of Motorola EZX phones
++
+ config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
+ depends on EZX_PCAP
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-07 22:15:52.000000000 -0300
+@@ -27,6 +27,7 @@
+ obj-$(CONFIG_EZX_BP) += ezx-bp.o
+ obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
+ obj-$(CONFIG_EZX_EMU) += ezx-emu.o
++obj-$(CONFIG_EZX_EOC) += ezx-eoc.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
index 7ef42f0ffc..c291f1aadf 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/drivers/mtd/maps/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/mtd/maps/Kconfig 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/drivers/mtd/maps/Kconfig 2007-04-26 20:49:33.000000000 -0300
-@@ -595,6 +595,28 @@
+--- linux-2.6.21.orig/drivers/mtd/maps/Kconfig 2007-08-31 22:27:53.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Kconfig 2007-08-31 23:04:18.000000000 -0300
+@@ -595,6 +595,34 @@
help
This enables access to the flash chip on the Sharp SL Series of PDAs.
@@ -21,9 +21,15 @@ Index: linux-2.6.21/drivers/mtd/maps/Kconfig
+config MTD_EZX_A780_ALTERNATE
+ bool "A780/E680 Alternate Mapping for BLOB2"
+
++config MTD_EZX_A1200
++ bool "A1200 Original Mapping"
++
+config MTD_EZX_E2
+ bool "E2 Original Mapping"
+
++config MTD_EZX_E6
++ bool "E6 Original Mapping"
++
+endchoice
+
+endif
@@ -33,8 +39,8 @@ Index: linux-2.6.21/drivers/mtd/maps/Kconfig
depends on MTD
Index: linux-2.6.21/drivers/mtd/maps/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/mtd/maps/Makefile 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/drivers/mtd/maps/Makefile 2007-04-26 20:30:30.000000000 -0300
+--- linux-2.6.21.orig/drivers/mtd/maps/Makefile 2007-08-31 22:27:53.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Makefile 2007-08-31 23:04:18.000000000 -0300
@@ -72,3 +72,4 @@
obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
@@ -43,7 +49,7 @@ Index: linux-2.6.21/drivers/mtd/maps/Makefile
Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-04-26 20:30:30.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-08-21 17:03:43.000000000 -0300
@@ -0,0 +1,227 @@
+/*
+ * $Id: $
@@ -122,7 +128,7 @@ Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
+ .size = 0x00020000,
+ .offset = 0x00020000,
+ } , {
-+ .name = "Kernel 1",
++ .name = "Moto Kernel",
+ .size = 0x000e0000, // 896KB
+ .offset = 0x00040000,
+ } , {
@@ -130,11 +136,11 @@ Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
+ .size = 0x01760000,
+ .offset = 0x00120000,
+ } , {
-+ .name = "Kernel 2",
++ .name = "OpenEZX Kernel",
+ .size = 0x00180000, // 1.5MB
+ .offset = 0x01880000,
+ } , {
-+ .name = "VFM_Filesystem",
++ .name = "ezxlocal",
+ .size = 0x005a0000,
+ .offset = 0x01a00000,
+ } , {
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
index 6af6317a6e..604f8eb59b 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-06-07 21:39:37.000000000 -0300
-@@ -0,0 +1,472 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-08-31 22:48:16.000000000 -0300
+@@ -0,0 +1,513 @@
+/* Driver for Motorola PCAP2 as present in EZX phones
+ *
+ * This is both a SPI device driver for PCAP itself, as well as
@@ -24,31 +24,60 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+
++#include <asm/arch/ezx.h>
+#include <asm/arch/ssp.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/ezx-pcap.h>
+#include <asm/arch/irqs.h>
+#include <asm/mach/irq.h>
+
-+#include "ezx.h"
-+
+#if 0
+#define DEBUGP(x, args...) printk(x, ## args)
+#else
+#define DEBUGP(x, args...)
+#endif
+
-+extern unsigned long ezx_ssp_pcap_putget(ulong);
++static DEFINE_SPINLOCK(ezx_ssp_lock);
++static struct ssp_dev ezx_ssp_dev;
++static struct ssp_state ezx_ssp_state;
++static struct pcap_platform_data *pcap_data;
++static int pcap_irq;
++
++static unsigned long ezx_ssp_pcap_putget(ulong data)
++{
++ unsigned long flag;
++ u32 ret = 0;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH)
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ ssp_write_word(&ezx_ssp_dev,data);
++ ssp_read_word(&ezx_ssp_dev, &ret);
++
++ if (pcap_data->cs >= 0) {
++ if(pcap_data->flags & PCAP_CS_AH)
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++
++ return ret;
++}
+
+int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
+{
-+ value &= SSP_PCAP_REGISTER_VALUE_MASK;
-+ value |= SSP_PCAP_REGISTER_WRITE_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++ value &= PCAP_REGISTER_VALUE_MASK;
++ value |= PCAP_REGISTER_WRITE_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
+
-+ local_irq_disable();
+ ezx_ssp_pcap_putget(value);
-+ local_irq_enable();
+
+ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
+ return 0;
@@ -57,12 +86,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+
+int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
+{
-+ u_int32_t frame = SSP_PCAP_REGISTER_READ_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++ u_int32_t frame = PCAP_REGISTER_READ_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
+
-+ local_irq_disable();
+ *value = ezx_ssp_pcap_putget(frame);
-+ local_irq_enable();
+
+ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
+ return 0;
@@ -73,9 +100,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ int ret;
+ u_int32_t tmp;
-+ u_int32_t bit = (sspPcapBit & SSP_PCAP_REGISTER_VALUE_MASK);
-+ u_int8_t reg_num = (sspPcapBit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++ u_int32_t bit = (sspPcapBit & PCAP_REGISTER_VALUE_MASK);
++ u_int8_t reg_num = (sspPcapBit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
+
+ ret = ezx_pcap_read(reg_num, &tmp);
+ if (ret < 0)
@@ -94,14 +121,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ int ret;
+ u_int32_t tmp;
-+ u_int8_t reg_num = (bit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++ u_int8_t reg_num = (bit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
+
+ ret = ezx_pcap_read(reg_num, &tmp);
+ if (ret < 0)
+ return ret;
+
-+ return tmp & (bit & SSP_PCAP_REGISTER_VALUE_MASK);
++ return tmp & (bit & PCAP_REGISTER_VALUE_MASK);
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
+
@@ -111,11 +138,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+static struct proc_dir_entry *proc_pcap;
+
+char *pcap_registers[] = {
-+ "ISR\t", "MSR\t", "PSTAT\t", NULL, NULL, NULL, "VREG2\t", "VREG\t",
-+ "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC", "AUD_RX_AMPS",
-+ "AUD_ST_DAC", NULL, NULL, NULL, NULL, NULL, NULL, "BUSCTRL\t",
-+ "PERIPH\t", NULL, NULL, "LOWPWR\t", NULL, "AUD_TX_AMPS", "GP\t",
-+ NULL, NULL, NULL, NULL, NULL
++ "ISR\t", "MSR\t", "PSTAT\t", "INT_SEL\t", "SWCTRL\t", "VREG1\t",
++ "VREG2\t", "VREG\t", "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC",
++ "RX_AUD_AMPS", "ST_DAC\t", "RTC_TOD\t", "RTC_TODA", "RTC_DAY\t",
++ "RTC_DAYA", "MTRTMR\t", "PWRCTRL\t", "BUSCTRL\t", "PERIPH\t",
++ "AUXVREG_MASK", "VENDOR_REV", "LOWPWR_CTRL", "PERIPH_MASK",
++ "TX_AUD_AMPS", "GP\t",
++ NULL, NULL, NULL, NULL
+};
+
+static int pcap_read_proc(char *page, char **start, off_t off, int count,
@@ -151,82 +180,32 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ u_int32_t tmp;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
+
-+ tmp &= (~SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK);
-+ tmp |= value;
++ tmp &= ~PCAP_AUXVREG_V_VIB_MASK;
++ tmp |= ((value << PCAP_AUXVREG_V_VIB_SHIFT) & PCAP_AUXVREG_V_VIB_MASK);
+
-+ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
+
-+static int __init pcap_init(void)
-+{
-+ /* initialize registers */
-+#warning FIXME: pcap_init still chip level
-+ /* implement a per board pcap init reg array? */
-+
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
-+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_CLEAR_INTERRUPT_REGISTER);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
-+// ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+
-+ /* set SW1 sleep to keep SW1 1.3v in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
-+ /* SW1 active in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
-+ /* at SW1 -core voltage to 1.30V */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
-+ * camera for e680 */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
-+
-+ /* set Vc to low power mode when AP sleep */
-+ //SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
-+
-+ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
-+
-+// PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
-+
-+ return 0;
-+}
+/* MMC/SD specific functions */
+
+void ezx_pcap_mmcsd_voltage(u_int32_t bits)
+{
+ unsigned int tmp;
-+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
-+#if defined(CONFIG_EZX_MCI_SD)
-+ tmp &= 0xffffff9f; /* zero all vaux2 bits */
-+ tmp |= (bits & 0x3) << 5;
-+#elif defined(CONFIG_EZX_MCI_TF)
-+ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
-+ tmp |= (bits & 0xf) << 8;
-+#endif
-+ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
++ if (pcap_data->flags & PCAP_MCI_SD) {
++ tmp &= ~PCAP_AUXVREG_VAUX2_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX2_SHIFT) &
++ PCAP_AUXVREG_VAUX2_MASK);
++ }
++ else if (pcap_data->flags & PCAP_MCI_TF) {
++ tmp &= ~PCAP_AUXVREG_VAUX3_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX3_SHIFT) &
++ PCAP_AUXVREG_VAUX3_MASK);
++ }
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
+}
+EXPORT_SYMBOL(ezx_pcap_mmcsd_voltage);
+
@@ -234,11 +213,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ if (on > 0) on = 1;
+ else on = 0;
-+#if defined(CONFIG_EZX_MCI_SD)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, on);
-+#elif defined(CONFIG_EZX_MCI_TF)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, on);
-+#endif
++
++ if (pcap_data->flags & PCAP_MCI_SD)
++ return ezx_pcap_bit_set(PCAP_BIT_AUXVREG_VAUX2_EN, on);
++ else if (pcap_data->flags & PCAP_MCI_TF)
++ return ezx_pcap_bit_set(PCAP_BIT_AUXVREG_VAUX3_EN, on);
++ else
++ return -ENODEV;
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
+
@@ -248,67 +229,85 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+static unsigned int pcap2irq[] = {
+ [0] = EZX_IRQ_ADCDONE,
+ [1] = EZX_IRQ_TS,
-+ [2] = 0, /* 1HZ */
-+ [3] = 0, /* WH */
-+ [4] = 0, /* WL */
-+ [5] = 0, /* TODA */
++ [2] = EZX_IRQ_1HZ, /* 1HZ */
++ [3] = EZX_IRQ_WH, /* WH */
++ [4] = EZX_IRQ_WL, /* WL */
++ [5] = EZX_IRQ_TODA, /* TODA */
+ [6] = EZX_IRQ_USB4V,
-+ [7] = 0, /* ONOFF */
-+ [8] = 0, /* ONOFF2 */
++ [7] = EZX_IRQ_ONOFF, /* ONOFF */
++ [8] = EZX_IRQ_ONOFF2, /* ONOFF2 */
+ [9] = EZX_IRQ_USB1V,
-+ [10] = 0, /* MOBPORT */
++ [10] = EZX_IRQ_MOBPORT, /* MOBPORT */
+ [11] = EZX_IRQ_MIC,
+ [12] = EZX_IRQ_HEADJACK,
-+ [13] = 0, /* ST */
-+ [14] = 0, /* PC */
-+ [15] = 0, /* WARM */
-+ [16] = 0, /* EOL */
-+ [17] = 0, /* CLK */
-+ [18] = 0, /* SYSRST */
++ [13] = EZX_IRQ_ST, /* ST */
++ [14] = EZX_IRQ_PC, /* PC */
++ [15] = EZX_IRQ_WARM, /* WARM */
++ [16] = EZX_IRQ_EOL, /* EOL */
++ [17] = EZX_IRQ_CLK, /* CLK */
++ [18] = EZX_IRQ_SYSRST, /* SYSRST */
+ [19] = 0,
+ [20] = EZX_IRQ_ADCDONE2,
-+ [21] = 0, /* SOFTRESET */
-+ [22] = 0, /* MNEXB */
++ [21] = EZX_IRQ_SOFTRESET, /* SOFTRESET */
++ [22] = EZX_IRQ_MNEXB, /* MNEXB */
+};
+
+/* Array indexed by IRQ NUMBER, returns PCAP absolute value */
+static unsigned int irq2pcap[] = {
-+ [EZX_IRQ_USB4V] = SSP_PCAP_ADJ_BIT_ISR_USB4VI,
-+ [EZX_IRQ_USB1V] = SSP_PCAP_ADJ_BIT_ISR_USB1VI,
-+ [EZX_IRQ_HEADJACK] = SSP_PCAP_ADJ_BIT_ISR_A1I,
-+ [EZX_IRQ_MIC] = SSP_PCAP_ADJ_BIT_ISR_MB2I,
-+ [EZX_IRQ_ADCDONE] = SSP_PCAP_ADJ_BIT_ISR_ADCDONEI,
-+ [EZX_IRQ_TS] = SSP_PCAP_ADJ_BIT_ISR_TSI,
-+ [EZX_IRQ_ADCDONE2] = SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I,
++ [EZX_IRQ_MNEXB] = PCAP_IRQ_MNEXB,
++ [EZX_IRQ_SOFTRESET] = PCAP_IRQ_SOFTRESET,
++ [EZX_IRQ_SYSRST] = PCAP_IRQ_SYSRST,
++ [EZX_IRQ_CLK] = PCAP_IRQ_CLK,
++ [EZX_IRQ_EOL] = PCAP_IRQ_EOL,
++ [EZX_IRQ_WARM] = PCAP_IRQ_WARM,
++ [EZX_IRQ_PC] = PCAP_IRQ_PC,
++ [EZX_IRQ_ST] = PCAP_IRQ_ST,
++ [EZX_IRQ_MOBPORT] = PCAP_IRQ_MOBPORT,
++ [EZX_IRQ_ONOFF2] = PCAP_IRQ_ONOFF2,
++ [EZX_IRQ_ONOFF] = PCAP_IRQ_ONOFF,
++ [EZX_IRQ_TODA] = PCAP_IRQ_TODA,
++ [EZX_IRQ_WL] = PCAP_IRQ_WL,
++ [EZX_IRQ_WH] = PCAP_IRQ_WH,
++ [EZX_IRQ_1HZ] = PCAP_IRQ_1HZ,
++ [EZX_IRQ_USB4V] = PCAP_IRQ_USB4V,
++ [EZX_IRQ_USB1V] = PCAP_IRQ_USB1V,
++ [EZX_IRQ_HEADJACK] = PCAP_IRQ_A1,
++ [EZX_IRQ_MIC] = PCAP_IRQ_MB2,
++ [EZX_IRQ_TS] = PCAP_IRQ_TS,
++ [EZX_IRQ_ADCDONE] = PCAP_IRQ_ADCDONE,
++ [EZX_IRQ_ADCDONE2] = PCAP_IRQ_ADCDONE2,
+};
+
+static void pcap_ack_irq(unsigned int irq)
+{
+ DEBUGP("pcap_ack_irq: %u\n", irq);
-+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, irq2pcap[irq]);
++ ezx_pcap_write(PCAP_REG_ISR, irq2pcap[irq]);
+}
+
+static void pcap_mask_irq(unsigned int irq)
+{
+ u_int32_t reg;
++ unsigned long flag;
+
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
+ DEBUGP("pcap_mask_irq: %u\n", irq);
-+
-+ /* this needs to be atomic... but we're not on SMP so it is */
-+ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &reg);
++ ezx_pcap_read(PCAP_REG_MSR, &reg);
+ reg |= irq2pcap[irq];
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, reg);
++ ezx_pcap_write(PCAP_REG_MSR, reg);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
+}
+
+static void pcap_unmask_irq(unsigned int irq)
+{
+ u_int32_t tmp;
-+ DEBUGP("pcap_unmask_irq: %u\n", irq);
++ unsigned long flag;
+
-+ /* this needs to be atomic... but we're not on SMP so it is */
-+ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &tmp);
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ DEBUGP("pcap_unmask_irq: %u\n", irq);
++ ezx_pcap_read(PCAP_REG_MSR, &tmp);
+ tmp &= ~irq2pcap[irq];
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, tmp);
++ ezx_pcap_write(PCAP_REG_MSR, tmp);
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
+}
+
+static struct irq_chip pcap_chip = {
@@ -320,66 +319,49 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+/* handler for interrupt received from PCAP via GPIO */
+static void pcap_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
+{
++ const unsigned int cpu = smp_processor_id();
+ int i;
-+ const unsigned int cpu = smp_processor_id();
-+ u_int32_t reg, mask;
++ u_int32_t isr, msr;
+
+ spin_lock(&desc->lock);
-+
-+ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
-+
-+ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
-+
-+ if (unlikely(desc->status & IRQ_INPROGRESS)) {
-+ DEBUGP("irq busy, masking it off\n");
-+ desc->status |= (IRQ_PENDING | IRQ_MASKED);
++ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
++ if (unlikely(desc->status & (IRQ_INPROGRESS | IRQ_DISABLED))) {
++ desc->status |= (IRQ_PENDING | IRQ_MASKED);
+ desc->chip->mask(irq);
+ desc->chip->ack(irq);
+ goto out_unlock;
+ }
-+
-+ kstat_cpu(cpu).irqs[irq]++;
++ kstat_cpu(cpu).irqs[irq]++;
+ desc->chip->ack(irq);
+ desc->status |= IRQ_INPROGRESS;
-+
-+ do {
-+ if (unlikely((desc->status &
-+ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
-+ (IRQ_PENDING | IRQ_MASKED))) {
-+ DEBUGP("dealing with pending IRQ, unmasking\n");
-+ desc->chip->unmask(irq);
++ do {
++ if (unlikely((desc->status &
++ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
++ (IRQ_PENDING | IRQ_MASKED))) {
++ desc->chip->unmask(irq);
+ desc->status &= ~IRQ_MASKED;
-+ }
-+
++ }
+ desc->status &= ~IRQ_PENDING;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
-+ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &mask);
-+ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x MSR=0x%08x\n", reg, mask);
-+
-+ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
-+ unsigned int pirq = pcap2irq[i];
-+ if (pirq == 0)
-+ continue;
-+
-+ if ((reg & (1 << i)) && !(mask & (1 << i))) {
-+ struct irq_desc *subdesc;
-+ DEBUGP("found irq %u\n", pirq);
-+ subdesc = irq_desc + pirq;
-+
-+ kstat_cpu(cpu).irqs[pirq]++;
-+ subdesc->chip->ack(pirq);
-+
-+ spin_unlock(&desc->lock);
-+ handle_IRQ_event(pirq, subdesc->action);
-+ spin_lock(&desc->lock);
-+ }
-+ }
-+
-+ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
++ ezx_pcap_read(PCAP_REG_ISR, &isr);
++ ezx_pcap_read(PCAP_REG_MSR, &msr);
++ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
++ unsigned int pirq = pcap2irq[i];
++ struct irq_desc *subdesc;
++ if (pirq == 0 || !(isr & irq2pcap[pirq]))
++ continue;
++ subdesc = irq_desc + pirq;
++ if (msr & irq2pcap[pirq])
++ continue;
++ DEBUGP("found irq %u\n", pirq);
++ spin_unlock(&desc->lock);
++ desc_handle_irq(pirq, subdesc);
++ spin_lock(&desc->lock);
++ }
+
-+ desc->status &= ~IRQ_INPROGRESS;
++ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
+
++ desc->status &= ~IRQ_INPROGRESS;
+out_unlock:
+ spin_unlock(&desc->lock);
+}
@@ -389,49 +371,108 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+ int irq;
+ DEBUGP("exz_pcap_remove entered\n");
+
-+ set_irq_chained_handler(IRQ_GPIO1, NULL);
++ set_irq_chained_handler(pcap_irq, NULL);
+
-+ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(21); irq++) {
+ set_irq_chip(irq, NULL);
+ set_irq_handler(irq, NULL);
+ set_irq_flags(irq, 0);
+ }
+
++ ssp_exit(&ezx_ssp_dev);
++
+ return 0;
+}
+
+static int __init ezx_pcap_probe(struct platform_device *pdev)
+{
-+ unsigned int irq;
++ unsigned int ret, irq;
+ DEBUGP("ezx_pcap_probe entered\n");
+
-+ pcap_init();
++ pcap_data = pdev->dev.platform_data;
++
++ /* configure ssp port */
++ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
++ pxa_gpio_mode(GPIO24_SFRM_MD);
++ pxa_gpio_mode(GPIO25_STXD_MD);
++ pxa_gpio_mode(GPIO26_SRXD_MD);
++
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH)
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT);
++ else
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT
++ | GPIO_DFLT_HIGH);
++ }
++ pcap_irq = platform_get_irq(pdev, 0);
++ if(pcap_irq < 0) {
++ printk(KERN_ERR "Unable to get IRQ for pcap!\n");
++ return pcap_irq;
++ }
++
++ ret = ssp_init(&ezx_ssp_dev, pcap_data->port, 0);
++ if (ret) {
++ printk(KERN_ERR "Unable to register SSP handler!\n");
++ return ret;
++ }
++
++ ssp_disable(&ezx_ssp_dev);
++ ssp_config(&ezx_ssp_dev,
++ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
++ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
++ 0, SSCR0_SerClkDiv(pcap_data->clk));
++ ssp_enable(&ezx_ssp_dev);
++
++ /* mask/ack all PCAP interrupts */
++ ezx_pcap_write(PCAP_REG_MSR, PCAP_MASK_ALL_INTERRUPT);
++ ezx_pcap_write(PCAP_REG_ISR, PCAP_CLEAR_INTERRUPT_REGISTER);
++
++ if (pcap_data->init)
++ pcap_data->init();
+
-+ set_irq_type(IRQ_GPIO1, IRQT_RISING);
+ /* set up interrupt demultiplexing code for PCAP2 irqs */
-+ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
++ set_irq_type(pcap_irq, IRQT_RISING);
++ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(21); irq++) {
+ set_irq_chip(irq, &pcap_chip);
-+ set_irq_handler(irq, handle_edge_irq);
++ set_irq_handler(irq, handle_level_irq);
+ set_irq_flags(irq, IRQF_VALID);
+ }
-+ set_irq_chained_handler(IRQ_GPIO1, pcap_irq_demux_handler);
++ set_irq_chained_handler(pcap_irq, pcap_irq_demux_handler);
++ set_irq_wake(pcap_irq, 1);
+
+ printk("ezx-pcap: ssp driver registered\n");
-+
-+ return 0;
++ return ret;
+}
+
+static int ezx_pcap_suspend(struct platform_device *dev, pm_message_t state)
+{
+ DEBUGP("pcap suspend!\n");
++ ssp_flush(&ezx_ssp_dev);
++ ssp_save_state(&ezx_ssp_dev, &ezx_ssp_state);
++ if (pcap_data->cs >= 0)
++ pxa_gpio_mode(pcap_data->cs | GPIO_IN);
+ return 0;
+}
+
+static int ezx_pcap_resume(struct platform_device *dev)
+{
+ DEBUGP("pcap resume!\n");
-+ /* ack all irqs */
-+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_CLEAR_INTERRUPT_REGISTER);
++
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH) {
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT);
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++ else {
++ pxa_gpio_mode(pcap_data->cs | GPIO_OUT | GPIO_DFLT_HIGH);
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++ }
++ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
++ ssp_enable(&ezx_ssp_dev);
++
++ ezx_pcap_write(PCAP_REG_ISR, PCAP_CLEAR_INTERRUPT_REGISTER);
++
+ return 0;
+}
+
@@ -478,677 +519,268 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-06-03 11:14:40.000000000 -0300
-@@ -0,0 +1,665 @@
-+/* (c) Copyright Motorola Beijing 2002 all rights reserved.
-+
-+ Project Name : EZX
-+ Project No. :
-+ Title :
-+ File Name :
-+ Description :
-+
-+ ************** REVISION HISTORY **********************************************
-+ Date Author Reference
-+ ======== ========== ==========================
-+ 2002-07-01 weiqiang lin create
-+*/
-+#ifndef SSP_PCAP_H
-+#define SSP_PCAP_H
-+
-+#define SSP_vibrate_start_command() SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
-+ SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
-+
-+#define SSP_vibrate_stop_command() SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
-+ SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
-+
-+#define SSP_PCAP_REGISTER_VALUE_LENGTH 16
-+
-+#define SSP_PCAP_REGISTER_WRITE_OP_BIT 0x80000000
-+#define SSP_PCAP_REGISTER_READ_OP_BIT 0x00000000
-+
-+#define SSP_PCAP_REGISTER_VALUE_UP_WORD_MASK 0xffff0000
-+#define SSP_PCAP_REGISTER_VALUE_DOWN_WORD_MASK 0x0000ffff
-+
-+#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
-+#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
-+#define SSP_PCAP_REGISTER_ADDRESS_MASK 0x7c000000
-+#define SSP_PCAP_REGISTER_ADDRESS_SHIFT 26
-+#define SSP_PCAP_REGISTER_NUMBER 32
-+
-+#define SSP_PCAP_ADC_START_VALUE_SET_MASK 0xfffffc00
-+#define SSP_PCAP_ADC_START_VALUE 0x000001dd
-+
-+
-+#define SSP_PCAP_PHONE_CDC_CLOCK_MASK 0x000001c0
-+#define SSP_PCAP_STEREO_SAMPLE_RATE_MASK 0x00000f00
-+#define SSP_PCAP_STEREO_BCLK_TIME_SLOT_MASK 0x00018000
-+#define SSP_PCAP_STEREO_CLOCK_MASK 0x0000001c
-+#define SSP_PCAP_DIGITAL_AUDIO_MODE_MASK 0x00006000
-+#define SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK 0x000e0000
-+#define SSP_PCAP_MONO_PGA_MASK 0x00180000
-+
-+#define SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK 0x00300000
-+
-+#define SSP_PCAP_AUDIO_IN_GAIN_MASK 0x0000001f
-+#define SSP_PCAP_AUDIO_IN_GAIN_SHIFT 0
-+#define SSP_PCAP_AUDIO_OUT_GAIN_MASK 0x0001e000
-+#define SSP_PCAP_AUDIO_OUT_GAIN_SHIFT 13
-+
-+
-+#define SSP_PCAP_ADD1_VALUE_MASK 0x000003ff
-+#define SSP_PCAP_ADD1_VALUE_SHIFT 0
-+#define SSP_PCAP_ADD2_VALUE_MASK 0x000ffc00
-+#define SSP_PCAP_ADD2_VALUE_SHIFT 10
-+
-+
-+#define PCAP_AUDIO_IN_GAIN_MAX_VALUE 31
-+#define PCAP_AUDIO_OUT_GAIN_MAX_VALUE 15
-+
-+#define PCAP_CLEAR_INTERRUPT_REGISTER 0x00141fdf
-+#define PCAP_MASK_ALL_INTERRUPT 0x0013ffff
-+
-+#define SSP_PCAP_TS_KEEPER_TIMER 100 /* 1 second */
-+#define START_ADC_DELAY_TIMER 1991 /* 540 us */
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-09-04 23:34:19.000000000 -0300
+@@ -0,0 +1,247 @@
++/*
++ * Copyright 2007 Daniel Ribeiro <drwyrm@gmail.com>
++ */
+
-+#define SSP_SEND_PM_ALART_INTERVAL 1000 *HZ/1000 /* 1 second */
-+#define SSP_SEND_MSG_USB_ACCESSORY_INFO_DEBOUNCE 200 *HZ/1000 /* 200ms */
++#ifndef EZX_PCAP_H
++#define EZX_PCAP_H
+
-+struct ssp_interrupt_info
-+{
-+ u32 type;
-+ u32 status;
-+ void* privdata;
++struct pcap_platform_data {
++ int port; /* SSP port */
++ int cs; /* CS gpio */
++ int clk;
++ int flags; /* driver flags */
++ int (*init)(void); /* board specific driver init */
+};
+
-+#ifndef U8
-+#define U8 unsigned char
-+#endif
-+
-+#ifndef U32
-+#define U32 unsigned long
-+#endif
-+
-+#ifndef U16
-+#define U16 unsigned short
-+#endif
-+
-+#ifndef P_U16
-+#define P_U16 U16*
-+#endif
-+
-+#ifndef P_U32
-+#define P_U32 U32*
-+#endif
-+
-+#define SSP_SELECT_BUFFER (volatile unsigned long *)(0xf4000000)
-+
-+#define SSP_SR_RNE 0x00000008
-+#define SSP_PCAP_BASE 0x00001000
-+/************************ STRUCTURES, ENUMS, AND TYPEDEFS **************************/
-+typedef enum accessoryStatus
-+{
-+ ACCESSORY_DEVICE_STATUS_DETACHED = 0,
-+ ACCESSORY_DEVICE_STATUS_ATTACHED ,
-+ ACCESSORY_DEVICE_STATUS_UNKNOW =0x000000ff
-+}ACCESSORY_DEVICE_STATUS;
-+
-+typedef enum accessoryType
-+{
-+ ACCESSORY_DEVICE_NONE = 0,
-+ ACCESSORY_DEVICE_SERIAL_PORT ,
-+ ACCESSORY_DEVICE_USB_PORT ,
-+ ACCESSORY_DEVICE_UNKNOW =0x000000ff
-+}ACCESSORY_TYPE;
-+
-+typedef enum pcapReturnStatus
-+{
-+ SSP_PCAP_SUCCESS = 0,
-+ SSP_PCAP_ERROR_REGISTER = SSP_PCAP_BASE+1,
-+ SSP_PCAP_ERROR_VALUE = SSP_PCAP_BASE+2,
-+
-+ SSP_PCAP_NOT_RUN = SSP_PCAP_BASE+0xff
-+}SSP_PCAP_STATUS;
-+
-+typedef enum pcapPortType
-+{
-+ SSP_PCAP_SERIAL_PORT = 0x00000000,
-+ SSP_PCAP_LOW_USB_PORT = 0x00000001,
-+ SSP_PCAP_HIGH_USB_PORT = 0x00000002,
-+ SSP_PCAP_UNKNOW_PORT = 0x000000ff
-+}SSP_PCAP_PORT_TYPE;
-+
-+typedef enum pcapInitDriverType
-+{
-+ SSP_PCAP_TS_OPEN = 0x00000000,
-+ SSP_PCAP_AUDIO_OPEN = 0x00000001,
-+ SSP_PCAP_UNKNOW_DRIVER_OPEN = 0x000000ff
-+}SSP_PCAP_INIT_DRIVER_TYPE;
-+
-+
-+typedef enum pcapReturnBitStatus
-+{
-+ SSP_PCAP_BIT_ZERO = 0x00000000,
-+ SSP_PCAP_BIT_ONE = 0x00000001,
-+ SSP_PCAP_BIT_ERROR = 0xff000000
-+}SSP_PCAP_BIT_STATUS;
-+
-+typedef enum pcapCDCClkType
-+{
-+ PCAP_CDC_CLK_IN_13M0 = 0x00000000,
-+ PCAP_CDC_CLK_IN_15M36 = 0x00000040,
-+ PCAP_CDC_CLK_IN_16M8 = 0x00000080,
-+ PCAP_CDC_CLK_IN_19M44 = 0x000000c0,
-+ PCAP_CDC_CLK_IN_26M0 = 0x00000100
-+}PHONE_CDC_CLOCK_TYPE;
-+
-+typedef enum pcapST_SR
-+{
-+ PCAP_ST_SAMPLE_RATE_8K = 0x00000000,
-+ PCAP_ST_SAMPLE_RATE_11K = 0x00000100,
-+ PCAP_ST_SAMPLE_RATE_12K = 0x00000200,
-+ PCAP_ST_SAMPLE_RATE_16K = 0x00000300,
-+ PCAP_ST_SAMPLE_RATE_22K = 0x00000400,
-+ PCAP_ST_SAMPLE_RATE_24K = 0x00000500,
-+ PCAP_ST_SAMPLE_RATE_32K = 0x00000600,
-+ PCAP_ST_SAMPLE_RATE_44K = 0x00000700,
-+ PCAP_ST_SAMPLE_RATE_48K = 0x00000800
-+}ST_SAMPLE_RATE_TYPE;
-+
-+typedef enum pcapST_BCLK
-+{
-+ PCAP_ST_BCLK_SLOT_16 = 0x00000000,
-+ PCAP_ST_BCLK_SLOT_8 = 0x00008000,
-+ PCAP_ST_BCLK_SLOT_4 = 0x00010000,
-+ PCAP_ST_BCLK_SLOT_2 = 0x00018000,
-+}ST_BCLK_TIME_SLOT_TYPE;
-+
-+typedef enum pcapST_CLK
-+{
-+ PCAP_ST_CLK_PLL_CLK_IN_13M0 = 0x00000000,
-+ PCAP_ST_CLK_PLL_CLK_IN_15M36 = 0x00000004,
-+ PCAP_ST_CLK_PLL_CLK_IN_16M8 = 0x00000008,
-+ PCAP_ST_CLK_PLL_CLK_IN_19M44 = 0x0000000c,
-+ PCAP_ST_CLK_PLL_CLK_IN_26M0 = 0x00000010,
-+ PCAP_ST_CLK_PLL_CLK_IN_EXT_MCLK = 0x00000014,
-+ PCAP_ST_CLK_PLL_CLK_IN_FSYNC = 0x00000018,
-+ PCAP_ST_CLK_PLL_CLK_IN_BITCLK = 0x0000001c
-+}ST_CLK_TYPE;
-+
-+typedef enum pcapDigitalAudioInterfaceMode
-+{
-+ PCAP_DIGITAL_AUDIO_INTERFACE_NORMAL = 0x00000000,
-+ PCAP_DIGITAL_AUDIO_INTERFACE_NETWORK = 0x00002000,
-+ PCAP_DIGITAL_AUDIO_INTERFACE_I2S = 0x00004000
-+}DIG_AUD_MODE_TYPE;
-+
-+typedef enum pcapMono
-+{
-+ PCAP_MONO_PGA_R_L_STEREO = 0x00000000,
-+ PCAP_MONO_PGA_RL = 0x00080000,
-+ PCAP_MONO_PGA_RL_3DB = 0x00100000,
-+ PCAP_MONO_PGA_RL_6DB = 0x00180000
-+}MONO_TYPE;
-+
-+typedef enum pcapVibratorVoltageLevel
-+{
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL0 = 0x00000000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL1 = 0x00100000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL2 = 0x00200000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL3 = 0x00300000
-+}VibratorVoltageLevel_TYPE;
-+
-+typedef enum pcapTouchScreenMode
-+{
-+ PCAP_TS_POSITION_X_MEASUREMENT = 0x00000000,
-+ PCAP_TS_POSITION_XY_MEASUREMENT = 0x00020000,
-+ PCAP_TS_PRESSURE_MEASUREMENT = 0x00040000,
-+ PCAP_TS_PLATE_X_MEASUREMENT = 0x00060000,
-+ PCAP_TS_PLATE_Y_MEASUREMENT = 0x00080000,
-+ PCAP_TS_STANDBY_MODE = 0x000a0000,
-+ PCAP_TS_NONTS_MODE = 0x000c0000
-+}TOUCH_SCREEN_DETECT_TYPE;
-+
-+typedef enum pcapADJRegister
-+{
-+ SSP_PCAP_ADJ_ISR_REGISTER = 0x00,
-+ SSP_PCAP_ADJ_MSR_REGISTER = 0x01,
-+ SSP_PCAP_ADJ_PSTAT_REGISTER = 0x02,
-+ SSP_PCAP_ADJ_VREG2_REGISTER = 0x06,
-+ SSP_PCAP_ADJ_AUX_VREG_REGISTER = 0x07,
-+ SSP_PCAP_ADJ_BATT_DAC_REGISTER = 0x08,
-+ SSP_PCAP_ADJ_ADC1_REGISTER = 0x09,
-+ SSP_PCAP_ADJ_ADC2_REGISTER = 0x0a,
-+ SSP_PCAP_ADJ_AUD_CODEC_REGISTER = 0x0b,
-+ SSP_PCAP_ADJ_AUD_RX_AMPS_REGISTER = 0x0c,
-+ SSP_PCAP_ADJ_ST_DAC_REGISTER = 0x0d,
-+ SSP_PCAP_ADJ_BUSCTRL_REGISTER = 0x14,
-+ SSP_PCAP_ADJ_PERIPH_REGISTER = 0x15,
-+ SSP_PCAP_ADJ_LOWPWR_CTRL_REGISTER = 0x18,
-+ SSP_PCAP_ADJ_TX_AUD_AMPS_REGISTER = 0x1a,
-+ SSP_PCAP_ADJ_GP_REG_REGISTER = 0x1b
-+}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER;
-+
-+typedef enum pcapADJBit_SetType
-+{
-+ SSP_PCAP_ADJ_BIT_ISR_ADCDONEI = 0x00000001,
-+ SSP_PCAP_ADJ_BIT_ISR_TSI = 0x00000002,
-+ SSP_PCAP_ADJ_BIT_ISR_1HZI = 0x00000004,
-+ SSP_PCAP_ADJ_BIT_ISR_WHI = 0x00000008,
-+ SSP_PCAP_ADJ_BIT_ISR_WLI = 0x00000010,
-+ SSP_PCAP_ADJ_BIT_ISR_TODAI = 0x00000020,
-+ SSP_PCAP_ADJ_BIT_ISR_USB4VI = 0x00000040,
-+ SSP_PCAP_ADJ_BIT_ISR_ONOFFI = 0x00000080,
-+ SSP_PCAP_ADJ_BIT_ISR_ONOFF2I = 0x00000100,
-+ SSP_PCAP_ADJ_BIT_ISR_USB1VI = 0x00000200,
-+ SSP_PCAP_ADJ_BIT_ISR_MOBPORTI = 0x00000400,
-+ SSP_PCAP_ADJ_BIT_ISR_MB2I = 0x00000800,
-+ SSP_PCAP_ADJ_BIT_ISR_A1I = 0x00001000,
-+ SSP_PCAP_ADJ_BIT_ISR_STI = 0x00002000,
-+ SSP_PCAP_ADJ_BIT_ISR_PCI = 0x00004000,
-+ SSP_PCAP_ADJ_BIT_ISR_WARMI = 0x00008000,
-+ SSP_PCAP_ADJ_BIT_ISR_EOLI = 0x00010000,
-+ SSP_PCAP_ADJ_BIT_ISR_CLKI = 0x00020000,
-+ SSP_PCAP_ADJ_BIT_ISR_SYS_RSTI = 0x00040000,
-+ SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I = 0x00100000,
-+ SSP_PCAP_ADJ_BIT_ISR_SOFT_RESETI = 0x00200000,
-+ SSP_PCAP_ADJ_BIT_ISR_MNEXBI = 0x00400000,
-+
-+ SSP_PCAP_ADJ_BIT_MSR_ADCDONEM = 0x04000001,
-+ SSP_PCAP_ADJ_BIT_MSR_TSM = 0x04000002,
-+ SSP_PCAP_ADJ_BIT_MSR_1HZM = 0x04000004,
-+ SSP_PCAP_ADJ_BIT_MSR_WHM = 0x04000008,
-+ SSP_PCAP_ADJ_BIT_MSR_WLM = 0x04000010,
-+ SSP_PCAP_ADJ_BIT_MSR_TODAM = 0x04000020,
-+ SSP_PCAP_ADJ_BIT_MSR_USB4VM = 0x04000040,
-+ SSP_PCAP_ADJ_BIT_MSR_ONOFFM = 0x04000080,
-+ SSP_PCAP_ADJ_BIT_MSR_ONOFF2M = 0x04000100,
-+ SSP_PCAP_ADJ_BIT_MSR_USB1VM = 0x04000200,
-+ SSP_PCAP_ADJ_BIT_MSR_MOBPORTM = 0x04000400,
-+ SSP_PCAP_ADJ_BIT_MSR_MB2M = 0x04000800,
-+ SSP_PCAP_ADJ_BIT_MSR_A1M = 0x04001000,
-+ SSP_PCAP_ADJ_BIT_MSR_STM = 0x04002000,
-+ SSP_PCAP_ADJ_BIT_MSR_PCM = 0x04004000,
-+ SSP_PCAP_ADJ_BIT_MSR_WARMM = 0x04008000,
-+ SSP_PCAP_ADJ_BIT_MSR_EOLM = 0x04010000,
-+ SSP_PCAP_ADJ_BIT_MSR_CLKM = 0x04020000,
-+ SSP_PCAP_ADJ_BIT_MSR_SYS_RSTM = 0x04040000,
-+ SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M = 0x04100000,
-+ SSP_PCAP_ADJ_BIT_MSR_SOFT_RESETM = 0x04200000,
-+ SSP_PCAP_ADJ_BIT_MSR_MNEXBM = 0x04400000,
-+
-+ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V = 0x08000040,
-+ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS = 0x08000080,
-+ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS2 = 0x08000100,
-+ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V = 0x08000200,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MOBSENSB = 0x08000400,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MB2SNS = 0x08000800,
-+ SSP_PCAP_ADJ_BIT_PSTAT_A1SNS = 0x08001000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MSTB = 0x08002000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_EOL_STAT = 0x08010000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_CLK_STAT = 0x08020000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_SYS_RST = 0x08040000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_BATTFBSNS = 0x08080000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_BATT_DET_IN_SNS = 0x08200000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MNEXBSNS = 0x08400000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_WARM_SYS_RST = 0x08800000,
-+
-+ SSP_PCAP_ADJ_BIT_VREG2_V1_STBY = 0x18000001,
-+ SSP_PCAP_ADJ_BIT_VREG2_V2_STBY = 0x18000002,
-+ SSP_PCAP_ADJ_BIT_VREG2_V3_STBY = 0x18000004,
-+ SSP_PCAP_ADJ_BIT_VREG2_V4_STBY = 0x18000008,
-+ SSP_PCAP_ADJ_BIT_VREG2_V5_STBY = 0x18000010,
-+ SSP_PCAP_ADJ_BIT_VREG2_V6_STBY = 0x18000020,
-+ SSP_PCAP_ADJ_BIT_VREG2_V7_STBY = 0x18000040,
-+ SSP_PCAP_ADJ_BIT_VREG2_V8_STBY = 0x18000080,
-+ SSP_PCAP_ADJ_BIT_VREG2_V9_STBY = 0x18000100,
-+ SSP_PCAP_ADJ_BIT_VREG2_V10_STBY = 0x18000200,
-+ SSP_PCAP_ADJ_BIT_VREG2_V1_LOWPWR = 0x18000400,
-+ SSP_PCAP_ADJ_BIT_VREG2_V2_LOWPWR = 0x18000800,
-+ SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR = 0x18001000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR = 0x18002000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V5_LOWPWR = 0x18004000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR = 0x18008000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V7_LOWPWR = 0x18010000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR = 0x18020000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V9_LOWPWR = 0x18040000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V10_LOWPWR = 0x18080000,
-+
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_EN = 0x1c000002,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_0 = 0x1c000004,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_1 = 0x1c000008,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN = 0x1c000010,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0 = 0x1c000020,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1 = 0x1c000040,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN = 0x1c000080,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_0 = 0x1c000100,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_1 = 0x1c000200,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_2 = 0x1c000400,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_3 = 0x1c000800,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_EN = 0x1c001000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_0 = 0x1c002000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_1 = 0x1c004000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM2_EN = 0x1c010000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_EN = 0x1c020000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_0 = 0x1c040000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN = 0x1c080000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_0 = 0x1c100000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_1 = 0x1c200000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_STBY = 0x1c400000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_LOWPWR = 0x1c800000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_SW3_STBY = 0x1d000000,
-+
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC0 = 0x20000001,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC1 = 0x20000002,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC2 = 0x20000004,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC3 = 0x20000008,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC4 = 0x20000010,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC5 = 0x20000020,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC6 = 0x20000040,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC7 = 0x20000080,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_B_FDBK = 0x20000100,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EXT_ISENSE = 0x20000200,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN0 = 0x20000400,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN1 = 0x20000800,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN2 = 0x20001000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN3 = 0x20002000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_I_COIN = 0x20004000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_COIN_CH_EN = 0x20008000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL0 = 0x20020000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL1 = 0x20040000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL2 = 0x20080000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_CMP_EN = 0x20100000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_BATT_DET_EN = 0x20200000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_THERMBIAS_CTRL = 0x20400000,
-+
-+ SSP_PCAP_ADJ_BIT_ADC1_ADEN = 0x24000001,
-+ SSP_PCAP_ADJ_BIT_ADC1_RAND = 0x24000002,
-+ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL1 = 0x24000004,
-+ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL2 = 0x24000008,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA10 = 0x24000010,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA11 = 0x24000020,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA12 = 0x24000040,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA20 = 0x24000080,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA21 = 0x24000100,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA22 = 0x24000200,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO0 = 0x24000400,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO1 = 0x24000800,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO2 = 0x24001000,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO3 = 0x24002000,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATOX = 0x24004000,
-+ SSP_PCAP_ADJ_BIT_ADC1_MTR1 = 0x24008000,
-+ SSP_PCAP_ADJ_BIT_ADC1_MTR2 = 0x24010000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M0 = 0x24020000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M1 = 0x24040000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M2 = 0x24080000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR = 0x24100000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB = 0x24200000,
-+ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_POLARITY = 0x24400000,
-+ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_ADC = 0x24800000,
-+
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD10 = 0x28000001,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD11 = 0x28000002,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD12 = 0x28000004,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD13 = 0x28000008,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD14 = 0x28000010,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD15 = 0x28000020,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD16 = 0x28000040,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD17 = 0x28000080,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD18 = 0x28000100,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD19 = 0x28000200,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD20 = 0x28000400,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD21 = 0x28000800,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD22 = 0x28001000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD23 = 0x28002000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD24 = 0x28004000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD25 = 0x28008000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD26 = 0x28010000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD27 = 0x28020000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD28 = 0x28040000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD29 = 0x28080000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADINC1 = 0x28100000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADINC2 = 0x28200000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ASC = 0x28400000,
-+
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDIHPF = 0x2c000001,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_SMB = 0x2c000002,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDOHPF = 0x2c000004,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CD_TS = 0x2c000008,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DLM = 0x2c000010,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_ADITH = 0x2c000020,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK0 = 0x2c000040,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK1 = 0x2c000080,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK2 = 0x2c000100,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_INV = 0x2c000200,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_INV = 0x2c000400,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DF_RESET = 0x2c000800,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_EN = 0x2c001000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK_EN = 0x2c002000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_8K_16K = 0x2c004000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DIG_AUD_IN = 0x2c008000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_IN_SEL = 0x2c010000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2_MUX = 0x2c020000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG0 = 0x2c040000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG1 = 0x2c080000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG2 = 0x2c100000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG3 = 0x2c200000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG4 = 0x2c400000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG_PRI_ADJ = 0x2c800000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_PRI_ADJ = 0x2c200000,
-+
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1_EN = 0x30000001,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A2_EN = 0x30000002,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A4_EN = 0x30000010,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ARIGHT_EN = 0x30000020,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ALEFT_EN = 0x30000040,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CD_BYP = 0x30000080,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CDC_SW = 0x30000100,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ST_DAC_SW = 0x30000200,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_IN_SW = 0x30000400,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_R_EN = 0x30000800,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_L_EN = 0x30001000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG0 = 0x30002000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG1 = 0x30004000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG2 = 0x30008000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG3 = 0x30010000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL = 0x30020000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO0 = 0x30080000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO1 = 0x30100000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG_PRI_ADJ = 0x30200000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO_PRI_ADJ = 0x30400000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ0 = 0x30800000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ1 = 0x31000000,
-+
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SMB_ST_DAC = 0x34000001,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_STDET_EN = 0x34000002,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK0 = 0x34000004,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK1 = 0x34000008,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK2 = 0x34000010,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_EN = 0x34000020,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DF_RESET_ST_DAC = 0x34000040,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_EN = 0x34000080,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR0 = 0x34000100,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR1 = 0x34000200,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR2 = 0x34000400,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR3 = 0x34000800,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_IN_ST_DAC = 0x34001000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS0 = 0x34002000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS1 = 0x34004000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK0 = 0x34008000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK1 = 0x34010000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_INV = 0x34020000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_FS_INV = 0x34040000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_CLK_IN_SEL = 0x34080000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_PRI_ADJ = 0x35000000,
-+
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB = 0x50000001,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_SUSPEND = 0x50000002,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU = 0x50000004,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PD = 0x50000008,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN = 0x50000010,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PS = 0x50000020,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_MSTR_EN = 0x50000040,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VBUS_PD_ENB = 0x50000080,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_CURRLIM = 0x50000100,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB = 0x50000200,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR = 0x50000400,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_SE0_CONN = 0x50000800,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PDM = 0x50001000,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_BUS_PRI_ADJ = 0x51000000,
-+
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0 = 0x54000001,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1 = 0x54000002,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2 = 0x54000004,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3 = 0x54000008,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4 = 0x54000010,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_EN = 0x54000020,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_EN = 0x54000040,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL0 = 0x54000080,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL1 = 0x54000100,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL2 = 0x54000200,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL3 = 0x54000400,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL0 = 0x54000800,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL1 = 0x54001000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL2 = 0x54002000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL3 = 0x54004000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I0 = 0x54008000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I1 = 0x54010000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I0 = 0x54020000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I1 = 0x54040000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_SKIP = 0x54080000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0 = 0x54100000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1 = 0x54200000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2 = 0x54400000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3 = 0x54800000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4 = 0x55000000,
-+
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY = 0x60000001,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR = 0x60000002,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_STBY = 0x60000004,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_LOWPWR = 0x60000008,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_STBY = 0x60000010,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_LOWPWR = 0x60000020,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM_LOWPWR = 0x60000040,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM2_LOWPWR = 0x60000080,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00 = 0x60000100,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01 = 0x60000200,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10 = 0x60000400,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11 = 0x60000800,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS = 0x60001000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS = 0x60002000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS = 0x60004000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS = 0x60008000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE00 = 0x60010000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE01 = 0x60020000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE10 = 0x60040000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE11 = 0x60080000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW20_DVS = 0x60100000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW21_DVS = 0x60200000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW22_DVS = 0x60400000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW23_DVS = 0x60800000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY = 0x61000000,
-+
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG0 = 0x68000001,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG1 = 0x68000002,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG2 = 0x68000004,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG3 = 0x68000008,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG4 = 0x68000010,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_EN = 0x68000020,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_MUX = 0x68000040,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_EN = 0x68000080,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_MUX = 0x68000100,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_EXT_MIC_MUX = 0x68000200,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON2 = 0x68000400,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON1 = 0x68000800,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1ID_TX = 0x68001000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1_CONFIG = 0x68002000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AHS_CONFIG = 0x68004000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A2_CONFIG = 0x68008000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_LOWPWR = 0x68080000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_STBY = 0x68100000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_V2_EN_2 = 0x68200000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG_PRI_ADJ = 0x68400000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ0 = 0x68800000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ1 = 0x69000000,
-+
-+ SSP_PCAP_ADJ_BIT_SYS_RST_CLR = 0x6c000001,
-+ SSP_PCAP_ADJ_BIT_SYS_RST_MODE0 = 0x6c000002,
-+ SSP_PCAP_ADJ_BIT_SYS_RST_MODE1 = 0x6c000004,
-+ SSP_PCAP_ADJ_BIT_SYS_VFLASH_0 = 0x6c000008,
-+ SSP_PCAP_ADJ_BIT_SYS_VFLASH_1 = 0x6c000010,
-+ SSP_PCAP_ADJ_BIT_SYS_MID_SELECT = 0x6c000020,
-+ SSP_PCAP_ADJ_BIT_SYS_MID_FET = 0x6c000040,
-+ SSP_PCAP_ADJ_BIT_SYS_MAIN_LOW = 0x6c000080,
-+ SSP_PCAP_ADJ_BIT_SYS_BATTFB_DIS = 0x6c000100,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG9 = 0x6c000200,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG10 = 0x6c000400,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG11 = 0x6c000800,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG12 = 0x6c001000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG13 = 0x6c002000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG14 = 0x6c004000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG15 = 0x6c008000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG16 = 0x6c010000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG17 = 0x6c020000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG18 = 0x6c040000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG19 = 0x6c080000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG20 = 0x6c100000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG21 = 0x6c200000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG22 = 0x6c400000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG23 = 0x6c800000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG24 = 0x6d000000
-+
-+}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE;
-+
-+/************************ FUNCTION PROTOTYPES **************************************/
-+extern void ssp_pcap_init(void);
-+extern void ssp_pcap_release(void);
-+
-+extern void ssp_pcap_open(SSP_PCAP_INIT_DRIVER_TYPE portType);
-+extern void ssp_pcap_close(void);
-+
-+extern void ssp_pcap_intoSleep_callBack(void);
-+extern void ssp_pcap_wakeUp_callBack(void);
-+
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_write_data_to_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,U32 ssp_pcap_register_value);
-+extern SSP_PCAP_STATUS SSP_PCAP_read_data_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,P_U32 p_ssp_pcap_register_value);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_bit_set(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_STATUS SSP_PCAP_bit_clean(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern U32 SSP_PCAP_get_register_value_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register ) ;
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_mode_set(TOUCH_SCREEN_DETECT_TYPE mode_Type );
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_start_XY_read(void);
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_get_XY_value(P_U16 p_x,P_U16 p_y);
-+extern SSP_PCAP_STATUS SSP_PCAP_CDC_CLK_set(PHONE_CDC_CLOCK_TYPE clkType);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_CDC_SR_set(ST_SAMPLE_RATE_TYPE srType);
-+extern SSP_PCAP_STATUS SSP_PCAP_BCLK_set(ST_BCLK_TIME_SLOT_TYPE bclkType);
-+extern SSP_PCAP_STATUS SSP_PCAP_STCLK_set(ST_CLK_TYPE stClkType);
-+extern SSP_PCAP_STATUS SSP_PCAP_DIG_AUD_FS_set(DIG_AUD_MODE_TYPE fsType);
-+extern SSP_PCAP_STATUS SSP_PCAP_AUDIG_set(U32 audioInGain);
-+extern SSP_PCAP_STATUS SSP_PCAP_MONO_set(MONO_TYPE monoType);
-+extern SSP_PCAP_STATUS SSP_PCAP_AUDOG_set(U32 audioOutGain);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_V_VIB_level_set(VibratorVoltageLevel_TYPE VIBLevelType);
-+extern SSP_PCAP_STATUS SSP_PCAP_configure_USB_UART_transeiver(SSP_PCAP_PORT_TYPE portType);
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_audio_in_status(void);
-+
-+/* for log */
-+extern void pcap_log_add_pure_data(u8* pData,u32 len);
-+extern void pcap_log_add_data(u8* pData,u32 len);
-+
-+/* screen lock on/off handler */
-+extern void ssp_pcap_screenlock_lock(u32 data);
-+extern void ssp_pcap_screenlock_unlock(u32 data);
-+
++/* driver configuration */
++#define PCAP_CS_AH (1 << 0) /* CS pin is active high */
++#define PCAP_MCI_SD (1 << 1) /* SD card slot */
++#define PCAP_MCI_TF (1 << 2) /* TF card slot */
++
++#define PCAP_REGISTER_WRITE_OP_BIT 0x80000000
++#define PCAP_REGISTER_READ_OP_BIT 0x00000000
++
++#define PCAP_REGISTER_VALUE_MASK 0x01ffffff
++#define PCAP_REGISTER_ADDRESS_MASK 0x7c000000
++#define PCAP_REGISTER_ADDRESS_SHIFT 26
++#define PCAP_REGISTER_NUMBER 32
++#define PCAP_CLEAR_INTERRUPT_REGISTER 0x01ffffff
++#define PCAP_MASK_ALL_INTERRUPT 0x01ffffff
++
++
++#define pbit(reg, bit) ((reg << PCAP_REGISTER_ADDRESS_SHIFT) | bit)
++
++/* registers acessible by both pcap ports */
++#define PCAP_REG_ISR 0x0 /* Interrupt Status */
++#define PCAP_REG_MSR 0x1 /* Interrupt Mask */
++#define PCAP_REG_PSTAT 0x2 /* Processor Status */
++#define PCAP_REG_VREG2 0x6 /* Regulator Bank 2 Control */
++#define PCAP_REG_AUXVREG 0x7 /* Auxiliary Regulator Control */
++#define PCAP_REG_BATT 0x8 /* Battery Control */
++#define PCAP_REG_ADC1 0x9 /* AD Control */
++#define PCAP_REG_ADC2 0xa /* AD Result */
++#define PCAP_REG_CODEC 0xb /* Audio Codec Control */
++#define PCAP_REG_RX_AMPS 0xc /* RX Audio Amplifiers Control */
++#define PCAP_REG_ST_DAC 0xd /* Stereo DAC Control */
++#define PCAP_REG_BUSCTRL 0x14 /* Connectivity Control */
++#define PCAP_REG_PERIPH 0x15 /* Peripheral Control */
++#define PCAP_REG_LOWPWR 0x18 /* Regulator Low Power Control */
++#define PCAP_REG_TX_AMPS 0x1a /* TX Audio Amplifiers Control */
++#define PCAP_REG_GP 0x1b /* General Purpose */
++
++/* registers acessible by pcap port 1 only (a1200, e2 & e6) */
++#define PCAP_REG_INT_SEL 0x3 /* Interrupt Select */
++#define PCAP_REG_SWCTRL 0x4 /* Switching Regulator Control */
++#define PCAP_REG_VREG1 0x5 /* Regulator Bank 1 Control */
++#define PCAP_REG_RTC_TOD 0xe /* RTC Time of Day */
++#define PCAP_REG_RTC_TODA 0xf /* RTC Time of Day Alarm */
++#define PCAP_REG_RTC_DAY 0x10 /* RTC Day */
++#define PCAP_REG_RTC_DAYA 0x11 /* RTC Day Alarm */
++#define PCAP_REG_MTRTMR 0x12 /* AD Monitor Timer */
++#define PCAP_REG_PWR 0x13 /* Power Control */
++#define PCAP_REG_AUXVREG_MASK 0x16 /* Auxiliary Regulator Mask */
++#define PCAP_REG_VENDOR_REV 0x17
++#define PCAP_REG_PERIPH_MASK 0x19 /* Peripheral Mask */
++
++/* interrupts - registers 0, 1, 2, 3 */
++#define PCAP_IRQ_ADCDONE (1 << 0) /* AD Conversion Done Port 1 */
++#define PCAP_IRQ_TS (1 << 1) /* Touch Screen */
++#define PCAP_IRQ_1HZ (1 << 2) /* 1HZ Timer */
++#define PCAP_IRQ_WH (1 << 3)
++#define PCAP_IRQ_WL (1 << 4)
++#define PCAP_IRQ_TODA (1 << 5)
++#define PCAP_IRQ_USB4V (1 << 6)
++#define PCAP_IRQ_ONOFF (1 << 7)
++#define PCAP_IRQ_ONOFF2 (1 << 8)
++#define PCAP_IRQ_USB1V (1 << 9)
++#define PCAP_IRQ_MOBPORT (1 << 10)
++#define PCAP_IRQ_MB2 (1 << 11) /* Mic */
++#define PCAP_IRQ_A1 (1 << 12) /* Audio jack */
++#define PCAP_IRQ_ST (1 << 13)
++#define PCAP_IRQ_PC (1 << 14)
++#define PCAP_IRQ_WARM (1 << 15)
++#define PCAP_IRQ_EOL (1 << 16)
++#define PCAP_IRQ_CLK (1 << 17)
++#define PCAP_IRQ_SYSRST (1 << 18)
++#define PCAP_IRQ_ADCDONE2 (1 << 20) /* AD Conversion Done Port 2 */
++#define PCAP_IRQ_SOFTRESET (1 << 21)
++#define PCAP_IRQ_MNEXB (1 << 22)
++
++#define PCAP_BIT_VREG2_V1_STBY pbit(PCAP_REG_VREG2, (1 << 0))
++#define PCAP_BIT_VREG2_V2_STBY pbit(PCAP_REG_VREG2, (1 << 1))
++#define PCAP_BIT_VREG2_V3_STBY pbit(PCAP_REG_VREG2, (1 << 2))
++#define PCAP_BIT_VREG2_V4_STBY pbit(PCAP_REG_VREG2, (1 << 3))
++#define PCAP_BIT_VREG2_V5_STBY pbit(PCAP_REG_VREG2, (1 << 4))
++#define PCAP_BIT_VREG2_V6_STBY pbit(PCAP_REG_VREG2, (1 << 5))
++#define PCAP_BIT_VREG2_V7_STBY pbit(PCAP_REG_VREG2, (1 << 6))
++#define PCAP_BIT_VREG2_V8_STBY pbit(PCAP_REG_VREG2, (1 << 7))
++#define PCAP_BIT_VREG2_V9_STBY pbit(PCAP_REG_VREG2, (1 << 8))
++#define PCAP_BIT_VREG2_V10_STBY pbit(PCAP_REG_VREG2, (1 << 9))
++#define PCAP_BIT_VREG2_V1_LOWPWR pbit(PCAP_REG_VREG2, (1 << 10))
++#define PCAP_BIT_VREG2_V2_LOWPWR pbit(PCAP_REG_VREG2, (1 << 11))
++#define PCAP_BIT_VREG2_V3_LOWPWR pbit(PCAP_REG_VREG2, (1 << 12))
++#define PCAP_BIT_VREG2_V4_LOWPWR pbit(PCAP_REG_VREG2, (1 << 13))
++#define PCAP_BIT_VREG2_V5_LOWPWR pbit(PCAP_REG_VREG2, (1 << 14))
++#define PCAP_BIT_VREG2_V6_LOWPWR pbit(PCAP_REG_VREG2, (1 << 15))
++#define PCAP_BIT_VREG2_V7_LOWPWR pbit(PCAP_REG_VREG2, (1 << 16))
++#define PCAP_BIT_VREG2_V8_LOWPWR pbit(PCAP_REG_VREG2, (1 << 17))
++#define PCAP_BIT_VREG2_V9_LOWPWR pbit(PCAP_REG_VREG2, (1 << 18))
++#define PCAP_BIT_VREG2_V10_LOWPWR pbit(PCAP_REG_VREG2, (1 << 19))
++
++#define PCAP_BIT_AUXVREG_VAUX1_EN pbit(PCAP_REG_AUXVREG, (1 << 1))
++#define PCAP_AUXVREG_VAUX1_MASK 0x0000000c
++#define PCAP_AUXVREG_VAUX1_SHIFT 2
++#define PCAP_BIT_AUXVREG_VAUX2_EN pbit(PCAP_REG_AUXVREG, (1 << 4))
++#define PCAP_AUXVREG_VAUX2_MASK 0x00000060
++#define PCAP_AUXVREG_VAUX2_SHIFT 5
++#define PCAP_BIT_AUXVREG_VAUX3_EN pbit(PCAP_REG_AUXVREG, (1 << 7))
++#define PCAP_AUXVREG_VAUX3_MASK 0x00000f00
++#define PCAP_AUXVREG_VAUX3_SHIFT 8
++#define PCAP_BIT_AUXVREG_VAUX4_EN pbit(PCAP_REG_AUXVREG, (1 << 12))
++#define PCAP_AUXVREG_VAUX4_MASK 0x00006000
++#define PCAP_AUXVREG_VAUX4_SHIFT 13
++#define PCAP_BIT_AUXVREG_VSIM2_EN pbit(PCAP_REG_AUXVREG, (1 << 16))
++#define PCAP_BIT_AUXVREG_VSIM_EN pbit(PCAP_REG_AUXVREG, (1 << 17))
++#define PCAP_BIT_AUXVREG_VSIM_0 pbit(PCAP_REG_AUXVREG, (1 << 18))
++#define PCAP_BIT_AUXVREG_V_VIB_EN pbit(PCAP_REG_AUXVREG, (1 << 19))
++#define PCAP_AUXVREG_V_VIB_MASK 0x00300000
++#define PCAP_AUXVREG_V_VIB_SHIFT 20
++#define PCAP_BIT_AUXVREG_VAUX1_STBY pbit(PCAP_REG_AUXVREG, (1 << 22))
++#define PCAP_BIT_AUXVREG_VAUX1_LOWPWR pbit(PCAP_REG_AUXVREG, (1 << 23))
++#define PCAP_BIT_AUXVREG_SW3_STBY pbit(PCAP_REG_AUXVREG, (1 << 24))
++
++#define PCAP_BATT_DAC_MASK 0x000000ff
++#define PCAP_BATT_DAC_SHIFT 0
++#define PCAP_BIT_BATT_B_FDBK pbit(PCAP_REG_BATT, (1 << 8))
++#define PCAP_BIT_BATT_EXT_ISENSE pbit(PCAP_REG_BATT, (1 << 9))
++#define PCAP_BATT_V_COIN_MASK 0x00003c00
++#define PCAP_BATT_V_COIN_SHIFT 10
++#define PCAP_BIT_BATT_I_COIN pbit(PCAP_REG_BATT, (1 << 14))
++#define PCAP_BIT_BATT_COIN_CH_EN pbit(PCAP_REG_BATT, (1 << 15))
++#define PCAP_BATT_EOL_SEL_MASK 0x000e0000
++#define PCAP_BATT_EOL_SEL_SHIFT 17
++#define PCAP_BIT_BATT_EOL_CMP_EN pbit(PCAP_REG_BATT, (1 << 20))
++#define PCAP_BIT_BATT_BATT_DET_EN pbit(PCAP_REG_BATT, (1 << 21))
++#define PCAP_BIT_BATT_THERMBIAS_CTRL pbit(PCAP_REG_BATT, (1 << 22))
++
++#define PCAP_BIT_ADC1_ADEN pbit(PCAP_REG_ADC1, (1 << 0))
++#define PCAP_BIT_ADC1_RAND pbit(PCAP_REG_ADC1, (1 << 1))
++#define PCAP_BIT_ADC1_AD_SEL1 pbit(PCAP_REG_ADC1, (1 << 2))
++#define PCAP_BIT_ADC1_AD_SEL2 pbit(PCAP_REG_ADC1, (1 << 3))
++#define PCAP_ADC1_ADA1_MASK 0x00000070
++#define PCAP_ADC1_ADA1_SHIFT 4
++#define PCAP_ADC1_ADA2_MASK 0x00000380
++#define PCAP_ADC1_ADA2_SHIFT 7
++#define PCAP_ADC1_ATO_MASK 0x00003c00
++#define PCAP_ADC1_ATO_SHIFT 10
++#define PCAP_BIT_ADC1_ATOX pbit(PCAP_REG_ADC1, (1 << 14))
++#define PCAP_BIT_ADC1_MTR1 pbit(PCAP_REG_ADC1, (1 << 15))
++#define PCAP_BIT_ADC1_MTR2 pbit(PCAP_REG_ADC1, (1 << 16))
++#define PCAP_ADC1_TS_M_MASK 0x000e0000
++#define PCAP_ADC1_TS_M_SHIFT 17
++#define PCAP_BIT_ADC1_TS_REF_LOWPWR pbit(PCAP_REG_ADC1, (1 << 20))
++#define PCAP_BIT_ADC1_TS_REFENB pbit(PCAP_REG_ADC1, (1 << 21))
++#define PCAP_BIT_ADC1_BATT_I_POLARITY pbit(PCAP_REG_ADC1, (1 << 22))
++#define PCAP_BIT_ADC1_BATT_I_ADC pbit(PCAP_REG_ADC1, (1 << 23))
++
++#define PCAP_ADC2_ADD1_MASK 0x000003ff
++#define PCAP_ADC2_ADD1_SHIFT 0
++#define PCAP_ADC2_ADD2_MASK 0x000ffc00
++#define PCAP_ADC2_ADD2_SHIFT 10
++#define PCAP_BIT_ADC2_ADINC1 pbit(PCAP_REG_ADC2, (1 << 20))
++#define PCAP_BIT_ADC2_ADINC2 pbit(PCAP_REG_ADC2, (1 << 21))
++#define PCAP_BIT_ADC2_ASC pbit(PCAP_REG_ADC2, (1 << 22))
++
++#define PCAP_BIT_BUSCTRL_FSENB 0x50000001
++#define PCAP_BIT_BUSCTRL_USB_SUSPEND 0x50000002
++#define PCAP_BIT_BUSCTRL_USB_PU 0x50000004
++#define PCAP_BIT_BUSCTRL_USB_PD 0x50000008
++#define PCAP_BIT_BUSCTRL_VUSB_EN 0x50000010
++#define PCAP_BIT_BUSCTRL_USB_PS 0x50000020
++#define PCAP_BIT_BUSCTRL_VUSB_MSTR_EN 0x50000040
++#define PCAP_BIT_BUSCTRL_VBUS_PD_ENB 0x50000080
++#define PCAP_BIT_BUSCTRL_CURRLIM 0x50000100
++#define PCAP_BIT_BUSCTRL_RS232ENB 0x50000200
++#define PCAP_BIT_BUSCTRL_RS232_DIR 0x50000400
++#define PCAP_BIT_BUSCTRL_SE0_CONN 0x50000800
++#define PCAP_BIT_BUSCTRL_USB_PDM 0x50001000
++#define PCAP_BIT_BUSCTRL_BUS_PRI_ADJ 0x51000000
++
++#define PCAP_BIT_PERIPH_BL_CTRL0 0x54000001
++#define PCAP_BIT_PERIPH_BL_CTRL1 0x54000002
++#define PCAP_BIT_PERIPH_BL_CTRL2 0x54000004
++#define PCAP_BIT_PERIPH_BL_CTRL3 0x54000008
++#define PCAP_BIT_PERIPH_BL_CTRL4 0x54000010
++#define PCAP_BIT_PERIPH_LEDR_EN 0x54000020
++#define PCAP_BIT_PERIPH_LEDG_EN 0x54000040
++#define PCAP_BIT_PERIPH_LEDR_CTRL0 0x54000080
++#define PCAP_BIT_PERIPH_LEDR_CTRL1 0x54000100
++#define PCAP_BIT_PERIPH_LEDR_CTRL2 0x54000200
++#define PCAP_BIT_PERIPH_LEDR_CTRL3 0x54000400
++#define PCAP_BIT_PERIPH_LEDG_CTRL0 0x54000800
++#define PCAP_BIT_PERIPH_LEDG_CTRL1 0x54001000
++#define PCAP_BIT_PERIPH_LEDG_CTRL2 0x54002000
++#define PCAP_BIT_PERIPH_LEDG_CTRL3 0x54004000
++#define PCAP_BIT_PERIPH_LEDR_I0 0x54008000
++#define PCAP_BIT_PERIPH_LEDR_I1 0x54010000
++#define PCAP_BIT_PERIPH_LEDG_I0 0x54020000
++#define PCAP_BIT_PERIPH_LEDG_I1 0x54040000
++#define PCAP_BIT_PERIPH_SKIP 0x54080000
++#define PCAP_BIT_PERIPH_BL2_CTRL0 0x54100000
++#define PCAP_BIT_PERIPH_BL2_CTRL1 0x54200000
++#define PCAP_BIT_PERIPH_BL2_CTRL2 0x54400000
++#define PCAP_BIT_PERIPH_BL2_CTRL3 0x54800000
++#define PCAP_BIT_PERIPH_BL2_CTRL4 0x55000000
++
++#define PCAP_BIT_LOWPWR_VAUX2_STBY 0x60000001
++#define PCAP_BIT_LOWPWR_VAUX2_LOWPWR 0x60000002
++#define PCAP_BIT_LOWPWR_VAUX3_STBY 0x60000004
++#define PCAP_BIT_LOWPWR_VAUX3_LOWPWR 0x60000008
++#define PCAP_BIT_LOWPWR_VAUX4_STBY 0x60000010
++#define PCAP_BIT_LOWPWR_VAUX4_LOWPWR 0x60000020
++#define PCAP_BIT_LOWPWR_VSIM_LOWPWR 0x60000040
++#define PCAP_BIT_LOWPWR_VSIM2_LOWPWR 0x60000080
++#define PCAP_BIT_LOWPWR_SW1_MODE00 0x60000100
++#define PCAP_BIT_LOWPWR_SW1_MODE01 0x60000200
++#define PCAP_BIT_LOWPWR_SW1_MODE10 0x60000400
++#define PCAP_BIT_LOWPWR_SW1_MODE11 0x60000800
++#define PCAP_BIT_LOWPWR_SW10_DVS 0x60001000
++#define PCAP_BIT_LOWPWR_SW11_DVS 0x60002000
++#define PCAP_BIT_LOWPWR_SW12_DVS 0x60004000
++#define PCAP_BIT_LOWPWR_SW13_DVS 0x60008000
++#define PCAP_BIT_LOWPWR_SW2_MODE00 0x60010000
++#define PCAP_BIT_LOWPWR_SW2_MODE01 0x60020000
++#define PCAP_BIT_LOWPWR_SW2_MODE10 0x60040000
++#define PCAP_BIT_LOWPWR_SW2_MODE11 0x60080000
++#define PCAP_BIT_LOWPWR_SW20_DVS 0x60100000
++#define PCAP_BIT_LOWPWR_SW21_DVS 0x60200000
++#define PCAP_BIT_LOWPWR_SW22_DVS 0x60400000
++#define PCAP_BIT_LOWPWR_SW23_DVS 0x60800000
++#define PCAP_BIT_LOWPWR_VC_STBY 0x61000000
++
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++extern int ezx_pcap_bit_get(u_int32_t);
++extern void ezx_pcap_vibrator_level(u_int32_t);
+#endif
Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-06-03 02:17:12.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-06-03 11:14:40.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-08-31 22:28:17.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-08-31 22:34:36.000000000 -0300
+@@ -85,7 +85,7 @@
+ * within sensible limits.
+ */
+ #define IRQ_BOARD_START (IRQ_GPIO(PXA_LAST_GPIO) + 1)
+-#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
++#define IRQ_BOARD_END (IRQ_BOARD_START + 22)
+
+ #define IRQ_SA1111_START (IRQ_BOARD_END)
+ #define IRQ_GPAIN0 (IRQ_BOARD_END + 0)
@@ -176,7 +176,8 @@
#define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
#elif defined(CONFIG_ARCH_LUBBOCK) || \
@@ -1159,7 +791,7 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
#define NR_IRQS (IRQ_BOARD_END)
#else
#define NR_IRQS (IRQ_BOARD_START)
-@@ -222,3 +223,13 @@
+@@ -222,3 +223,28 @@
#define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1)
#define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2)
#define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3)
@@ -1173,65 +805,39 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
+#define EZX_IRQ_ADCDONE EZX_IRQ(4)
+#define EZX_IRQ_TS EZX_IRQ(5) /* TS touch */
+#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* TS x/y ADC ready */
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-03 11:14:40.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-09 14:57:44.000000000 -0300
-@@ -131,11 +131,30 @@
- .resource = ezxbp_resources,
- };
-
-+/* PCAP */
-+static struct resource ezxpcap_resources[] = {
-+ [0] = {
-+ .start = IRQ_GPIO1,
-+ .end = IRQ_GPIO1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device ezxpcap_device = {
-+ .name = "ezx-pcap",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxssp_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(ezxpcap_resources),
-+ .resource = ezxpcap_resources,
-+};
-
-
- static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
- &ezxbp_device,
-+ &ezxpcap_device,
- };
-
- /* PM */
++#define EZX_IRQ_WH EZX_IRQ(7)
++#define EZX_IRQ_WL EZX_IRQ(8)
++#define EZX_IRQ_ONOFF EZX_IRQ(9)
++#define EZX_IRQ_ONOFF2 EZX_IRQ(10)
++#define EZX_IRQ_MOBPORT EZX_IRQ(11)
++#define EZX_IRQ_TODA EZX_IRQ(12)
++#define EZX_IRQ_1HZ EZX_IRQ(13)
++#define EZX_IRQ_MNEXB EZX_IRQ(14)
++#define EZX_IRQ_ST EZX_IRQ(15)
++#define EZX_IRQ_PC EZX_IRQ(16)
++#define EZX_IRQ_SYSRST EZX_IRQ(17)
++#define EZX_IRQ_SOFTRESET EZX_IRQ(18)
++#define EZX_IRQ_EOL EZX_IRQ(19)
++#define EZX_IRQ_CLK EZX_IRQ(20)
++#define EZX_IRQ_WARM EZX_IRQ(21)
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-03 11:14:40.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-09 14:57:46.000000000 -0300
-@@ -105,6 +105,15 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-08-31 22:33:05.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-07 11:06:01.000000000 -0300
+@@ -105,6 +105,9 @@
config EZX_BP
bool "BP Control code for EZX Platform"
+config EZX_PCAP
+ bool "PCAP Support"
+
-+config EZX_MCI_SD
-+ bool
-+
-+config EZX_MCI_TF
-+ bool
-+
endif
endmenu
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-03 11:14:40.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-09 14:57:44.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-08-31 22:33:05.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-07 11:06:01.000000000 -0300
@@ -25,6 +25,7 @@
obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
index 85b6f5c15d..ff3413f062 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-05-08 16:29:23.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-05-08 16:29:36.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-06-28 19:44:28.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-06-28 19:44:58.000000000 -0300
@@ -22,6 +22,10 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/ohci.h>
@@ -29,8 +29,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
}
Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-05-08 16:29:23.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-05-08 16:29:36.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-06-28 19:44:28.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-06-28 19:44:58.000000000 -0300
@@ -24,6 +24,10 @@
#include <asm/arch/lubbock.h>
#include <asm/mach/time.h>
@@ -58,17 +58,17 @@ Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-08 16:29:36.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 16:32:56.000000000 -0300
-@@ -18,6 +18,7 @@
- #include <asm/arch/pxafb.h>
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-28 19:44:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-28 19:44:58.000000000 -0300
+@@ -19,6 +19,7 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/ohci.h>
+ #include <asm/arch/ezx.h>
+#include <asm/arch/system.h>
#include "generic.h"
- #include "ezx.h"
-@@ -137,8 +138,69 @@
+
+@@ -122,8 +123,69 @@
&ezxbp_device,
};
@@ -137,4 +137,4 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
CKEN = CKEN9_OSTIMER | CKEN22_MEMC;
- ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
+ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch b/packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch
new file mode 100644
index 0000000000..bd69e38bd7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch
@@ -0,0 +1,15 @@
+Index: linux-2.6.21/drivers/i2c/i2c-core.c
+===================================================================
+--- linux-2.6.21.orig/drivers/i2c/i2c-core.c 2007-08-20 21:59:45.000000000 +0800
++++ linux-2.6.21/drivers/i2c/i2c-core.c 2007-08-20 22:03:12.000000000 +0800
+@@ -365,8 +365,10 @@
+ list_for_each(item,&adapters) {
+ adapter = list_entry(item, struct i2c_adapter, list);
+ driver->attach_adapter(adapter);
++ goto out; // Alex added for fix the bug otherwise system will be crashed. FIXME
+ }
+ }
++out:
+
+ mutex_unlock(&core_lists);
+ return 0;
diff --git a/packages/linux/linux-ezx-2.6.21/patches/index.html b/packages/linux/linux-ezx-2.6.21/patches/index.html
new file mode 100644
index 0000000000..4d57380e0c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/index.html
@@ -0,0 +1,60 @@
+<html><head><title>Revision 2047: /trunk/src/kernel-2.6/patches</title></head>
+<body>
+ <h2>Revision 2047: /trunk/src/kernel-2.6/patches</h2>
+ <ul>
+ <li><a href="../">..</a></li>
+ <li><a href="Makefile.OpenEZX">Makefile.OpenEZX</a></li>
+ <li><a href="a1200-mci.patch">a1200-mci.patch</a></li>
+ <li><a href="a1200-pcap.patch">a1200-pcap.patch</a></li>
+ <li><a href="a1200-ts.patch">a1200-ts.patch</a></li>
+ <li><a href="a780-emu.patch">a780-emu.patch</a></li>
+ <li><a href="a780-flip.patch">a780-flip.patch</a></li>
+ <li><a href="a780-kbd.patch">a780-kbd.patch</a></li>
+ <li><a href="a780-leds.patch">a780-leds.patch</a></li>
+ <li><a href="a780-mci.patch">a780-mci.patch</a></li>
+ <li><a href="a780-pcap.patch">a780-pcap.patch</a></li>
+ <li><a href="a780-ts.patch">a780-ts.patch</a></li>
+ <li><a href="a780-vibrator.patch">a780-vibrator.patch</a></li>
+ <li><a href="asoc-pxa-ssp.patch">asoc-pxa-ssp.patch</a></li>
+ <li><a href="defconfig-a1200">defconfig-a1200</a></li>
+ <li><a href="defconfig-a780">defconfig-a780</a></li>
+ <li><a href="defconfig-e2">defconfig-e2</a></li>
+ <li><a href="defconfig-e6">defconfig-e6</a></li>
+ <li><a href="defconfig-e680">defconfig-e680</a></li>
+ <li><a href="dmesg-a780.log">dmesg-a780.log</a></li>
+ <li><a href="e680-emu.patch">e680-emu.patch</a></li>
+ <li><a href="e680-kbd.patch">e680-kbd.patch</a></li>
+ <li><a href="e680-leds.patch">e680-leds.patch</a></li>
+ <li><a href="e680-locksw.patch">e680-locksw.patch</a></li>
+ <li><a href="e680-mci.patch">e680-mci.patch</a></li>
+ <li><a href="e680-pcap.patch">e680-pcap.patch</a></li>
+ <li><a href="e680-ts.patch">e680-ts.patch</a></li>
+ <li><a href="ezx-asoc.patch">ezx-asoc.patch</a></li>
+ <li><a href="ezx-backlight.patch">ezx-backlight.patch</a></li>
+ <li><a href="ezx-bp.patch">ezx-bp.patch</a></li>
+ <li><a href="ezx-core.patch">ezx-core.patch</a></li>
+ <li><a href="ezx-emu.patch">ezx-emu.patch</a></li>
+ <li><a href="ezx-enable-stuart.patch">ezx-enable-stuart.patch</a></li>
+ <li><a href="ezx-mtd-map.patch">ezx-mtd-map.patch</a></li>
+ <li><a href="ezx-pcap.patch">ezx-pcap.patch</a></li>
+ <li><a href="ezx-pm.patch">ezx-pm.patch</a></li>
+ <li><a href="ezx-serial-bug-workaround.patch">ezx-serial-bug-workaround.patch</a></li>
+ <li><a href="mux-fix-init-errorpath.patch">mux-fix-init-errorpath.patch</a></li>
+ <li><a href="mux-fix-makefile.patch">mux-fix-makefile.patch</a></li>
+ <li><a href="mux-fix-tty-driver.patch">mux-fix-tty-driver.patch</a></li>
+ <li><a href="mux-fix.patch">mux-fix.patch</a></li>
+ <li><a href="mux-ifdef-ezx-features.patch">mux-ifdef-ezx-features.patch</a></li>
+ <li><a href="mux-linux-2.6.21-fix.patch">mux-linux-2.6.21-fix.patch</a></li>
+ <li><a href="mux-remove-flipbuffers.patch">mux-remove-flipbuffers.patch</a></li>
+ <li><a href="mux-remove-get_halted_bit.patch">mux-remove-get_halted_bit.patch</a></li>
+ <li><a href="mux-remove-usbh_finished_resume.patch">mux-remove-usbh_finished_resume.patch</a></li>
+ <li><a href="mux_cli.patch">mux_cli.patch</a></li>
+ <li><a href="mux_debug.patch">mux_debug.patch</a></li>
+ <li><a href="patch-2.6.21.4">patch-2.6.21.4</a></li>
+ <li><a href="pcap-ts.patch">pcap-ts.patch</a></li>
+ <li><a href="pxa-kbd.patch">pxa-kbd.patch</a></li>
+ <li><a href="pxa27x-udc-support.2.patch">pxa27x-udc-support.2.patch</a></li>
+ <li><a href="series">series</a></li>
+ </ul>
+ <hr noshade><em>Powered by <a href="http://subversion.tigris.org/">Subversion</a> version 1.1.4 (r13838).</em>
+</body></html> \ No newline at end of file
diff --git a/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch b/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch
new file mode 100644
index 0000000000..89a8402681
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch
@@ -0,0 +1,41 @@
+--- /tmp/cacheflush.h 2007-09-10 15:22:58.188856413 +0200
++++ linux-2.6.21/include/asm-arm/cacheflush.h 2007-09-10 15:23:14.009757994 +0200
+@@ -418,6 +418,14 @@
+ */
+ #define flush_icache_page(vma,page) do { } while (0)
+
++inline static void flush_ioremap_region(unsigned long phys, void __iomem *virt,
++ unsigned offset, size_t size)
++{
++ const void *start = virt + offset;
++ dmac_inv_range(start, start + size);
++}
++
++
+ #define __cacheid_present(val) (val != read_cpuid(CPUID_ID))
+ #define __cacheid_vivt(val) ((val & (15 << 25)) != (14 << 25))
+ #define __cacheid_vipt(val) ((val & (15 << 25)) == (14 << 25))
+--- /tmp/ezx-flash.c 2007-09-10 15:22:58.192856640 +0200
++++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-09-10 15:23:24.878377362 +0200
+@@ -21,6 +21,8 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/slab.h>
+
++#include <asm/cacheflush.h>
++
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/map.h>
+ #include <linux/mtd/partitions.h>
+@@ -51,11 +53,10 @@
+ "sub pc, pc #4"
+ :"=r"(j));
+ #else
+- consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
++ flush_ioremap_region(map->phys, map->cached, from, len);
+ #endif
+ }
+
+-
+ struct map_info pxa27x_map = {
+ .name = "PXA27x flash",
+ .size = WINDOW_SIZE,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch
index 28b9c557d3..40ed7f4605 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-06-02 20:17:58.000000000 -0300
-+++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-06-02 20:18:40.000000000 -0300
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-08-31 22:27:48.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-08-31 23:06:39.000000000 -0300
@@ -164,4 +164,13 @@
To compile this driver as a module, choose M here: the
module will be called ucb1400_ts.
@@ -19,8 +19,8 @@ Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-06-02 20:19:39.000000000 -0300
-@@ -0,0 +1,372 @@
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-08-31 23:57:56.000000000 -0300
+@@ -0,0 +1,331 @@
+/*
+ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
+ * in the EZX phone platform.
@@ -58,23 +58,21 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+#define DEBUGP(x, args ...)
+#endif
+
-+#define PRESSURE 1
-+#define COORDINATE 2
-+#define STANDBY 3
-+
-+extern int ezx_pcap_read(u_int8_t, u_int32_t *);
-+extern int ezx_pcap_write(u_int8_t, u_int32_t);
-+extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
++#define POSITION_X_MEASUREMENT 0
++#define POSITION_XY_MEASUREMENT 1
++#define PRESSURE_MEASUREMENT 2
++#define PLATE_X_MEASUREMENT 3
++#define PLATE_Y_MEASUREMENT 4
++#define STANDBY_MODE 5
++#define NONTS_MODE 6
+
+struct pcap_ts {
+ int irq_xy;
+ int irq_touch;
+ struct input_dev *input;
+ struct timer_list timer;
-+
+ u_int16_t x, y;
+ u_int16_t pressure;
-+
+ u_int8_t read_state;
+};
+
@@ -91,27 +89,31 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+#define SAMPLE_INTERVAL (HZ/50)
+
+
-+static void pcap_ts_mode(u_int32_t mode)
++static void pcap_ts_mode(struct pcap_ts *pcap_ts, u_int32_t mode)
+{
+ u_int32_t tmp;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
-+ tmp |= mode;
-+ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ pcap_ts->read_state = mode;
++ ezx_pcap_read(PCAP_REG_ADC1, &tmp);
++ tmp &= ~PCAP_ADC1_TS_M_MASK;
++ tmp |= ((mode << PCAP_ADC1_TS_M_SHIFT) & PCAP_ADC1_TS_M_MASK);
++ ezx_pcap_write(PCAP_REG_ADC1, tmp);
+}
+
-+/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE interrupt
+ * once the result of the conversion is available */
+static void pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
+{
+ u_int32_t tmp;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
-+ tmp |= SSP_PCAP_ADC_START_VALUE;
-+ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++ ezx_pcap_read(PCAP_REG_ADC1, &tmp);
++ tmp &= ~(PCAP_BIT_ADC1_RAND | PCAP_ADC1_ADA1_MASK |
++ PCAP_ADC1_ADA2_MASK);
++ tmp |= (PCAP_BIT_ADC1_ADEN | PCAP_BIT_ADC1_AD_SEL1 |
++ PCAP_BIT_ADC1_AD_SEL2 | (5 << PCAP_ADC1_ADA1_SHIFT) |
++ (3 << PCAP_ADC1_ADA2_SHIFT));
++ ezx_pcap_write(PCAP_REG_ADC1, tmp);
++ ezx_pcap_bit_set(PCAP_BIT_ADC2_ASC, 1);
+}
+
+/* read the XY result from the ADC of PCAP2 */
@@ -119,17 +121,17 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+{
+ u_int32_t tmp;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++ ezx_pcap_read(PCAP_REG_ADC2, &tmp);
+
-+ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
-+ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
-+ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
-+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ if (pcap_ts->read_state == POSITION_XY_MEASUREMENT) {
++ pcap_ts->x = (tmp & PCAP_ADC2_ADD1_MASK) >>
++ PCAP_ADC2_ADD1_SHIFT;
++ pcap_ts->y = (tmp & PCAP_ADC2_ADD2_MASK) >>
++ PCAP_ADC2_ADD2_SHIFT;
+ } else {
-+ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
-+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ pcap_ts->pressure = (tmp & PCAP_ADC2_ADD2_MASK) >>
++ PCAP_ADC2_ADD2_SHIFT;
+ }
-+
+}
+
+/* PCAP2 interrupts us when ADC conversion result is available */
@@ -139,11 +141,10 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+
+ pcap_ts_get_xy_value(pcap_ts);
+ DEBUGP(KERN_DEBUG "%s X=%4d, Y=%4d Z=%4d ",
-+ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
-+ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
-+
++ pcap_ts->read_state == POSITION_XY_MEASUREMENT ? "COORD" :
++ "PRESS", pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
+ switch (pcap_ts->read_state) {
-+ case PRESSURE:
++ case PRESSURE_MEASUREMENT:
+ if (pcap_ts->pressure >= PRESSURE_MAX ||
+ pcap_ts->pressure <= PRESSURE_MIN ) {
+ /* pen has been released (or cant read pressure - WM)*/
@@ -156,11 +157,10 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
+ }
+ /* switch state machine into coordinate read mode */
-+ pcap_ts->read_state = COORDINATE;
-+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
++ pcap_ts_mode(pcap_ts, POSITION_XY_MEASUREMENT);
+ pcap_ts_start_xy_read(pcap_ts);
+ break;
-+ case COORDINATE:
++ case POSITION_XY_MEASUREMENT:
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+ /* pen has been released */
@@ -175,17 +175,15 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+
+ /* ask PCAP2 to interrupt us if touch event happens
+ * again */
-+ pcap_ts->read_state = STANDBY;
-+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ pcap_ts_mode(pcap_ts, STANDBY_MODE);
++ enable_irq(pcap_ts->irq_touch);
+ } else {
+ DEBUGP("DOWN\n");
+ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
+ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
+
+ /* switch back to pressure read mode */
-+ pcap_ts->read_state = PRESSURE;
-+ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts_mode(pcap_ts, PRESSURE_MEASUREMENT);
+ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
+ }
+ input_sync(pcap_ts->input);
@@ -194,7 +192,6 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+ DEBUGP("ERROR\n");
+ break;
+ }
-+
+ return IRQ_HANDLED;
+}
+
@@ -202,17 +199,14 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id)
+{
+ struct pcap_ts *pcap_ts = dev_id;
-+
+ /* mask Touchscreen interrupt bit, prevents further touch events
+ * from being reported to us until we're finished with reading
+ * both pressure and x/y from ADC */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++ disable_irq(pcap_ts->irq_touch);
+
+ DEBUGP("touched!!\n");
-+ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
-+ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(pcap_ts, PRESSURE_MEASUREMENT);
+ pcap_ts_start_xy_read(pcap_ts);
-+
+ return IRQ_HANDLED;
+}
+
@@ -225,8 +219,6 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+
+static int __init ezxts_probe(struct platform_device *pdev)
+{
-+ int ret;
-+ u_int32_t tmp;
+ struct pcap_ts *pcap_ts;
+ struct input_dev *input_dev;
+ int err = -ENOMEM;
@@ -248,35 +240,8 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+ goto fail;
+ }
+
-+ // Some initialization before done in ssp_pcap_open()
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
-+ // ack interrupts
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
-+ // unmask interrupts
-+ // ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
-+ // set adc bits? FIXME I dont think its necessary - WM
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
-+
-+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
-+ tmp |= PCAP_TS_STANDBY_MODE;
-+
-+ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
-+ if (ret < 0)
-+ return ret;
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REFENB, 0);
++ pcap_ts_mode(pcap_ts, STANDBY_MODE);
+
+ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
+ "pcap-ts X/Y", pcap_ts);
@@ -301,12 +266,6 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+
+ platform_set_drvdata(pdev, pcap_ts);
+
-+ pcap_ts->read_state = STANDBY;
-+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
-+
-+ /* enable pressure interrupt */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+
+ input_dev->name = "pcap-touchscreen";
+ input_dev->phys = "ezxts/input0";
+ input_dev->id.bustype = BUS_HOST;
@@ -353,15 +312,15 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+
+static int ezxts_suspend(struct platform_device *dev, pm_message_t state)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REF_LOWPWR, 1);
+ return 0;
+}
+
+static int ezxts_resume(struct platform_device *dev)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_ADC1_TS_REF_LOWPWR, 0);
+ /* just in case we suspend with TSI masked. */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++// ezx_pcap_bit_set(PCAP_BIT_MSR_TSM, 0);
+ return 0;
+}
+
@@ -395,8 +354,8 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/drivers/input/touchscreen/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-06-02 20:17:58.000000000 -0300
-+++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-06-02 20:18:40.000000000 -0300
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-08-31 22:27:48.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-08-31 23:06:39.000000000 -0300
@@ -16,3 +16,4 @@
obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch
new file mode 100644
index 0000000000..9ee87ff903
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch
@@ -0,0 +1,35 @@
+Index: linux-2.6.21/drivers/usb/gadget/ether.c
+===================================================================
+--- linux-2.6.21.orig/drivers/usb/gadget/ether.c 2007-08-20 22:05:12.000000000 +0800
++++ linux-2.6.21/drivers/usb/gadget/ether.c 2007-08-20 22:06:25.000000000 +0800
+@@ -2697,10 +2697,16 @@
+ MODULE_LICENSE ("GPL");
+
+
+-static int __init init (void)
++// Alex add FIXME
++int usb_ether_init (void)
+ {
+ return usb_gadget_register_driver (&eth_driver);
+ }
++
++static int __init init (void)
++{
++// return usb_gadget_register_driver (&eth_driver);
++}
+ module_init (init);
+
+ static void __exit cleanup (void)
+Index: linux-2.6.21/drivers/usb/gadget/pxa27x_udc.c
+===================================================================
+--- linux-2.6.21.orig/drivers/usb/gadget/pxa27x_udc.c 2007-08-20 22:07:31.000000000 +0800
++++ linux-2.6.21/drivers/usb/gadget/pxa27x_udc.c 2007-08-20 22:07:47.000000000 +0800
+@@ -2227,6 +2227,8 @@
+ udc_init_ep(udc);
+ udc_reinit(udc);
+
++ usb_ether_init(); // Alex add FIXME
++
+ /* irq setup after old hardware state is cleaned up */
+ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
+ SA_INTERRUPT, driver_name, udc);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/series b/packages/linux/linux-ezx-2.6.21/patches/series
index 5580b74bf8..ecdc30b5fe 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/series
+++ b/packages/linux/linux-ezx-2.6.21/patches/series
@@ -20,10 +20,11 @@ ezx-pm.patch
ezx-pcap.patch
# ezx-pcap TODO:
-# implement a per board init reg array
-# move mmc functions to the ezx-phone.c mmc init
# move vibrator level function to the vibrator driver
+a780-pcap.patch
+e680-pcap.patch
+a1200-pcap.patch
a780-mci.patch
e680-mci.patch
@@ -36,6 +37,9 @@ ezx-emu.patch
# userspace interface for controling emu
# read adc to find which accessory is plugged
+a780-emu.patch
+e680-emu.patch
+
ezx-mtd-map.patch
# ezx-mtd-map TODO:
# at least the original partition should go on the ezx-phone.c file
@@ -89,5 +93,5 @@ mux-linux-2.6.21-fix.patch
# pxa-ohci, ts0710_mux, ts0710_mux_usb, ezx-bp
# incomplete
-#asoc-pxa-ssp.patch
-#ezx-asoc.patch
+asoc-pxa-ssp.patch
+ezx-asoc.patch
diff --git a/packages/linux/linux-ezx-2.6.21/rokre2/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/rokre2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/rokre2/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/rokre2/defconfig b/packages/linux/linux-ezx-2.6.21/rokre2/defconfig
new file mode 100755
index 0000000000..d4a6e25c00
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/rokre2/defconfig
@@ -0,0 +1,1582 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 16:52:11 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=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_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# 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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+CONFIG_PXA_EZX_E2=y
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+CONFIG_EZX_BP=y
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# 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=m
+# 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_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO 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_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+CONFIG_CONNECTOR=m
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_E2 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# Wan interfaces
+#
+# 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=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+CONFIG_SHAPER=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# 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_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH 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_UCB1400 is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# 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_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX 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_W9968CF 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
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_EZX=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# 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
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+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
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_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
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# 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_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD 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_PHIDGET 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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 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_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+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_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+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=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+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
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/rokre6/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/rokre6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/rokre6/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e6 b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
index 75ee2803d9..8a1f55c252 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e6
+++ b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Wed Jun 13 17:29:19 2007
+# Sun Sep 9 16:52:39 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -151,9 +150,12 @@ CONFIG_PXA_EZX=y
# CONFIG_PXA_EZX_E2 is not set
# CONFIG_PXA_EZX_A1200 is not set
CONFIG_PXA_EZX_E6=y
-# CONFIG_EZX_BP is not set
+CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-# CONFIG_EZX_EMU is not set
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
CONFIG_PXA27x=y
CONFIG_PXA_SSP=y
@@ -194,7 +196,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -211,11 +213,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -224,6 +226,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -253,6 +257,10 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -262,15 +270,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# 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_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -279,11 +287,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -315,6 +467,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -322,8 +475,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 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_HCIUSB is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -345,7 +525,101 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_E2 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
#
# Parallel port support
@@ -362,10 +636,13 @@ CONFIG_CONNECTOR=m
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -411,7 +688,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -437,7 +714,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -450,11 +736,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -558,6 +844,8 @@ CONFIG_HW_RANDOM=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
#
# I2C support
@@ -654,7 +942,50 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# 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_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX 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_W9968CF 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
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -667,8 +998,8 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_EZX is not set
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
@@ -712,12 +1043,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -879,7 +1277,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -905,7 +1330,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -917,6 +1346,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -924,7 +1354,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -942,7 +1373,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -957,6 +1389,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -967,24 +1400,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1085,7 +1520,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1097,6 +1573,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y