summaryrefslogtreecommitdiff
path: root/packages/linux/unslung-kernel
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2005-06-30 08:19:37 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-06-30 08:19:37 +0000
commitc8e5702127e507e82e6f68a4b8c546803accea9d (patch)
tree00583491f40ecc640f2b28452af995e3a63a09d7 /packages/linux/unslung-kernel
parent87ec8ca4d2e2eb4d1c1e1e1a6b46a395d56805b9 (diff)
import clean BK tree at cset 1.3670
Diffstat (limited to 'packages/linux/unslung-kernel')
-rw-r--r--packages/linux/unslung-kernel/.mtn2git_empty0
-rw-r--r--packages/linux/unslung-kernel/anonymiser.patch24
-rw-r--r--packages/linux/unslung-kernel/defconfig1230
-rw-r--r--packages/linux/unslung-kernel/ext3flash-on-disk1.patch41
-rw-r--r--packages/linux/unslung-kernel/ext3flash.patch28
-rw-r--r--packages/linux/unslung-kernel/gl811e.patch43
-rw-r--r--packages/linux/unslung-kernel/limit1gb.patch11
-rw-r--r--packages/linux/unslung-kernel/linux-kernel-R25_to_R29.patch41
-rw-r--r--packages/linux/unslung-kernel/missing-usb-ioctls.patch11
-rw-r--r--packages/linux/unslung-kernel/nfs-blocksize.patch11
-rw-r--r--packages/linux/unslung-kernel/pl2303.patch782
-rw-r--r--packages/linux/unslung-kernel/ppp_mppe.patch29
-rw-r--r--packages/linux/unslung-kernel/usbnet.patch43
13 files changed, 2294 insertions, 0 deletions
diff --git a/packages/linux/unslung-kernel/.mtn2git_empty b/packages/linux/unslung-kernel/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/unslung-kernel/.mtn2git_empty
diff --git a/packages/linux/unslung-kernel/anonymiser.patch b/packages/linux/unslung-kernel/anonymiser.patch
index e69de29bb2..61201031fa 100644
--- a/packages/linux/unslung-kernel/anonymiser.patch
+++ b/packages/linux/unslung-kernel/anonymiser.patch
@@ -0,0 +1,24 @@
+--- linux-2.4.22/Makefile.orig 2004-12-26 13:11:25.000000000 +1030
++++ linux-2.4.22/Makefile 2004-12-26 13:12:32.000000000 +1030
+@@ -431,12 +431,15 @@
+ @LANG=C echo ' '`date` >> .ver1
+ @echo \#define UTS_VERSION \"`cat .ver1 | $(uts_truncate)`\" > .ver
+ @LANG=C echo \#define LINUX_COMPILE_TIME \"`date +%T`\" >> .ver
+- @echo \#define LINUX_COMPILE_BY \"`whoami`\" >> .ver
+- @echo \#define LINUX_COMPILE_HOST \"`hostname | $(uts_truncate)`\" >> .ver
+- @([ -x /bin/dnsdomainname ] && /bin/dnsdomainname > .ver1) || \
+- ([ -x /bin/domainname ] && /bin/domainname > .ver1) || \
+- echo > .ver1
+- @echo \#define LINUX_COMPILE_DOMAIN \"`cat .ver1 | $(uts_truncate)`\" >> .ver
++# @echo \#define LINUX_COMPILE_BY \"`whoami`\" >> .ver
++ @echo \#define LINUX_COMPILE_BY \"unslung\" >> .ver
++# @echo \#define LINUX_COMPILE_HOST \"`hostname | $(uts_truncate)`\" >> .ver
++ @echo \#define LINUX_COMPILE_HOST \"unslung.org\" >> .ver
++# @([ -x /bin/dnsdomainname ] && /bin/dnsdomainname > .ver1) || \
++# ([ -x /bin/domainname ] && /bin/domainname > .ver1) || \
++# echo > .ver1
++# @echo \#define LINUX_COMPILE_DOMAIN \"`cat .ver1 | $(uts_truncate)`\" >> .ver
++ @echo \#define LINUX_COMPILE_DOMAIN \"unslung.org\" >> .ver
+ @echo \#define LINUX_COMPILER \"`$(CC) $(CFLAGS) -v 2>&1 | tail -n 1`\" >> .ver
+ @mv -f .ver $@
+ @rm -f .ver1
diff --git a/packages/linux/unslung-kernel/defconfig b/packages/linux/unslung-kernel/defconfig
index e69de29bb2..0ad6b8dc4d 100644
--- a/packages/linux/unslung-kernel/defconfig
+++ b/packages/linux/unslung-kernel/defconfig
@@ -0,0 +1,1230 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ADVANCED_OPTIONS is not set
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ADIFCC is not set
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K 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_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP1200 is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP425=y
+# CONFIG_ARCH_OMAHA is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_RISCSTATION is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ACCELENT is not set
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSAGC is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_ADSBITSYPLUS is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CEP is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_H3XXX is not set
+# CONFIG_H3600_SLEEVE is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_FRODO is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_PT_SYSTEM3 is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SIMPUTER is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+# CONFIG_SA1100_USB is not set
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+# CONFIG_SA1100_SSP is not set
+
+#
+# IXP425 Implementation Options
+#
+CONFIG_ARCH_IXDP425=y
+# CONFIG_ARCH_IXCDP1100 is not set
+# CONFIG_ARCH_PRPMC1100 is not set
+# CONFIG_ARCH_IXP425_COYOTE is not set
+# CONFIG_ARCH_SE4000 is not set
+
+#
+# IXP425 Options
+#
+CONFIG_IXP425_SDRAM_SIZE=32
+# CONFIG_IXP425_LARGE_SDRAM is not set
+CONFIG_IXP425_PCI_ERRATA=y
+# CONFIG_IXP425_OS_TIMER1 is not set
+# CONFIG_XSCALE_PMU_TIMER is not set
+# CONFIG_IXP425_CSR is not set
+
+#
+# AT91RM9200 Implementations
+#
+# CONFIG_ARCH_AT91RM9200DK is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_AUTCPU12 is not set
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_FORTUNET is not set
+# CONFIG_ARCH_GUIDEA07 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM922T is not set
+# CONFIG_PLD is not set
+# CONFIG_CPU_ARM926T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_ARM1026 is not set
+# CONFIG_CPU_SA110 is not set
+# CONFIG_CPU_SA1100 is not set
+# CONFIG_CPU_32v3 is not set
+# CONFIG_CPU_32v4 is not set
+CONFIG_CPU_32v5=y
+CONFIG_CPU_XSCALE=y
+CONFIG_ARM_THUMB=y
+
+#
+# Processor Features
+#
+# CONFIG_XSCALE_PMU_TIMER is not set
+# CONFIG_XSCALE_CACHE_ERRATA is not set
+# CONFIG_XSCALE_BDI2000 is not set
+# CONFIG_DISCONTIGMEM is not set
+CONFIG_CPU_BIG_ENDIAN=y
+
+#
+# General setup
+#
+CONFIG_PCI=y
+CONFIG_PCI_AUTOCONFIG=y
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_ZBOOT_ROM is not set
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_PCI_NAMES=y
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="console=ttyS0,115200n8 root=/dev/ram0 rw init=/linuxrc initrd=0x01000000,10M mem=32M@0x00000000"
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_REDBOOT_PARTS=y
+# 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_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL 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 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+# 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_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_DRAGONIX is not set
+# CONFIG_MTD_NETtel is not set
+# CONFIG_MTD_SNAPGEODE is not set
+# CONFIG_MTD_NETteluC is not set
+# CONFIG_MTD_MBVANILLA is not set
+# CONFIG_MTD_KeyTechnology is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+# CONFIG_MTD_SA1100 is not set
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+# CONFIG_MTD_EPXA10DB is not set
+# CONFIG_MTD_FORTUNET is not set
+# CONFIG_MTD_AUTCPU12 is not set
+CONFIG_MTD_IXP425=y
+# CONFIG_MTD_IXP425_COYOTE is not set
+# CONFIG_MTD_SE4000 is not set
+# CONFIG_MTD_EDB7312 is not set
+# CONFIG_MTD_IMPA7 is not set
+# CONFIG_MTD_CEIVA is not set
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PCMCIA is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_RAMDISK_DATA is not set
+# CONFIG_BLK_DEV_BLKMEM is not set
+# CONFIG_BLK_STATS is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+# CONFIG_MD_LINEAR is not set
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID5=m
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_FILTER=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_MULTIPATH_SEQUENTIAL is not set
+# CONFIG_IP_ROUTE_TOS is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_ARP_LIMIT is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_CONNTRACK is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_MAC=m
+CONFIG_IP_NF_MATCH_PKTTYPE=m
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_DSCP=m
+CONFIG_IP_NF_MATCH_AH_ESP=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_TCPMSS=m
+CONFIG_IP_NF_MATCH_UNCLEAN=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_MIRROR=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_DSCP=m
+CONFIG_IP_NF_TARGET_MARK=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+CONFIG_ATALK=m
+
+#
+# Appletalk devices
+#
+CONFIG_DEV_APPLETALK=y
+# CONFIG_COPS_DAYNA is not set
+# CONFIG_COPS_TANGENT is not set
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_CSZ=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_INGRESS=m
+# CONFIG_NET_QOS is not set
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_IPSEC is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+CONFIG_ETHERTAP=m
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
+# CONFIG_ARM_CIRRUS is not set
+# CONFIG_IXP425_ETH is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139CP_EXTERNAL_PHY is not set
+CONFIG_8139CP_PHY_NUM=32
+# CONFIG_8139TOO is not set
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_FET is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FEC is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_UCCS8900 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_SD_EXTRA_DEVS=40
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_SR_EXTRA_DEVS=2
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+# CONFIG_SCSI_SYM53C8XX is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+# CONFIG_LEDMAN is not set
+# CONFIG_DS1302 is not set
+# CONFIG_VT is not set
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_PHILIPSPAR is not set
+# CONFIG_I2C_ELV is not set
+# CONFIG_I2C_VELLEMAN is not set
+# CONFIG_I2C_MCF_GPIO is not set
+CONFIG_I2C_IXP425=y
+# CONFIG_SCx200_I2C is not set
+# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_ALGOPCF is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_PROC is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Controller Area Network Cards/Chips
+#
+# CONFIG_CAN4LINUX is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_X1226_RTC=m
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_PROC_FS is not set
+# CONFIG_I2C_PARPORT is not set
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_BT848 is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_ZORAN_BUZ is not set
+# CONFIG_VIDEO_ZORAN_DC10 is not set
+# CONFIG_VIDEO_ZORAN_LML33 is not set
+# CONFIG_VIDEO_ZR36120 is not set
+# CONFIG_VIDEO_MEYE is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_MIROPCM20 is not set
+
+#
+# File systems
+#
+CONFIG_QUOTA=y
+CONFIG_QFMT_V2=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_DMAPI is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_TCP=y
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_COREDUMP_PRINTK is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+# CONFIG_LDM_PARTITION is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
+CONFIG_SUN_PARTITION=y
+# CONFIG_EFI_PARTITION is not set
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+# CONFIG_SOUND_ALI5455 is not set
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
+# CONFIG_SOUND_FORTE is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
+# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_TVMIXER is not set
+
+
+#
+# Misc devices
+#
+
+#
+# USB support
+#
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_UHCI=y
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=y
+# CONFIG_USB_SL811HS_ALT is not set
+# CONFIG_USB_SL811HS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_AUDIO=m
+# CONFIG_USB_EMI26 is not set
+
+#
+# USB Bluetooth can only be used with disabled Bluetooth subsystem
+#
+CONFIG_USB_MIDI=m
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_HOTPLUG_SCSIDEV_NUMBER is not set
+CONFIG_USB_STORAGE_MAXTOR_ONETOUCH=y
+CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_DEBUG=y
+# CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_USB_EVENT is not set
+CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_PERSO=y
+CONFIG_USB_STORAGE_MAXTOR_ONETOUCH_PERSO_APP_PATH="/sbin/onetouch"
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=m
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+
+#
+# Input core support is needed for USB HID input layer or HIDBP support
+#
+# CONFIG_USB_HIDINPUT is not set
+# CONFIG_USB_HIDDEV is not set
+# 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_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+CONFIG_USB_SCANNER=m
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+CONFIG_USB_OV511=m
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_CATC=m
+CONFIG_USB_AX8817X=m
+CONFIG_USB_CDCETHER=m
+CONFIG_USB_USBNET=m
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_TIGL is not set
+# CONFIG_USB_BRLVGER is not set
+# CONFIG_USB_LCD is not set
+
+#
+# Bluetooth support
+#
+CONFIG_BLUEZ=m
+CONFIG_BLUEZ_L2CAP=m
+# CONFIG_BLUEZ_SCO is not set
+CONFIG_BLUEZ_RFCOMM=m
+# CONFIG_BLUEZ_RFCOMM_TTY is not set
+CONFIG_BLUEZ_BNEP=m
+CONFIG_BLUEZ_BNEP_MC_FILTER=y
+CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BLUEZ_HCIUSB=m
+# CONFIG_BLUEZ_USB_SCO is not set
+# CONFIG_BLUEZ_USB_ZERO_PACKET is not set
+# CONFIG_BLUEZ_HCIUART is not set
+# CONFIG_BLUEZ_HCIBFUSB is not set
+# CONFIG_BLUEZ_HCIDTL1 is not set
+# CONFIG_BLUEZ_HCIBT3C is not set
+# CONFIG_BLUEZ_HCIBLUECARD is not set
+# CONFIG_BLUEZ_HCIBTUART is not set
+# CONFIG_BLUEZ_HCIVHCI is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_CRC32=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/unslung-kernel/ext3flash-on-disk1.patch b/packages/linux/unslung-kernel/ext3flash-on-disk1.patch
index e69de29bb2..80170f08ce 100644
--- a/packages/linux/unslung-kernel/ext3flash-on-disk1.patch
+++ b/packages/linux/unslung-kernel/ext3flash-on-disk1.patch
@@ -0,0 +1,41 @@
+--- linux-2.4.22/drivers/scsi/scsi_scan.c.orig 2004-11-06 14:01:22.000000000 +1030
++++ linux-2.4.22/drivers/scsi/scsi_scan.c 2004-11-06 15:00:33.000000000 +1030
+@@ -704,6 +704,7 @@
+ /* restrict device on certain port grant */
+ SDpnt->host->hostt->removable = SDpnt->removable;
+
++#if 0
+ if ( SDpnt->removable && (USB_DEVPATH_1 == SDpnt->host->hostt->port) )
+ {
+ create_proc_read_entry("usb_err",
+@@ -718,8 +719,9 @@
+ shpnt->porttype = 1;
+ return 0;
+ }
++#endif
+ // add by super
+- if (SDpnt->removable){
++ if (SDpnt->removable && (USB_DEVPATH_2 == SDpnt->host->hostt->port)){
+ printk("is removable disk \n");
+ *IXP425_GPIO_GPOUTR &= 0xfffb;
+ create_proc_read_entry("usb_conn",
+--- linux-2.4.22/drivers/usb/storage/usb.c.orig 2004-11-06 14:01:06.000000000 +1030
++++ linux-2.4.22/drivers/usb/storage/usb.c 2004-11-06 15:01:23.000000000 +1030
+@@ -787,6 +787,7 @@
+ ss->htmplt.removable = 1;
+ }
+ #endif
++#if 0
+ /* restrict device on certain port */
+ if ( ss->htmplt.removable && (USB_DEVPATH_1 == dev->devpath[0]))
+ if ( ss->htmplt.removable ^ (USB_DEVPATH_2 == dev->devpath[0]) )
+@@ -803,7 +804,8 @@
+ free_us_data( pre_ss, ss );
+ return NULL;
+ }
+- if (ss->htmplt.removable){
++#endif
++ if (ss->htmplt.removable && (USB_DEVPATH_2 == dev->devpath[0])){
+ printk("is removable disk \n");
+ *IXP425_GPIO_GPOUTR &= 0xfffb;
+ create_proc_read_entry("usb_conn",
diff --git a/packages/linux/unslung-kernel/ext3flash.patch b/packages/linux/unslung-kernel/ext3flash.patch
index e69de29bb2..b61346c62b 100644
--- a/packages/linux/unslung-kernel/ext3flash.patch
+++ b/packages/linux/unslung-kernel/ext3flash.patch
@@ -0,0 +1,28 @@
+--- linux-2.4.22/drivers/scsi/scsi_scan.c.orig 2004-09-23 22:26:35.000000000 +0930
++++ linux-2.4.22/drivers/scsi/scsi_scan.c 2004-09-23 22:38:30.000000000 +0930
+@@ -704,6 +704,7 @@
+ /* restrict device on certain port grant */
+ SDpnt->host->hostt->removable = SDpnt->removable;
+
++#if 0
+ if ( SDpnt->removable && (USB_DEVPATH_1 == SDpnt->host->hostt->port) )
+ {
+ create_proc_read_entry("usb_err",
+@@ -729,6 +730,7 @@
+ NULL
+ );
+ }else {
++#endif
+ printk("%x port connect!!!!!\n",SDpnt->host->hostt->port);
+ if(0x31 == SDpnt->host->hostt->port){
+ *IXP425_GPIO_GPOUTR &= 0xfff7;
+@@ -747,7 +749,9 @@
+ NULL
+ );
+ }
++#if 0
+ }
++#endif
+ //end
+ /*
+ * Check the peripheral qualifier field - this tells us whether LUNS
diff --git a/packages/linux/unslung-kernel/gl811e.patch b/packages/linux/unslung-kernel/gl811e.patch
index e69de29bb2..106c329b4c 100644
--- a/packages/linux/unslung-kernel/gl811e.patch
+++ b/packages/linux/unslung-kernel/gl811e.patch
@@ -0,0 +1,43 @@
+--- linux-2.4.22/drivers/usb/storage/transport.c Fri Jul 9 10:56:27 2004
++++ linux-2.4.22/drivers/usb/storage/transport.c Fri Jul 9 11:51:14 2004
+@@ -1170,6 +1170,12 @@
+
+ /* if the command transfered well, then we go to the data stage */
+ if (result == 0) {
++
++ /* Genesys Logic interface chips need a 100us delay between
++ * the command phase and the data phase */
++ if (us->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS)
++ udelay(100);
++
+ /* send/receive data payload, if there is any */
+ if (bcb->DataTransferLength) {
+ usb_stor_transfer(srb, us);
+--- linux-2.4.22/drivers/usb/storage/usb.c Fri Jul 9 11:44:53 2004
++++ linux-2.4.22/drivers/usb/storage/usb.c Fri Jul 9 11:49:44 2004
+@@ -996,6 +996,15 @@
+ */
+ (struct us_data *)ss->htmplt.proc_dir = ss;
+
++ /* According to the technical support people at Genesys Logic,
++ * devices using their chips have problems transferring more
++ * than 32 KB at a time. In practice people have found that
++ * 64 KB works okay and that's what Windows does. But we'll
++ * be conservative.
++ */
++ if (ss->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS)
++ ss->htmplt.max_sectors = 64;
++
+ /* Just before we start our control thread, initialize
+ * the device if it needs initialization */
+ if (unusual_dev && unusual_dev->initFunction)
+--- linux-2.4.22/drivers/usb/storage/usb.h Fri Jul 9 10:56:03 2004
++++ linux-2.4.22/drivers/usb/storage/usb.h Fri Jul 9 11:45:49 2004
+@@ -193,4 +193,7 @@
+ /* Function to fill an inquiry response. See usb.c for details */
+ extern void fill_inquiry_response(struct us_data *us,
+ unsigned char *data, unsigned int data_len);
++
++/* Vendor ID list for devices that require special handling */
++#define USB_VENDOR_ID_GENESYS 0x05e3 /* Genesys Logic */
+ #endif
diff --git a/packages/linux/unslung-kernel/limit1gb.patch b/packages/linux/unslung-kernel/limit1gb.patch
index e69de29bb2..17f78ef785 100644
--- a/packages/linux/unslung-kernel/limit1gb.patch
+++ b/packages/linux/unslung-kernel/limit1gb.patch
@@ -0,0 +1,11 @@
+--- linux-2.4.22/drivers/scsi/scsi_scan.c.orig 2004-09-23 22:26:35.000000000 +0930
++++ linux-2.4.22/drivers/scsi/scsi_scan.c 2004-09-23 22:42:09.000000000 +0930
+@@ -694,7 +694,7 @@
+ (buffer[2] << 8) |
+ buffer[3]);
+ printk("The capacity is %d\n",capacity);
+- if(capacity<20000000){
++ if(capacity<2000000){
+ SDpnt->removable = 1;
+ }
+ kfree(buffer);
diff --git a/packages/linux/unslung-kernel/linux-kernel-R25_to_R29.patch b/packages/linux/unslung-kernel/linux-kernel-R25_to_R29.patch
index e69de29bb2..1f627ca66b 100644
--- a/packages/linux/unslung-kernel/linux-kernel-R25_to_R29.patch
+++ b/packages/linux/unslung-kernel/linux-kernel-R25_to_R29.patch
@@ -0,0 +1,41 @@
+diff -r -u -x CVS R23/drivers/usb/storage/unusual_devs.h R29/drivers/usb/storage/unusual_devs.h
+--- R23/drivers/usb/storage/unusual_devs.h 2004-07-07 08:31:44.000000000 +0100
++++ R29/drivers/usb/storage/unusual_devs.h 2004-08-30 07:53:58.000000000 +0100
+@@ -1,7 +1,7 @@
+ /* Driver for USB Mass Storage compliant devices
+ * Ununsual Devices File
+ *
+- * $Id: unusual_devs.h,v 1.1 2004/03/24 20:43:17 sure Exp $
++ * $Id: unusual_devs.h,v 1.2 2004/08/30 06:53:58 sure Exp $
+ *
+ * Current development and maintenance by:
+ * (c) 2000-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
+@@ -686,6 +686,17 @@
+ "OneTouch",
+ US_SC_SCSI, US_PR_BULK, mxo_ot_init,
+ US_FL_SINGLE_LUN),
++UNUSUAL_DEV( 0x0D49, 0x7100, 0x0000, 0x9999,
++ "Maxtor",
++ "OneTouch II",
++ US_SC_SCSI, US_PR_BULK, mxo_ot_init,
++ US_FL_SINGLE_LUN),
++UNUSUAL_DEV( 0x0D49, 0x7110, 0x0000, 0x9999,
++ "Maxtor",
++ "OneTouch II",
++ US_SC_SCSI, US_PR_BULK, mxo_ot_init,
++ US_FL_SINGLE_LUN),
++
+ UNUSUAL_DEV( 0x0D49, 0x5000, 0x0000, 0x9999,
+ "Maxtor",
+ "5000DV v01.00.00",
+diff -r -u -x CVS R23/drivers/usb/storage/usb.c R29/drivers/usb/storage/usb.c
+--- R23/drivers/usb/storage/usb.c 2004-07-07 08:31:44.000000000 +0100
++++ R29/drivers/usb/storage/usb.c 2004-08-30 07:54:48.000000000 +0100
+@@ -1,6 +1,6 @@
+ /* Driver for USB Mass Storage compliant devices
+ *
+- * $Id: usb.c,v 1.1 2004/03/24 20:43:17 sure Exp $
++ * $Id: usb.c,v 1.2 2004/08/30 06:54:48 sure Exp $
+ *
+ * Current development and maintenance by:
+ * (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
diff --git a/packages/linux/unslung-kernel/missing-usb-ioctls.patch b/packages/linux/unslung-kernel/missing-usb-ioctls.patch
index e69de29bb2..ba4c606d48 100644
--- a/packages/linux/unslung-kernel/missing-usb-ioctls.patch
+++ b/packages/linux/unslung-kernel/missing-usb-ioctls.patch
@@ -0,0 +1,11 @@
+--- linux-2.4.22/include/linux/usbdevice_fs.h.orig 2004-10-31 20:05:45.989296261 +1100
++++ linux-2.4.22/include/linux/usbdevice_fs.h 2004-10-31 22:55:50.470987905 +1100
+@@ -142,6 +142,8 @@
+ #define USBDEVFS_HUB_PORTINFO _IOR('U', 19, struct usbdevfs_hub_portinfo)
+ #define USBDEVFS_RESET _IO('U', 20)
+ #define USBDEVFS_CLEAR_HALT _IOR('U', 21, unsigned int)
++#define USBDEVFS_DISCONNECT _IO('U', 22)
++#define USBDEVFS_CONNECT _IO('U', 23)
+
+ /* --------------------------------------------------------------------- */
+
diff --git a/packages/linux/unslung-kernel/nfs-blocksize.patch b/packages/linux/unslung-kernel/nfs-blocksize.patch
index e69de29bb2..7200af16e8 100644
--- a/packages/linux/unslung-kernel/nfs-blocksize.patch
+++ b/packages/linux/unslung-kernel/nfs-blocksize.patch
@@ -0,0 +1,11 @@
+--- linux-2.4.22/include/linux/nfsd/const.h.orig 2005-04-02 16:02:17.000000000 +0930
++++ linux-2.4.22/include/linux/nfsd/const.h 2005-04-02 16:02:25.000000000 +0930
+@@ -21,7 +21,7 @@
+ /*
+ * Maximum blocksize supported by daemon currently at 8K
+ */
+-#define NFSSVC_MAXBLKSIZE (8*1024)
++#define NFSSVC_MAXBLKSIZE (32*1024)
+
+ #ifdef __KERNEL__
+
diff --git a/packages/linux/unslung-kernel/pl2303.patch b/packages/linux/unslung-kernel/pl2303.patch
index e69de29bb2..d8813f5419 100644
--- a/packages/linux/unslung-kernel/pl2303.patch
+++ b/packages/linux/unslung-kernel/pl2303.patch
@@ -0,0 +1,782 @@
+--- linux-2.4.22/drivers/usb/serial/pl2303.h.orig 2005-04-02 20:15:34.000000000 +0930
++++ linux-2.4.22/drivers/usb/serial/pl2303.h 2005-04-02 21:29:03.000000000 +0930
+@@ -12,6 +12,7 @@
+ #define PL2303_PRODUCT_ID_RSAQ2 0x04bb
+
+ #define ATEN_VENDOR_ID 0x0557
++#define ATEN_VENDOR_ID2 0x0547
+ #define ATEN_PRODUCT_ID 0x2008
+
+ #define IODATA_VENDOR_ID 0x04bb
+@@ -40,3 +41,12 @@
+
+ #define SITECOM_VENDOR_ID 0x6189
+ #define SITECOM_PRODUCT_ID 0x2068
++
++/* Alcatel OT535/735 USB cable */
++#define ALCATEL_VENDOR_ID 0x11f7
++#define ALCATEL_PRODUCT_ID 0x02df
++
++/* Samsung I330 phone cradle */
++#define SAMSUNG_VENDOR_ID 0x04e8
++#define SAMSUNG_PRODUCT_ID 0x8001
++
+--- linux-2.4.22/drivers/usb/serial/pl2303.c.orig 2005-04-02 20:15:34.000000000 +0930
++++ linux-2.4.22/drivers/usb/serial/pl2303.c 2005-04-02 21:29:03.000000000 +0930
+@@ -1,7 +1,7 @@
+ /*
+ * Prolific PL2303 USB to serial adaptor driver
+ *
+- * Copyright (C) 2001-2003 Greg Kroah-Hartman (greg@kroah.com)
++ * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com)
+ * Copyright (C) 2003 IBM Corp.
+ *
+ * Original driver for 2.2.x by anonymous
+@@ -12,8 +12,16 @@
+ * (at your option) any later version.
+ *
+ * See Documentation/usb/usb-serial.txt for more information on using this driver
+- * 2003_Apr_24 gkh
+- * Added line error reporting support. Hopefully it is correct...
++ *
++ *
++ * 2005_Mar_05 grsch
++ * ported 2.6.8 pl2303.c to 2.4.20 format
++ * (HX model works fine now, ID table should be brought up to date)
++ * Gregor Schaffrath <gschaff@ran-dom.org>
++ *
++ * 2002_Mar_26 gkh
++ * allowed driver to work properly if there is no tty assigned to a port
++ * (this happens for serial console devices.)
+ *
+ * 2001_Oct_06 gkh
+ * Added RTS and DTR line control. Thanks to joe@bndlg.de for parts of it.
+@@ -33,6 +41,9 @@
+ *
+ */
+
++static int debug;
++
++
+ #include <linux/config.h>
+ #include <linux/kernel.h>
+ #include <linux/errno.h>
+@@ -46,24 +57,15 @@
+ #include <linux/spinlock.h>
+ #include <asm/uaccess.h>
+ #include <linux/usb.h>
+-
+-#ifdef CONFIG_USB_SERIAL_DEBUG
+- static int debug = 1;
+-#else
+- static int debug;
+-#endif
+-
+ #include "usb-serial.h"
+ #include "pl2303.h"
+
+ /*
+ * Version Information
+ */
+-#define DRIVER_VERSION "v0.10"
++#define DRIVER_VERSION "v0.11"
+ #define DRIVER_DESC "Prolific PL2303 USB to serial adaptor driver"
+
+-
+-
+ static struct usb_device_id id_table [] = {
+ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID) },
+ { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ2) },
+@@ -72,16 +74,27 @@
+ { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) },
+ { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) },
+ { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) },
+- { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) },
+- { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) },
+- { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) },
+- { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) },
+- { USB_DEVICE(SITECOM_VENDOR_ID, SITECOM_PRODUCT_ID) },
++ { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) },
++ { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) },
++ { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) },
++ { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) },
++ { USB_DEVICE(SITECOM_VENDOR_ID, SITECOM_PRODUCT_ID) },
++ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) },
++ { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) },
+ { } /* Terminating entry */
+ };
+
+ MODULE_DEVICE_TABLE (usb, id_table);
+
++/*
++static struct usb_driver pl2303_driver = {
++ .owner = THIS_MODULE,
++ .name = "pl2303",
++ .probe = usb_serial_probe,
++ .disconnect = usb_serial_disconnect,
++ .id_table = id_table,
++};
++*/
+
+ #define SET_LINE_REQUEST_TYPE 0x21
+ #define SET_LINE_REQUEST 0x20
+@@ -106,6 +119,7 @@
+ #define VENDOR_READ_REQUEST 0x01
+
+ #define UART_STATE 0x08
++#define UART_STATE_TRANSIENT_MASK 0x74
+ #define UART_DCD 0x01
+ #define UART_DSR 0x02
+ #define UART_BREAK_ERROR 0x04
+@@ -128,6 +142,9 @@
+ static int pl2303_write (struct usb_serial_port *port, int from_user,
+ const unsigned char *buf, int count);
+ static void pl2303_break_ctl(struct usb_serial_port *port,int break_state);
++static int pl2303_tiocmget (struct usb_serial_port *port, struct file *file);
++static int pl2303_tiocmset (struct usb_serial_port *port, struct file *file,
++ unsigned int set, unsigned int clear);
+ static int pl2303_startup (struct usb_serial *serial);
+ static void pl2303_shutdown (struct usb_serial *serial);
+
+@@ -147,33 +164,57 @@
+ .ioctl = pl2303_ioctl,
+ .break_ctl = pl2303_break_ctl,
+ .set_termios = pl2303_set_termios,
++ //.tiocmget = pl2303_tiocmget,
++ //.tiocmset = pl2303_tiocmset,
+ .read_bulk_callback = pl2303_read_bulk_callback,
+ .read_int_callback = pl2303_read_int_callback,
+ .write_bulk_callback = pl2303_write_bulk_callback,
++ //.attach = pl2303_startup,
+ .startup = pl2303_startup,
+ .shutdown = pl2303_shutdown,
+ };
+
++enum pl2303_type {
++ type_0, /* don't know the difference between type 0 and */
++ type_1, /* type 1, until someone from prolific tells us... */
++ HX, /* HX version of the pl2303 chip */
++};
++
+ struct pl2303_private {
+ spinlock_t lock;
++ wait_queue_head_t delta_msr_wait;
+ u8 line_control;
+ u8 line_status;
+ u8 termios_initialized;
++ enum pl2303_type type;
+ };
+
+
+ static int pl2303_startup (struct usb_serial *serial)
+ {
+ struct pl2303_private *priv;
++ enum pl2303_type type = type_0;
+ int i;
+
++ if (serial->dev->descriptor.bDeviceClass == 0x02)
++ type = type_0;
++ else if (serial->dev->descriptor.bMaxPacketSize0 == 0x40)
++ type = HX;
++ else if (serial->dev->descriptor.bDeviceClass == 0x00)
++ type = type_1;
++ else if (serial->dev->descriptor.bDeviceClass == 0xFF)
++ type = type_1;
++ dbg("device type: %d", type);
++
+ for (i = 0; i < serial->num_ports; ++i) {
+ priv = kmalloc (sizeof (struct pl2303_private), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+ memset (priv, 0x00, sizeof (struct pl2303_private));
+ spin_lock_init(&priv->lock);
+- usb_set_serial_port_data(&serial->port[i], priv);
++ init_waitqueue_head(&priv->delta_msr_wait);
++ priv->type = type;
++ serial->port[i].private = priv;
+ }
+ return 0;
+ }
+@@ -195,6 +236,9 @@
+
+ dbg("%s - port %d, %d bytes", __FUNCTION__, port->number, count);
+
++ if (!count)
++ return count;
++
+ if (port->write_urb->status == -EINPROGRESS) {
+ dbg("%s - already writing", __FUNCTION__);
+ return 0;
+@@ -208,13 +252,13 @@
+ memcpy (port->write_urb->transfer_buffer, buf, count);
+ }
+
+- usb_serial_debug_data (__FILE__, __FUNCTION__, count, port->write_urb->transfer_buffer);
++ usb_serial_debug_data(__FILE__, __FUNCTION__, count, port->write_urb->transfer_buffer);
+
+ port->write_urb->transfer_buffer_length = count;
+ port->write_urb->dev = port->serial->dev;
+ result = usb_submit_urb (port->write_urb);
+ if (result)
+- err("%s - failed submitting write urb, error %d", __FUNCTION__, result);
++ err("%s - failed submitting write urb, error %d\n", __FUNCTION__, result);
+ else
+ result = count;
+
+@@ -226,7 +270,7 @@
+ static void pl2303_set_termios (struct usb_serial_port *port, struct termios *old_termios)
+ {
+ struct usb_serial *serial = port->serial;
+- struct pl2303_private *priv = usb_get_serial_port_data(port);
++ struct pl2303_private *priv = port->private;
+ unsigned long flags;
+ unsigned int cflag;
+ unsigned char *buf;
+@@ -234,8 +278,7 @@
+ int i;
+ u8 control;
+
+- dbg("%s - port %d, initialized = %d", __FUNCTION__, port->number,
+- priv->termios_initialized);
++ dbg("%s - port %d", __FUNCTION__, port->number);
+
+ if ((!port->tty) || (!port->tty->termios)) {
+ dbg("%s - no tty structures", __FUNCTION__);
+@@ -262,7 +305,7 @@
+
+ buf = kmalloc (7, GFP_KERNEL);
+ if (!buf) {
+- err("%s - out of memory.", __FUNCTION__);
++ err("%s - out of memory.\n", __FUNCTION__);
+ return;
+ }
+ memset (buf, 0x00, 0x07);
+@@ -304,7 +347,7 @@
+ case B230400: baud = 230400; break;
+ case B460800: baud = 460800; break;
+ default:
+- err ("pl2303 driver does not support the baudrate requested (fix it)");
++ err("pl2303 driver does not support the baudrate requested (fix it)\n");
+ break;
+ }
+ dbg("%s - baud = %d", __FUNCTION__, baud);
+@@ -373,31 +416,39 @@
+ buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6]);
+
+ if (cflag & CRTSCTS) {
+- i = usb_control_msg (serial->dev, usb_sndctrlpipe (serial->dev, 0),
+- VENDOR_WRITE_REQUEST, VENDOR_WRITE_REQUEST_TYPE,
+- 0x0, 0x41, NULL, 0, 100);
+- dbg ("0x40:0x1:0x0:0x41 %d", i);
++ __u16 index;
++ if (priv->type == HX)
++ index = 0x61;
++ else
++ index = 0x41;
++ i = usb_control_msg(serial->dev,
++ usb_sndctrlpipe(serial->dev, 0),
++ VENDOR_WRITE_REQUEST,
++ VENDOR_WRITE_REQUEST_TYPE,
++ 0x0, index, NULL, 0, 100);
++ dbg ("0x40:0x1:0x0:0x%x %d", index, i);
+ }
+
+ kfree (buf);
+-}
+-
++}
+
+ static int pl2303_open (struct usb_serial_port *port, struct file *filp)
+ {
+ struct termios tmp_termios;
+ struct usb_serial *serial = port->serial;
+- unsigned char buf[10];
++ struct pl2303_private *priv = port->private;
++ unsigned char *buf;
+ int result;
+
+- if (port_paranoia_check (port, __FUNCTION__))
+- return -ENODEV;
+-
+ dbg("%s - port %d", __FUNCTION__, port->number);
+
+ usb_clear_halt(serial->dev, port->write_urb->pipe);
+ usb_clear_halt(serial->dev, port->read_urb->pipe);
+
++ buf = kmalloc(10, GFP_KERNEL);
++ if (buf==NULL)
++ return -ENOMEM;
++
+ #define FISH(a,b,c,d) \
+ result=usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev,0), \
+ b, a, c, d, buf, 1, 100); \
+@@ -416,6 +467,20 @@
+ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 0x0404, 1);
+ FISH (VENDOR_READ_REQUEST_TYPE, VENDOR_READ_REQUEST, 0x8484, 0);
+ FISH (VENDOR_READ_REQUEST_TYPE, VENDOR_READ_REQUEST, 0x8383, 0);
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 0, 1);
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 1, 0);
++
++ if (priv->type == HX) {
++ /* HX chip */
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 2, 0x44);
++ /* reset upstream data pipes */
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 8, 0);
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 9, 0);
++ } else {
++ SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 2, 0x24);
++ }
++
++ kfree(buf);
+
+ /* Setup termios */
+ if (port->tty) {
+@@ -428,7 +493,7 @@
+ port->read_urb->dev = serial->dev;
+ result = usb_submit_urb (port->read_urb);
+ if (result) {
+- err("%s - failed submitting read urb, error %d", __FUNCTION__, result);
++ err("%s - failed submitting read urb, error %d\n", __FUNCTION__, result);
+ pl2303_close (port, NULL);
+ return -EPROTO;
+ }
+@@ -437,7 +502,7 @@
+ port->interrupt_in_urb->dev = serial->dev;
+ result = usb_submit_urb (port->interrupt_in_urb);
+ if (result) {
+- err("%s - failed submitting interrupt urb, error %d", __FUNCTION__, result);
++ err("%s - failed submitting interrupt urb, error %d\n", __FUNCTION__, result);
+ pl2303_close (port, NULL);
+ return -EPROTO;
+ }
+@@ -447,119 +512,133 @@
+
+ static void pl2303_close (struct usb_serial_port *port, struct file *filp)
+ {
+- struct usb_serial *serial;
+ struct pl2303_private *priv;
+ unsigned long flags;
+ unsigned int c_cflag;
+ int result;
+
+- if (port_paranoia_check (port, __FUNCTION__))
+- return;
+- serial = get_usb_serial (port, __FUNCTION__);
+- if (!serial)
+- return;
+-
+ dbg("%s - port %d", __FUNCTION__, port->number);
+
+- if (serial->dev) {
+- if (port->tty) {
+- c_cflag = port->tty->termios->c_cflag;
+- if (c_cflag & HUPCL) {
+- /* drop DTR and RTS */
+- priv = usb_get_serial_port_data(port);
+- spin_lock_irqsave(&priv->lock, flags);
+- priv->line_control = 0;
+- spin_unlock_irqrestore (&priv->lock, flags);
+- set_control_lines (port->serial->dev, 0);
+- }
+- }
++ /* shutdown our urbs */
++ dbg("%s - shutting down urbs", __FUNCTION__);
++ result = usb_unlink_urb (port->write_urb);
++ if (result)
++ dbg("%s - usb_unlink_urb (write_urb)"
++ " failed with reason: %d", __FUNCTION__,
++ result);
+
+- /* shutdown our urbs */
+- dbg("%s - shutting down urbs", __FUNCTION__);
+- result = usb_unlink_urb (port->write_urb);
+- if (result)
+- dbg("%s - usb_unlink_urb (write_urb)"
+- " failed with reason: %d", __FUNCTION__,
+- result);
++ result = usb_unlink_urb (port->read_urb);
++ if (result)
++ dbg("%s - usb_unlink_urb (read_urb) "
++ "failed with reason: %d", __FUNCTION__,
++ result);
+
+- result = usb_unlink_urb (port->read_urb);
+- if (result)
+- dbg("%s - usb_unlink_urb (read_urb) "
+- "failed with reason: %d", __FUNCTION__,
+- result);
++ result = usb_unlink_urb (port->interrupt_in_urb);
++ if (result)
++ dbg("%s - usb_unlink_urb (interrupt_in_urb)"
++ " failed with reason: %d", __FUNCTION__,
++ result);
+
+- result = usb_unlink_urb (port->interrupt_in_urb);
+- if (result)
+- dbg("%s - usb_unlink_urb (interrupt_in_urb)"
+- " failed with reason: %d", __FUNCTION__,
+- result);
++ if (port->tty) {
++ c_cflag = port->tty->termios->c_cflag;
++ if (c_cflag & HUPCL) {
++ /* drop DTR and RTS */
++ priv = port->private;
++ spin_lock_irqsave(&priv->lock, flags);
++ priv->line_control = 0;
++ spin_unlock_irqrestore (&priv->lock, flags);
++ set_control_lines (port->serial->dev, 0);
++ }
+ }
++
+ }
+
++/* taken from 2.4.20 driver */
+ static int set_modem_info (struct usb_serial_port *port, unsigned int cmd, unsigned int *value)
+ {
+- struct pl2303_private *priv = usb_get_serial_port_data(port);
+- unsigned long flags;
+- unsigned int arg;
+- u8 control;
+-
+- if (copy_from_user(&arg, value, sizeof(int)))
+- return -EFAULT;
++ struct pl2303_private *priv = port->private;
++ unsigned int arg;
+
+- spin_lock_irqsave (&priv->lock, flags);
+- switch (cmd) {
+- case TIOCMBIS:
+- if (arg & TIOCM_RTS)
+- priv->line_control |= CONTROL_RTS;
+- if (arg & TIOCM_DTR)
+- priv->line_control |= CONTROL_DTR;
+- break;
+-
+- case TIOCMBIC:
+- if (arg & TIOCM_RTS)
+- priv->line_control &= ~CONTROL_RTS;
+- if (arg & TIOCM_DTR)
+- priv->line_control &= ~CONTROL_DTR;
+- break;
+-
+- case TIOCMSET:
+- /* turn off RTS and DTR and then only turn
+- on what was asked to */
+- priv->line_control &= ~(CONTROL_RTS | CONTROL_DTR);
+- priv->line_control |= ((arg & TIOCM_RTS) ? CONTROL_RTS : 0);
+- priv->line_control |= ((arg & TIOCM_DTR) ? CONTROL_DTR : 0);
+- break;
+- }
+- control = priv->line_control;
+- spin_unlock_irqrestore (&priv->lock, flags);
+-
+- return set_control_lines (port->serial->dev, control);
++ if (copy_from_user(&arg, value, sizeof(int)))
++ return -EFAULT;
++
++ switch (cmd) {
++ case TIOCMBIS:
++ if (arg & TIOCM_RTS)
++ priv->line_control |= CONTROL_RTS;
++ if (arg & TIOCM_DTR)
++ priv->line_control |= CONTROL_DTR;
++ break;
++
++ case TIOCMBIC:
++ if (arg & TIOCM_RTS)
++ priv->line_control &= ~CONTROL_RTS;
++ if (arg & TIOCM_DTR)
++ priv->line_control &= ~CONTROL_DTR;
++ break;
++
++ case TIOCMSET:
++ /* turn off RTS and DTR and then only turn
++ on what was asked to */
++ priv->line_control &= ~(CONTROL_RTS | CONTROL_DTR);
++ priv->line_control |= ((arg & TIOCM_RTS) ? CONTROL_RTS : 0);
++ priv->line_control |= ((arg & TIOCM_DTR) ? CONTROL_DTR : 0);
++ break;
++ }
++
++ return set_control_lines (port->serial->dev, priv->line_control);
+ }
+
+ static int get_modem_info (struct usb_serial_port *port, unsigned int *value)
+ {
+- struct pl2303_private *priv = usb_get_serial_port_data(port);
++ struct pl2303_private *priv = port->private;
++ unsigned int mcr = priv->line_control;
++ unsigned int result;
++
++ result = ((mcr & CONTROL_DTR) ? TIOCM_DTR : 0)
++ | ((mcr & CONTROL_RTS) ? TIOCM_RTS : 0);
++
++ dbg("%s - result = %x", __FUNCTION__, result);
++
++ if (copy_to_user(value, &result, sizeof(int)))
++ return -EFAULT;
++ return 0;
++}
++/* end of 2.4.20 kernel part - grsch */
++
++static int wait_modem_info(struct usb_serial_port *port, unsigned int arg)
++{
++ struct pl2303_private *priv = port->private;
+ unsigned long flags;
+- unsigned int mcr;
++ unsigned int prevstatus;
+ unsigned int status;
+- unsigned int result;
++ unsigned int changed;
+
+ spin_lock_irqsave (&priv->lock, flags);
+- mcr = priv->line_control;
+- status = priv->line_status;
++ prevstatus = priv->line_status;
+ spin_unlock_irqrestore (&priv->lock, flags);
+
+- result = ((mcr & CONTROL_DTR) ? TIOCM_DTR : 0)
+- | ((mcr & CONTROL_RTS) ? TIOCM_RTS : 0)
+- | ((status & UART_CTS) ? TIOCM_CTS : 0)
+- | ((status & UART_DSR) ? TIOCM_DSR : 0)
+- | ((status & UART_RING) ? TIOCM_RI : 0)
+- | ((status & UART_DCD) ? TIOCM_CD : 0);
+-
+- dbg("%s - result = %x", __FUNCTION__, result);
+-
+- if (copy_to_user(value, &result, sizeof(int)))
+- return -EFAULT;
++ while (1) {
++ interruptible_sleep_on(&priv->delta_msr_wait);
++ /* see if a signal did it */
++ if (signal_pending(current))
++ return -ERESTARTSYS;
++
++ spin_lock_irqsave (&priv->lock, flags);
++ status = priv->line_status;
++ spin_unlock_irqrestore (&priv->lock, flags);
++
++ changed=prevstatus^status;
++
++ if (((arg & TIOCM_RNG) && (changed & UART_RING)) ||
++ ((arg & TIOCM_DSR) && (changed & UART_DSR)) ||
++ ((arg & TIOCM_CD) && (changed & UART_DCD)) ||
++ ((arg & TIOCM_CTS) && (changed & UART_CTS)) ) {
++ return 0;
++ }
++ prevstatus = status;
++ }
++ /* NOTREACHED */
+ return 0;
+ }
+
+@@ -568,16 +647,9 @@
+ dbg("%s (%d) cmd = 0x%04x", __FUNCTION__, port->number, cmd);
+
+ switch (cmd) {
+-
+- case TIOCMGET:
+- dbg("%s (%d) TIOCMGET", __FUNCTION__, port->number);
+- return get_modem_info (port, (unsigned int *)arg);
+-
+- case TIOCMBIS:
+- case TIOCMBIC:
+- case TIOCMSET:
+- dbg("%s (%d) TIOCMSET/TIOCMBIC/TIOCMSET", __FUNCTION__, port->number);
+- return set_modem_info(port, cmd, (unsigned int *) arg);
++ case TIOCMIWAIT:
++ dbg("%s (%d) TIOCMIWAIT", __FUNCTION__, port->number);
++ return wait_modem_info(port, arg);
+
+ default:
+ dbg("%s not supported = 0x%04x", __FUNCTION__, cmd);
+@@ -616,8 +688,8 @@
+ dbg("%s", __FUNCTION__);
+
+ for (i = 0; i < serial->num_ports; ++i) {
+- kfree (usb_get_serial_port_data(&serial->port[i]));
+- usb_set_serial_port_data(&serial->port[i], NULL);
++ kfree (serial->port[i].private);
++ serial->port[i].private = NULL;
+ }
+ }
+
+@@ -625,15 +697,14 @@
+ static void pl2303_read_int_callback (struct urb *urb)
+ {
+ struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
+- struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
+- struct pl2303_private *priv = usb_get_serial_port_data(port);
++ struct pl2303_private *priv = port->private;
+ unsigned char *data = urb->transfer_buffer;
+ unsigned long flags;
++ int status;
++ u8 uart_state;
+
+ dbg("%s (%d)", __FUNCTION__, port->number);
+
+- /* ints auto restart... */
+-
+ switch (urb->status) {
+ case 0:
+ /* success */
+@@ -646,32 +717,34 @@
+ return;
+ default:
+ dbg("%s - nonzero urb status received: %d", __FUNCTION__, urb->status);
+- return;
++ goto exit;
+ }
+
+- if (!serial) {
+- return;
+- }
+
+- usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, urb->transfer_buffer);
++ usb_serial_debug_data(__FILE__, __FUNCTION__, urb->actual_length, urb->transfer_buffer);
+
+ if (urb->actual_length < UART_STATE)
+- return;
++ goto exit;
+
+ /* Save off the uart status for others to look at */
++ uart_state = data[UART_STATE];
+ spin_lock_irqsave(&priv->lock, flags);
+- priv->line_status = data[UART_STATE];
++ uart_state |= (priv->line_status & UART_STATE_TRANSIENT_MASK);
++ priv->line_status = uart_state;
+ spin_unlock_irqrestore(&priv->lock, flags);
+-
+- return;
++
++exit:
++ status = usb_submit_urb (urb);
++ if (status)
++ err("%s - usb_submit_urb failed with result %d\n",
++ __FUNCTION__, status);
+ }
+
+
+ static void pl2303_read_bulk_callback (struct urb *urb)
+ {
+ struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
+- struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
+- struct pl2303_private *priv = usb_get_serial_port_data(port);
++ struct pl2303_private *priv = port->private;
+ struct tty_struct *tty;
+ unsigned char *data = urb->transfer_buffer;
+ unsigned long flags;
+@@ -680,16 +753,8 @@
+ u8 status;
+ char tty_flag;
+
+- if (port_paranoia_check (port, __FUNCTION__))
+- return;
+-
+ dbg("%s - port %d", __FUNCTION__, port->number);
+
+- if (!serial) {
+- dbg("%s - bad serial pointer, exiting", __FUNCTION__);
+- return;
+- }
+-
+ if (urb->status) {
+ dbg("%s - urb->status = %d", __FUNCTION__, urb->status);
+ if (!port->open_count) {
+@@ -700,24 +765,26 @@
+ /* PL2303 mysteriously fails with -EPROTO reschedule the read */
+ dbg("%s - caught -EPROTO, resubmitting the urb", __FUNCTION__);
+ urb->status = 0;
+- urb->dev = serial->dev;
++ urb->dev = port->serial->dev;
+ result = usb_submit_urb(urb);
+ if (result)
+- err("%s - failed resubmitting read urb, error %d", __FUNCTION__, result);
++ err("%s - failed resubmitting read urb, error %d\n", __FUNCTION__, result);
+ return;
+ }
+ dbg("%s - unable to handle the error, exiting.", __FUNCTION__);
+ return;
+ }
+
+- usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data);
++ usb_serial_debug_data(__FILE__, __FUNCTION__, urb->actual_length, data);
+
+ /* get tty_flag from status */
+ tty_flag = TTY_NORMAL;
+
+ spin_lock_irqsave(&priv->lock, flags);
+ status = priv->line_status;
++ priv->line_status &= ~UART_STATE_TRANSIENT_MASK;
+ spin_unlock_irqrestore(&priv->lock, flags);
++ wake_up_interruptible (&priv->delta_msr_wait);
+
+ /* break takes precedence over parity, */
+ /* which takes precedence over framing errors */
+@@ -746,10 +813,10 @@
+
+ /* Schedule the next read _if_ we are still open */
+ if (port->open_count) {
+- urb->dev = serial->dev;
++ urb->dev = port->serial->dev;
+ result = usb_submit_urb(urb);
+ if (result)
+- err("%s - failed resubmitting read urb, error %d", __FUNCTION__, result);
++ err("%s - failed resubmitting read urb, error %d\n", __FUNCTION__, result);
+ }
+
+ return;
+@@ -762,44 +829,32 @@
+ struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
+ int result;
+
+- if (port_paranoia_check (port, __FUNCTION__))
+- return;
+-
+ dbg("%s - port %d", __FUNCTION__, port->number);
+
+ if (urb->status) {
+ /* error in the urb, so we have to resubmit it */
+- if (serial_paranoia_check (port->serial, __FUNCTION__)) {
+- return;
+- }
+ dbg("%s - Overflow in write", __FUNCTION__);
+ dbg("%s - nonzero write bulk status received: %d", __FUNCTION__, urb->status);
+ port->write_urb->transfer_buffer_length = 1;
+ port->write_urb->dev = port->serial->dev;
+ result = usb_submit_urb (port->write_urb);
+ if (result)
+- err("%s - failed resubmitting write urb, error %d", __FUNCTION__, result);
++ err("%s - failed resubmitting write urb, error %d\n", __FUNCTION__, result);
+
+ return;
+ }
+
+- queue_task(&port->tqueue, &tq_immediate);
+- mark_bh(IMMEDIATE_BH);
+
+- return;
++ queue_task(&port->tqueue, &tq_immediate);
++ mark_bh(IMMEDIATE_BH);
+ }
+
+
+ static int __init pl2303_init (void)
+ {
+- int retval;
+- retval = usb_serial_register(&pl2303_device);
+- if (retval)
+- goto failed_usb_serial_register;
++ usb_serial_register(&pl2303_device);
+ info(DRIVER_DESC " " DRIVER_VERSION);
+ return 0;
+-failed_usb_serial_register:
+- return retval;
+ }
+
+
+@@ -818,3 +873,4 @@
+ MODULE_PARM(debug, "i");
+ MODULE_PARM_DESC(debug, "Debug enabled or not");
+
++//this is an error
diff --git a/packages/linux/unslung-kernel/ppp_mppe.patch b/packages/linux/unslung-kernel/ppp_mppe.patch
index e69de29bb2..145405b001 100644
--- a/packages/linux/unslung-kernel/ppp_mppe.patch
+++ b/packages/linux/unslung-kernel/ppp_mppe.patch
@@ -0,0 +1,29 @@
+--- linux-2.4.22/drivers/net/ppp_mppe.c~ 2005-03-05 00:36:26.000000000 +1030
++++ linux-2.4.22/drivers/net/ppp_mppe.c 2005-03-05 00:52:49.000000000 +1030
+@@ -651,7 +651,7 @@
+ *************************************************************/
+
+ static int __init
+-init_module(void)
++ppp_mppe_init_module(void)
+ {
+ int answer = ppp_register_compressor(&ppp_mppe);
+ if (answer == 0) {
+@@ -662,7 +662,7 @@
+
+
+ void
+-cleanup_module(void)
++ppp_mppe_cleanup_module(void)
+ {
+ if (MOD_IN_USE) {
+ printk (KERN_INFO "MPPE module busy, remove delayed\n");
+@@ -672,6 +672,6 @@
+ }
+ }
+
+-module_init(init_module);
+-module_exit(cleanup_module);
++module_init(ppp_mppe_init_module);
++module_exit(ppp_mppe_cleanup_module);
+
diff --git a/packages/linux/unslung-kernel/usbnet.patch b/packages/linux/unslung-kernel/usbnet.patch
index e69de29bb2..84af8ee1a4 100644
--- a/packages/linux/unslung-kernel/usbnet.patch
+++ b/packages/linux/unslung-kernel/usbnet.patch
@@ -0,0 +1,43 @@
+--- linux-2.4.22/drivers/usb/usbnet.c.orig 2004-09-19 03:08:09.000000000 -0400
++++ linux-2.4.22/drivers/usb/usbnet.c 2004-09-19 03:10:58.000000000 -0400
+@@ -314,8 +314,6 @@ MODULE_PARM_DESC (msg_level, "Initial me
+ #define RUN_CONTEXT (in_irq () ? "in_irq" \
+ : (in_interrupt () ? "in_interrupt" : "can sleep"))
+
+-static struct ethtool_ops usbnet_ethtool_ops;
+-
+ /* mostly for PDA style devices, which are always present */
+ static int always_connected (struct usbnet *dev)
+ {
+@@ -2515,7 +2513,6 @@ usbnet_probe (struct usb_device *udev, u
+ net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
+ net->tx_timeout = usbnet_tx_timeout;
+ net->do_ioctl = usbnet_ioctl;
+- net->ethtool_ops = &usbnet_ethtool_ops;
+
+ // allow device-specific bind/init procedures
+ // NOTE net->name still not usable ...
+@@ -2738,13 +2735,6 @@ static struct usb_driver usbnet_driver =
+ .disconnect = usbnet_disconnect,
+ };
+
+-/* Default ethtool_ops assigned. Devices can override in their bind() routine */
+-static struct ethtool_ops usbnet_ethtool_ops = {
+- .get_drvinfo = usbnet_get_drvinfo,
+- .get_link = usbnet_get_link,
+- .get_msglevel = usbnet_get_msglevel,
+- .set_msglevel = usbnet_set_msglevel,
+-};
+ /*-------------------------------------------------------------------------*/
+
+ static int __init usbnet_init (void)
+--- linux-2.4.22/drivers/net/Makefile.orig 2004-09-21 19:29:09.000000000 -0400
++++ linux-2.4.22/drivers/net/Makefile 2004-09-21 19:30:33.000000000 -0400
+@@ -267,6 +267,7 @@ obj-$(CONFIG_AMD8111_ETH) += amd8111e.o
+
+ # non-drivers/net drivers who want mii lib
+ obj-$(CONFIG_PCMCIA_SMC91C92) += mii.o
++obj-$(CONFIG_USB_USBNET) += mii.o
+
+ ifeq ($(CONFIG_ARCH_ACORN),y)
+ mod-subdirs += ../acorn/net