]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
EXPERIMENTELLE Konfiguration fuer den Installer-Kernel.
authorms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Thu, 12 Oct 2006 15:57:24 +0000 (15:57 +0000)
committerms <ms@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Thu, 12 Oct 2006 15:57:24 +0000 (15:57 +0000)
Die genaue Konfiguration wird am Entwicklertreffen festgelegt.

git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@315 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8

config/kernel/kernel.config.i586.installer
lfs/linux
make.sh
src/patches/bootsplash-3.1.6-2.6.15.diff [new file with mode: 0644]

index 5364d20d8ddb491bdb231e66848961942e31e87b..f3aa5065d69eb2726589391a67fdea5e06db7409 100644 (file)
 #
 # Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Thu Oct 12 11:45:06 2006
 #
+CONFIG_X86_32=y
+CONFIG_SEMAPHORE_SLEEPERS=y
 CONFIG_X86=y
-# CONFIG_SBUS is not set
-CONFIG_UID16=y
+CONFIG_MMU=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
 
 #
 # 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=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_VM86=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_EMBEDDED 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=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
 
 #
 # Loadable module support
 #
 CONFIG_MODULES=y
-CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
 
+#
+# Block layer
+#
+CONFIG_LBD=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
 #
 # Processor type and features
 #
-CONFIG_M386=y
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_M386 is not set
 # CONFIG_M486 is not set
-# CONFIG_M586 is not set
+CONFIG_M586=y
 # CONFIG_M586TSC is not set
 # CONFIG_M586MMX is not set
 # CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
 # CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
 # CONFIG_MPENTIUM4 is not set
 # CONFIG_MK6 is not set
 # CONFIG_MK7 is not set
 # CONFIG_MK8 is not set
-# CONFIG_MELAN is not set
 # CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
 # CONFIG_MWINCHIPC6 is not set
 # CONFIG_MWINCHIP2 is not set
 # CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
 # CONFIG_MCYRIXIII is not set
 # CONFIG_MVIAC3_2 is not set
-# CONFIG_X86_CMPXCHG is not set
-# CONFIG_X86_XADD is not set
-CONFIG_X86_L1_CACHE_SHIFT=4
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_X86_PPRO_FENCE=y
-# CONFIG_X86_F00F_WORKS_OK is not set
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_ALIGNMENT_16=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_HPET_TIMER=y
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_BKL=y
+# CONFIG_X86_UP_APIC is not set
 CONFIG_X86_MCE=y
+CONFIG_X86_MCE_NONFATAL=y
 # CONFIG_TOSHIBA is not set
 # CONFIG_I8K is not set
+CONFIG_X86_REBOOTFIXUPS=y
 # CONFIG_MICROCODE is not set
 # CONFIG_X86_MSR is not set
 # CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
 # CONFIG_EDD is not set
-# CONFIG_NOHIGHMEM is not set
-CONFIG_HIGHMEM4G=y
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
 # CONFIG_HIGHMEM64G is not set
-CONFIG_HIGHMEM=y
-# CONFIG_HIGHIO is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MTRR is not set
-# CONFIG_SMP is not set
-# CONFIG_X86_UP_APIC is not set
-# CONFIG_X86_UP_IOAPIC is not set
-# CONFIG_X86_TSC_DISABLE is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+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=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+# CONFIG_EFI is not set
+# CONFIG_REGPARM is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+CONFIG_DOUBLEFAULT=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
 
 #
-# General setup
+# ACPI (Advanced Configuration and Power Interface) Support
 #
-CONFIG_NET=y
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_ISA=y
-# CONFIG_PCI_NAMES is not set
-CONFIG_EISA=y
-CONFIG_MCA=y
-CONFIG_HOTPLUG=y
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_SLEEP_PROC_FS=y
+# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=y
+# CONFIG_ACPI_HOTKEY is not set
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_IBM is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+# CONFIG_ACPI_CONTAINER is not set
 
 #
-# PCMCIA/CardBus support
+# APM (Advanced Power Management) BIOS Support
 #
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-CONFIG_TCIC=y
-CONFIG_I82092=y
-CONFIG_I82365=y
+# CONFIG_APM is not set
 
 #
-# PCI Hotplug Support
+# CPU Frequency scaling
 #
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
-# CONFIG_HOTPLUG_PCI_SHPC_PHPRM_LEGACY is not set
-# CONFIG_HOTPLUG_PCI_PCIE is not set
-# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_OOM_KILLER is not set
-CONFIG_PM=y
-CONFIG_APM=m
-CONFIG_APM_IGNORE_USER_SUSPEND=y
-# CONFIG_APM_DO_ENABLE is not set
-# CONFIG_APM_CPU_IDLE is not set
-# CONFIG_APM_DISPLAY_BLANK is not set
-CONFIG_APM_RTC_IS_GMT=y
-# CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+# CONFIG_CPU_FREQ is not set
 
 #
-# ACPI Support
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
 #
-# CONFIG_ACPI is not set
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCI_LEGACY_PROC=y
+CONFIG_ISA_DMA_API=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
 
 #
-# Memory Technology Devices (MTD)
+# PCCARD (PCMCIA/CardBus) support
 #
-# CONFIG_MTD is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
 
 #
-# Parallel port support
+# PC-card bridges
 #
-# CONFIG_PARPORT is not set
+# CONFIG_YENTA is not set
+# CONFIG_PD6729 is not set
+# CONFIG_I82092 is not set
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_PROBE=y
 
 #
-# Plug and Play configuration
+# PCI Hotplug Support
 #
-CONFIG_PNP=m
-CONFIG_ISAPNP=m
+# CONFIG_HOTPLUG_PCI is not set
 
 #
-# Block devices
+# Executable file formats
 #
-CONFIG_BLK_DEV_FD=y
-CONFIG_BLK_DEV_PS2=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-CONFIG_BLK_CPQ_DA=m
-CONFIG_BLK_CPQ_CISS_DA=m
-# CONFIG_CISS_SCSI_TAPE is not set
-# CONFIG_CISS_MONITOR_THREAD is not set
-CONFIG_BLK_DEV_DAC960=m
-# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_SX8=m
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=5120
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_STATS is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_MISC=y
 
 #
-# Multi-device support (RAID and LVM)
+# Networking
 #
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
+CONFIG_NET=y
 
 #
 # Networking options
 #
+# CONFIG_NETDEBUG is not set
 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_NET_KEY is not set
 CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_FWMARK is not set
-CONFIG_IP_ROUTE_NAT=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_TOS=y
-CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
 # CONFIG_IP_PNP 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=y
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
 
 #
-#   IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_CT_PROTO_GRE=m
-CONFIG_IP_NF_PPTP=m
-# CONFIG_IP_NF_PPTP_DEBUG is not set
-CONFIG_IP_NF_H323=m
-# CONFIG_IP_NF_AMANDA is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_QUAKE3=m
-CONFIG_IP_NF_RTSP=m
-CONFIG_IP_NF_MMS=m
-CONFIG_IP_NF_CUSEEME=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPPORTHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_QUOTA=m
-CONFIG_IP_NF_POOL=m
-CONFIG_IP_POOL_STATISTICS=y
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_DSTLIMIT=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_MPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_RANDOM=m
-CONFIG_IP_NF_MATCH_PSD=m
-CONFIG_IP_NF_MATCH_OSF=m
-CONFIG_IP_NF_MATCH_NTH=m
-CONFIG_IP_NF_MATCH_IPV4OPTIONS=m
-CONFIG_IP_NF_MATCH_FUZZY=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_U32=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNLIMIT=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_STRING=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_NETLINK=m
-CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m
-CONFIG_IP_NF_TARGET_MIRROR=m
-CONFIG_IP_NF_TARGET_TARPIT=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_PROTO_GRE=m
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_RTSP=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_QUAKE3=m
-CONFIG_IP_NF_NAT_MMS=m
-CONFIG_IP_NF_NAT_CUSEEME=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=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_TTL=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_TARGET_NOTRACK=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-CONFIG_IP_NF_MATCH_LAYER7_DEBUG=n
-CONFIG_IP_NF_TARGET_IMQ=m
-CONFIG_IMQ=m
-
-#
-#   IP: Virtual Server Configuration
+# IP: Virtual Server Configuration
 #
 # CONFIG_IP_VS is not set
 # CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
 
 #
-#    SCTP Configuration (EXPERIMENTAL)
+# Core Netfilter Configuration
 #
-# CONFIG_IP_SCTP is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_VLAN_8021Q=m
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
 
 #
-#  
+# IP: Netfilter Configuration
 #
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
+CONFIG_IP_NF_CONNTRACK=y
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+# CONFIG_IP_NF_CT_PROTO_SCTP is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_NETBIOS_NS is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_QUEUE=y
 
 #
-# Appletalk devices
+# DCCP Configuration (EXPERIMENTAL)
 #
-# CONFIG_DEV_APPLETALK is not set
-# CONFIG_DECNET is not set
+# 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_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_HFSC=m
-# CONFIG_NET_SCH_ATM is not set
-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_NETEM=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-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_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_POLICE=y
+# CONFIG_NET_SCHED is not set
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC=m
-
-#
-# IPSec options (FreeS/WAN)
-#
-CONFIG_IPSEC_IPIP=y
-CONFIG_IPSEC_AH=y
-CONFIG_IPSEC_AUTH_HMAC_MD5=y
-CONFIG_IPSEC_AUTH_HMAC_SHA1=y
-CONFIG_IPSEC_ESP=y
-CONFIG_IPSEC_ENC_3DES=y
-CONFIG_IPSEC_ALG=y
-CONFIG_IPSEC_ALG_MD5=m
-CONFIG_IPSEC_ALG_SHA1=m
-CONFIG_IPSEC_ALG_SHA2=m
-CONFIG_IPSEC_ALG_3DES=m
-CONFIG_IPSEC_ALG_AES=m
-CONFIG_IPSEC_ALG_BLOWFISH=m
-CONFIG_IPSEC_ALG_TWOFISH=m
-CONFIG_IPSEC_ALG_SERPENT=m
-CONFIG_IPSEC_ALG_CAST=m
-# CONFIG_IPSEC_ALG_NULL is not set
-# CONFIG_IPSEC_ALG_CRYPTOAPI is not set
-# CONFIG_IPSEC_ALG_1DES is not set
-CONFIG_IPSEC_IPCOMP=y
-CONFIG_IPSEC_DEBUG=y
-CONFIG_IPSEC_NAT_TRAVERSAL=y
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
 
 #
-# Telephony Support
+# Device Drivers
 #
-# CONFIG_PHONE is not set
-# CONFIG_PHONE_IXJ is not set
-# CONFIG_PHONE_IXJ_PCMCIA is not set
 
 #
-# ATA/IDE/MFM/RLL support
+# Generic Driver Options
 #
-CONFIG_IDE=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+CONFIG_PNPACPI=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_SX8=y
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
 
 #
-# IDE, ATA and ATAPI Block devices
+# ATA/ATAPI/MFM/RLL support
 #
+CONFIG_IDE=y
 CONFIG_BLK_DEV_IDE=y
 
 #
 # Please see Documentation/ide.txt for help/info on IDE drives
 #
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
 CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_IDEDISK_STROKE is not set
+CONFIG_IDEDISK_MULTI_MODE=y
 # CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_DELKIN=m
 CONFIG_BLK_DEV_IDECD=y
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -449,258 +466,243 @@ CONFIG_BLK_DEV_IDECD=y
 #
 # IDE chipset support/bugfixes
 #
+CONFIG_IDE_GENERIC=y
 CONFIG_BLK_DEV_CMD640=y
 # CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_BLK_DEV_IDEPNP is not set
 CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_BLK_DEV_GENERIC=y
 CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
 # CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
 # CONFIG_BLK_DEV_IDEDMA_FORCED is not set
 CONFIG_IDEDMA_PCI_AUTO=y
 # CONFIG_IDEDMA_ONLYDISK is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_PCI_WIP is not set
-CONFIG_BLK_DEV_ADMA100=y
-CONFIG_BLK_DEV_AEC62XX=y
-CONFIG_BLK_DEV_ALI15X3=y
-# CONFIG_WDC_ALI15X3 is not set
-CONFIG_BLK_DEV_AMD74XX=y
-CONFIG_AMD74XX_OVERRIDE=y
-CONFIG_BLK_DEV_ATIIXP=y
-CONFIG_BLK_DEV_CMD64X=y
-CONFIG_BLK_DEV_TRIFLEX=y
-CONFIG_BLK_DEV_CY82C693=y
-CONFIG_BLK_DEV_CS5530=y
-CONFIG_BLK_DEV_HPT34X=y
-# CONFIG_HPT34X_AUTODMA is not set
-CONFIG_BLK_DEV_HPT366=y
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_CS5535 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
 CONFIG_BLK_DEV_PIIX=y
-CONFIG_BLK_DEV_NS87415=y
-CONFIG_BLK_DEV_OPTI621=y
-CONFIG_BLK_DEV_PDC202XX_OLD=y
-# CONFIG_PDC202XX_BURST is not set
-CONFIG_BLK_DEV_PDC202XX_NEW=y
-# CONFIG_PDC202XX_FORCE is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_SC1200=y
-CONFIG_BLK_DEV_SVWKS=y
-CONFIG_BLK_DEV_SIIMAGE=y
-CONFIG_BLK_DEV_SIS5513=y
-CONFIG_BLK_DEV_SLC90E66=y
-CONFIG_BLK_DEV_TRM290=y
-CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
 # CONFIG_IDE_CHIPSETS is not set
-CONFIG_IDEDMA_AUTO=y
+CONFIG_BLK_DEV_IDEDMA=y
 # CONFIG_IDEDMA_IVB is not set
-# CONFIG_DMA_NONPCI is not set
-CONFIG_BLK_DEV_PDC202XX=y
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-# CONFIG_BLK_DEV_ATARAID_SII is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
 
 #
-# SCSI support
+# SCSI device support
 #
-CONFIG_SCSI=m
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
 
 #
 # SCSI support type (disk, tape, CD-ROM)
 #
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=8
+CONFIG_BLK_DEV_SD=y
 # CONFIG_CHR_DEV_ST is not set
 # CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_SR_EXTRA_DEVS=2
-CONFIG_CHR_DEV_SG=m
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
 
 #
 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
 #
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_MULTI_LUN is not set
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
 
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
 #
 # SCSI low-level drivers
 #
-CONFIG_BLK_DEV_3W_XXXX_RAID=m
-CONFIG_SCSI_7000FASST=m
-CONFIG_SCSI_ACARD=m
-CONFIG_SCSI_AHA152X=m
-CONFIG_SCSI_AHA1542=m
-CONFIG_SCSI_AHA1740=m
-CONFIG_SCSI_AACRAID=m
-CONFIG_SCSI_AIC7XXX=m
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-CONFIG_AIC7XXX_PROBE_EISA_VL=y
-# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
-# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
-CONFIG_AIC7XXX_DEBUG_MASK=0
-# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
-CONFIG_SCSI_AIC79XX=m
-CONFIG_AIC79XX_CMDS_PER_DEVICE=32
-CONFIG_AIC79XX_RESET_DELAY_MS=15000
-# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
-CONFIG_AIC79XX_ENABLE_RD_STRM=y
-# CONFIG_AIC79XX_DEBUG_ENABLE is not set
-CONFIG_AIC79XX_DEBUG_MASK=0
-# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX 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_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
 # CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
 CONFIG_SCSI_DPT_I2O=m
-CONFIG_SCSI_ADVANSYS=m
-CONFIG_SCSI_IN2000=m
-CONFIG_SCSI_AM53C974=m
-CONFIG_SCSI_MEGARAID=m
-CONFIG_SCSI_MEGARAID2=m
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
 CONFIG_SCSI_SATA=y
-CONFIG_SCSI_SATA_AHCI=m
-CONFIG_SCSI_SATA_SVW=m
-CONFIG_SCSI_ATA_PIIX=m
-CONFIG_SCSI_SATA_NV=m
-CONFIG_SCSI_SATA_QSTOR=m
-CONFIG_SCSI_SATA_PROMISE=m
+# CONFIG_SCSI_SATA_AHCI is not set
+# CONFIG_SCSI_SATA_SVW is not set
+CONFIG_SCSI_ATA_PIIX=y
+# CONFIG_SCSI_SATA_MV is not set
+# CONFIG_SCSI_SATA_NV is not set
+# CONFIG_SCSI_PDC_ADMA is not set
+# CONFIG_SCSI_SATA_QSTOR is not set
+# CONFIG_SCSI_SATA_PROMISE is not set
 CONFIG_SCSI_SATA_SX4=m
-CONFIG_SCSI_SATA_SIL=m
+# CONFIG_SCSI_SATA_SIL is not set
+# CONFIG_SCSI_SATA_SIL24 is not set
 CONFIG_SCSI_SATA_SIS=m
-CONFIG_SCSI_SATA_ULI=m
-CONFIG_SCSI_SATA_VIA=m
-CONFIG_SCSI_SATA_VITESSE=m
-CONFIG_SCSI_BUSLOGIC=m
-# CONFIG_SCSI_OMIT_FLASHPOINT is not set
-CONFIG_SCSI_CPQFCTS=m
-CONFIG_SCSI_DMX3191D=m
-CONFIG_SCSI_DTC3280=m
-CONFIG_SCSI_EATA=m
-CONFIG_SCSI_EATA_TAGGED_QUEUE=y
-CONFIG_SCSI_EATA_LINKED_COMMANDS=y
-CONFIG_SCSI_EATA_MAX_TAGS=16
-CONFIG_SCSI_EATA_DMA=m
-CONFIG_SCSI_EATA_PIO=m
-CONFIG_SCSI_FUTURE_DOMAIN=m
-CONFIG_SCSI_FD_MCS=m
-CONFIG_SCSI_GDTH=m
-CONFIG_SCSI_GENERIC_NCR5380=m
-CONFIG_SCSI_GENERIC_NCR53C400=y
-CONFIG_SCSI_G_NCR5380_PORT=y
-# CONFIG_SCSI_G_NCR5380_MEM is not set
-CONFIG_SCSI_IBMMCA=m
-CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y
-CONFIG_IBMMCA_SCSI_DEV_RESET=y
-CONFIG_SCSI_IPS=m
-CONFIG_SCSI_INITIO=m
-CONFIG_SCSI_INIA100=m
-CONFIG_SCSI_NCR53C406A=m
-CONFIG_SCSI_NCR_D700=m
-CONFIG_53C700_IO_MAPPED=y
-CONFIG_SCSI_NCR53C7xx=m
-CONFIG_SCSI_NCR53C7xx_sync=y
-CONFIG_SCSI_NCR53C7xx_FAST=y
-CONFIG_SCSI_NCR53C7xx_DISCONNECT=y
-CONFIG_SCSI_SYM53C8XX_2=m
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
-CONFIG_SCSI_NCR53C8XX=m
-CONFIG_SCSI_SYM53C8XX=m
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
-CONFIG_SCSI_NCR53C8XX_PQS_PDS=y
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
-CONFIG_SCSI_MCA_53C9X=m
-CONFIG_SCSI_PAS16=m
-CONFIG_SCSI_PCI2000=m
-CONFIG_SCSI_PCI2220I=m
-CONFIG_SCSI_PSI240I=m
-CONFIG_SCSI_QLOGIC_FAS=m
-CONFIG_SCSI_QLOGIC_ISP=m
-CONFIG_SCSI_QLOGIC_FC=m
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
-CONFIG_SCSI_QLOGIC_1280=m
-CONFIG_SCSI_SEAGATE=m
-CONFIG_SCSI_SIM710=m
-CONFIG_SCSI_SYM53C416=m
-CONFIG_SCSI_DC390T=m
-# CONFIG_SCSI_DC390T_NOGENSUPP is not set
-CONFIG_SCSI_T128=m
-CONFIG_SCSI_U14_34F=m
-CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
-CONFIG_SCSI_U14_34F_MAX_TAGS=8
-CONFIG_SCSI_ULTRASTOR=m
-CONFIG_SCSI_NSP32=m
+# CONFIG_SCSI_SATA_ULI is not set
+# CONFIG_SCSI_SATA_VIA is not set
+# CONFIG_SCSI_SATA_VITESSE is not set
+CONFIG_SCSI_SATA_INTEL_COMBINED=y
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA 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_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
 # CONFIG_SCSI_DEBUG is not set
 
 #
 # PCMCIA SCSI adapter support
 #
-CONFIG_SCSI_PCMCIA=y
-CONFIG_PCMCIA_AHA152X=m
-CONFIG_PCMCIA_FDOMAIN=m
-CONFIG_PCMCIA_NINJA_SCSI=m
-CONFIG_PCMCIA_QLOGIC=m
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
 
 #
 # Fusion MPT device support
 #
-CONFIG_FUSION=m
-# CONFIG_FUSION_BOOT is not set
-CONFIG_FUSION_MAX_SGE=40
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-CONFIG_FUSION_LAN=m
-CONFIG_NET_FC=y
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=y
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
+# CONFIG_IEEE1394_EXPORT_FULL_API is not set
+
+#
+# Device Drivers
+#
+
+#
+# Texas Instruments PCILynx requires I2C
+#
+CONFIG_IEEE1394_OHCI1394=y
 
 #
-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+# Protocol Drivers
 #
-# CONFIG_IEEE1394 is not set
+# CONFIG_IEEE1394_VIDEO1394 is not set
+# CONFIG_IEEE1394_SBP2 is not set
+# CONFIG_IEEE1394_ETH1394 is not set
+# CONFIG_IEEE1394_DV1394 is not set
+CONFIG_IEEE1394_RAWIO=y
 
 #
 # 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
 
 #
 # Network device support
 #
 CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_IMQ is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
 
 #
 # ARCnet devices
 #
 # CONFIG_ARCNET is not set
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-CONFIG_EQUALIZER=m
-CONFIG_TUN=m
-# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
 
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# 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_MII=y
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
 CONFIG_NET_VENDOR_3COM=y
 CONFIG_EL1=m
 CONFIG_EL2=m
@@ -708,66 +710,59 @@ CONFIG_ELPLUS=m
 CONFIG_EL16=m
 CONFIG_EL3=m
 CONFIG_3C515=m
-CONFIG_ELMC=m
-CONFIG_ELMC_II=m
 CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
 CONFIG_LANCE=m
 CONFIG_NET_VENDOR_SMC=y
 CONFIG_WD80x3=m
-CONFIG_ULTRAMCA=m
 CONFIG_ULTRA=m
-CONFIG_ULTRA32=m
 CONFIG_SMC9194=m
 CONFIG_NET_VENDOR_RACAL=y
 CONFIG_NI5010=m
 CONFIG_NI52=m
 CONFIG_NI65=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_PCMCIA_XIRTULIP=m
 CONFIG_AT1700=m
 CONFIG_DEPCA=m
 CONFIG_HP100=m
-CONFIG_NET_ISA=y
-CONFIG_E2100=m
-CONFIG_EWRK3=m
-CONFIG_EEXPRESS=m
-CONFIG_EEXPRESS_PRO=m
-CONFIG_HPLAN_PLUS=m
-CONFIG_HPLAN=m
-CONFIG_LP486E=m
-CONFIG_ETH16I=m
-CONFIG_NE2000=m
-CONFIG_SKMC=m
-CONFIG_NE2_MCA=m
-CONFIG_IBMLANA=m
+# CONFIG_NET_ISA is not set
 CONFIG_NET_PCI=y
 CONFIG_PCNET32=m
 CONFIG_AMD8111_ETH=m
+CONFIG_AMD8111E_NAPI=y
 CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
 CONFIG_AC3200=m
 CONFIG_APRICOT=m
 CONFIG_B44=m
+CONFIG_FORCEDETH=m
 CONFIG_CS89x0=m
-CONFIG_TULIP=m
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
-CONFIG_DE4X5=m
 CONFIG_DGRS=m
-CONFIG_DM9102=m
-# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PIO is not set
+CONFIG_EEPRO100=m
 CONFIG_E100=m
-CONFIG_LNE390=m
 CONFIG_FEALNX=m
 CONFIG_NATSEMI=m
 CONFIG_NE2K_PCI=m
-CONFIG_FORCEDETH=m
-CONFIG_NE3210=m
-CONFIG_ES3210=m
-CONFIG_8139CP=m
+# CONFIG_8139CP is not set
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_SIS900=m
 CONFIG_EPIC100=m
@@ -776,8 +771,6 @@ CONFIG_SUNDANCE=m
 CONFIG_TLAN=m
 CONFIG_VIA_RHINE=m
 # CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_WINBOND_840=m
-# CONFIG_NET_POCKET is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -787,74 +780,38 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 # CONFIG_E1000_NAPI is not set
-# CONFIG_MYRI_SBUS is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
 CONFIG_NS83820=m
 CONFIG_HAMACHI=m
 CONFIG_YELLOWFIN=m
 CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKY2 is not set
 CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP 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_PPPOE=m
-CONFIG_PPPOATM=m
-# CONFIG_SLIP is not set
+CONFIG_BNX2=m
 
 #
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-CONFIG_WAVELAN=m
-CONFIG_ARLAN=m
-CONFIG_AIRONET4500=m
-CONFIG_AIRONET4500_NONCS=m
-CONFIG_AIRONET4500_PNP=y
-CONFIG_AIRONET4500_PCI=y
-CONFIG_AIRONET4500_ISA=y
-CONFIG_AIRONET4500_I365=y
-# CONFIG_AIRONET4500_PROC is not set
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_PCI_HERMES=m
-
-#
-# Wireless Pcmcia cards support
+# Ethernet (10000 Mbit)
 #
-CONFIG_PCMCIA_HERMES=m
-CONFIG_AIRO_CS=m
-# CONFIG_PCMCIA_ATMEL is not set
-
-#
-# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g)
-#
-CONFIG_PRISM54=m
-CONFIG_FW_LOADER=m
-CONFIG_NET_WIRELESS=y
+CONFIG_CHELSIO_T1=m
+CONFIG_IXGB=m
+# CONFIG_IXGB_NAPI is not set
+CONFIG_S2IO=m
+# CONFIG_S2IO_NAPI is not set
 
 #
 # Token Ring devices
 #
 # CONFIG_TR is not set
-CONFIG_NET_FC=y
-# CONFIG_IPHASE5526 is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
 
 #
-# Wan interfaces
+# Wireless LAN (non-hamradio)
 #
-# CONFIG_WAN is not set
+# CONFIG_NET_RADIO is not set
 
 #
 # PCMCIA network device support
@@ -864,266 +821,160 @@ CONFIG_PCMCIA_3C589=m
 CONFIG_PCMCIA_3C574=m
 CONFIG_PCMCIA_FMVJ18X=m
 CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_AXNET=m
 CONFIG_PCMCIA_NMCLAN=m
 CONFIG_PCMCIA_SMC91C92=m
 CONFIG_PCMCIA_XIRC2PS=m
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_PCMCIA_XIRCOM=m
-CONFIG_PCMCIA_XIRTULIP=m
-CONFIG_NET_PCMCIA_RADIO=y
-CONFIG_PCMCIA_RAYCS=m
-CONFIG_PCMCIA_NETWAVE=m
-CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_AIRONET4500_CS is not set
+CONFIG_PCMCIA_AXNET=m
 
 #
-# ATM drivers
+# Wan interfaces
 #
-CONFIG_ATM_TCP=m
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E_MAYBE is not set
-# CONFIG_ATM_HE is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 
 #
-# Amateur Radio support
+# ISDN subsystem
 #
-# CONFIG_HAMRADIO is not set
+CONFIG_ISDN=m
 
 #
-# IrDA (infrared) support
+# Old ISDN4Linux
 #
-# CONFIG_IRDA is not set
+# CONFIG_ISDN_I4L is not set
 
 #
-# ISDN subsystem
+# CAPI subsystem
 #
-CONFIG_ISDN=m
-CONFIG_ISDN_BOOL=y
-CONFIG_ISDN_PPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-# CONFIG_ISDN_AUDIO is not set
-
-#
-# ISDN feature submodules
-#
-# CONFIG_ISDN_DRV_LOOP is not set
-# CONFIG_ISDN_DIVERSION is not set
-
-#
-# low-level hardware drivers
-#
-
-#
-# Passive ISDN cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-CONFIG_ISDN_HISAX=y
-
-#
-#   D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-CONFIG_HISAX_NO_SENDCOMPLETE=y
-CONFIG_HISAX_NO_LLC=y
-CONFIG_HISAX_NO_KEYPAD=y
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-#   HiSax supported cards
-#
-CONFIG_HISAX_16_0=y
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_AVM_A1=y
-CONFIG_HISAX_IX1MICROR2=y
-CONFIG_HISAX_ASUSCOM=y
-CONFIG_HISAX_TELEINT=y
-CONFIG_HISAX_HFCS=y
-CONFIG_HISAX_SPORTSTER=y
-CONFIG_HISAX_MIC=y
-CONFIG_HISAX_ISURF=y
-CONFIG_HISAX_HSTSAPHIR=y
-CONFIG_HISAX_TELESPCI=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NETJET=y
-CONFIG_HISAX_NETJET_U=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_PCI=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_ENTERNOW_PCI=y
-# CONFIG_HISAX_DEBUG is not set
-CONFIG_HISAX_SEDLBAUER_CS=m
-CONFIG_HISAX_ELSA_CS=m
-CONFIG_HISAX_AVM_A1_CS=m
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-# CONFIG_USB_AUERISDN is not set
-
-#
-# Active ISDN cards
-#
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
-# CONFIG_ISDN_DRV_EICON is not set
-# CONFIG_ISDN_DRV_TPAM is not set
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_ISDN_CAPI_MIDDLEWARE=y
-CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
-CONFIG_ISDN_CAPI_CAPIFS=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
-# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set
-# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set
-# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
-# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set
-# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set
-# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set
-# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set
-# CONFIG_ISDN_DRV_AVMB1_C4 is not set
-# CONFIG_HYSDN is not set
-# CONFIG_HYSDN_CAPI is not set
+# CONFIG_ISDN_CAPI_CAPI20 is not set
 
 #
-# Old CD-ROM drivers (not SCSI, not IDE)
+# CAPI hardware drivers
 #
-# CONFIG_CD_NO_IDESCSI is not set
 
 #
-# Input core support
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
 #
-CONFIG_INPUT=m
-CONFIG_INPUT_KEYBDEV=m
-# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 # CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
 # CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# 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_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=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
 
 #
 # Character devices
 #
 CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-CONFIG_FRANDOM=y
-CONFIG_SERIAL_EXTENDED=y
-CONFIG_SERIAL_MANY_PORTS=y
-CONFIG_SERIAL_SHARE_IRQ=y
-# CONFIG_SERIAL_DETECT_IRQ is not set
-# CONFIG_SERIAL_MULTIPORT is not set
-# CONFIG_HUB6 is not set
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-# CONFIG_DIGIEPCA is not set
-# CONFIG_DIGI is not set
-# CONFIG_ESPSERIAL is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINK is not set
-# CONFIG_SYNCLINKMP is not set
-CONFIG_N_HDLC=m
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_RIO is not set
-# CONFIG_STALDRV is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
 
 #
-# I2C support
+# Serial drivers
 #
-# CONFIG_I2C is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_CS is not set
+# CONFIG_SERIAL_8250_ACPI is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
 
 #
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_INPUT_NS558 is not set
-# CONFIG_INPUT_LIGHTNING is not set
-# CONFIG_INPUT_PCIGAME is not set
-# CONFIG_INPUT_CS461X is not set
-# CONFIG_INPUT_EMU10K1 is not set
-# CONFIG_INPUT_SERIO is not set
-# CONFIG_INPUT_SERPORT is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_ANALOG is not set
-# CONFIG_INPUT_A3D is not set
-# CONFIG_INPUT_ADI is not set
-# CONFIG_INPUT_COBRA is not set
-# CONFIG_INPUT_GF2K is not set
-# CONFIG_INPUT_GRIP is not set
-# CONFIG_INPUT_INTERACT is not set
-# CONFIG_INPUT_TMDC is not set
-# CONFIG_INPUT_SIDEWINDER is not set
-# CONFIG_INPUT_IFORCE_USB is not set
-# CONFIG_INPUT_IFORCE_232 is not set
-# CONFIG_INPUT_WARRIOR is not set
-# CONFIG_INPUT_MAGELLAN is not set
-# CONFIG_INPUT_SPACEORB is not set
-# CONFIG_INPUT_SPACEBALL is not set
-# CONFIG_INPUT_STINGER is not set
-# CONFIG_INPUT_DB9 is not set
-# CONFIG_INPUT_GAMECON is not set
-# CONFIG_INPUT_TURBOGRAFX is not set
-# CONFIG_QIC02_TAPE is not set
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
 # 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
 
 #
 # Watchdog Cards
 #
 # CONFIG_WATCHDOG is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_RNG is not set
-# CONFIG_INTEL_RNG is not set
 # CONFIG_HW_RANDOM is not set
-# CONFIG_AMD_PM768 is not set
 # CONFIG_NVRAM is not set
-CONFIG_RTC=y
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
@@ -1133,185 +984,277 @@ CONFIG_RTC=y
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_NVIDIA is not set
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_AGP_EFFICEON is not set
+CONFIG_DRM=y
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_I810 is not set
+# CONFIG_DRM_I830 is not set
+# CONFIG_DRM_I915 is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
 
 #
-# Direct Rendering Manager (XFree86 DRI support)
+# PCMCIA character devices
 #
-# CONFIG_DRM is not set
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_MWAVE is not set
+# CONFIG_CS5535_GPIO is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+# CONFIG_HANGCHECK_TIMER is not set
 
 #
-# PCMCIA character devices
+# TPM devices
 #
-CONFIG_PCMCIA_SERIAL_CS=m
-CONFIG_SYNCLINK_CS=m
-# CONFIG_MWAVE is not set
-# CONFIG_OBMOUSE is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
 
 #
-# Multimedia devices
+# I2C support
 #
-# CONFIG_VIDEO_DEV is not set
+# CONFIG_I2C is not set
 
 #
-# File systems
+# SPI support
 #
-# CONFIG_QUOTA is not set
-# CONFIG_QFMT_V2 is not set
-# 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 is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_TMPFS is not set
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# 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 is not set
-# 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_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
 
 #
-# Network File Systems
+# Dallas's 1-wire bus
 #
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-# CONFIG_NFS_FS is not set
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_TCP is not set
-# CONFIG_SUNRPC is not set
-# CONFIG_LOCKD is not set
-# CONFIG_SMB_FS 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_W1 is not set
 
 #
-# Partition Types
+# Hardware Monitoring support
 #
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_SMB_NLS is not set
-CONFIG_NLS=y
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
 
 #
-# Native Language Support
+# Misc devices
 #
-CONFIG_NLS_DEFAULT="cp437"
-# 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
+# CONFIG_IBM_ASM is not set
 
 #
-# Console drivers
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=m
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON_OLD is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
-CONFIG_VIDEO_SELECT=y
 # CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
 
 #
-# Frame-buffer support
+# Logo configuration
 #
-# CONFIG_FB is not set
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # 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=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=y
+CONFIG_SND_AC97_BUS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ISA devices
+#
+# CONFIG_SND_AD1816A is not set
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_ALS100 is not set
+# CONFIG_SND_AZT2320 is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_DT019X is not set
+# CONFIG_SND_ES968 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_INTERWAVE is not set
+# CONFIG_SND_INTERWAVE_STB is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+# CONFIG_SND_WAVEFRONT is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5535AUDIO is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+CONFIG_SND_INTEL8X0=y
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
 
 #
 # USB support
 #
-CONFIG_USB=m
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 
 #
@@ -1319,81 +1262,99 @@ CONFIG_USB=m
 #
 CONFIG_USB_DEVICEFS=y
 # CONFIG_USB_BANDWIDTH 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_EHCI_HCD=m
-CONFIG_USB_UHCI=m
-CONFIG_USB_UHCI_ALT=m
-CONFIG_USB_OHCI=m
-# CONFIG_USB_SL811HS_ALT is not set
-# CONFIG_USB_SL811HS is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
 
 #
 # USB Device Class drivers
 #
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_BLUETOOTH is not set
-# CONFIG_USB_MIDI is not set
-CONFIG_USB_STORAGE=m
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
 # 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_USBAT 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=m
-# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
 
 #
-# USB Human Interface Devices (HID)
+# USB Input Devices
 #
-CONFIG_USB_HID=m
+CONFIG_USB_HID=y
 CONFIG_USB_HIDINPUT=y
-CONFIG_USB_HIDDEV=y
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV 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_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# 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
 
 #
 # USB Imaging devices
 #
-# CONFIG_USB_DC2XX is not set
 # CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
 # CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
 
 #
 # USB Multimedia devices
 #
+# CONFIG_USB_DABUSB is not set
 
 #
-#   Video4Linux support is needed for USB Multimedia device support
+# Video4Linux support is needed for USB Multimedia device support
 #
 
 #
-# USB Network adaptors
+# USB Network Adapters
 #
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_CATC=m
-CONFIG_USB_CDCETHER=m
-CONFIG_USB_USBNET=m
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
 
 #
 # USB port drivers
 #
-# CONFIG_USB_USS720 is not set
 
 #
 # USB Serial Converter support
@@ -1403,60 +1364,239 @@ CONFIG_USB_USBNET=m
 #
 # USB Miscellaneous drivers
 #
-# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
 # CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
 # CONFIG_USB_LCD is not set
-CONFIG_USB_SPEEDTOUCH=m
+# CONFIG_USB_LED is not set
+CONFIG_USB_CYTHERM=m
+# CONFIG_USB_PHIDGETKIT is not set
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
 
 #
-# Support for USB gadgets
+# USB Gadget Support
 #
 # CONFIG_USB_GADGET is not set
 
 #
-# Bluetooth support
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+# CONFIG_EDAC is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY 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=y
+CONFIG_REISERFS_FS_XATTR=y
+# CONFIG_REISERFS_FS_POSIX_ACL is not set
+# CONFIG_REISERFS_FS_SECURITY is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_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_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
 #
-# CONFIG_BLUEZ is not set
+# 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=y
+# 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_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Instrumentation Support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+# CONFIG_KPROBES is not set
 
 #
 # Kernel hacking
 #
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
 # CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=0
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_EARLY_PRINTK=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
 
 #
 # Cryptographic options
 #
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-CONFIG_CRYPTO_SHA256=y
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
 
 #
 # Library routines
 #
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_FW_LOADER=m
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
index 7ec39b1225e1dc8582a0fa48aba6f896e8b20fd5..affc3e83b33d866e1cfc9ba46685c777d04d0d53 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
@@ -38,13 +38,13 @@ CXXFLAGS   =
 
 # Normal build or /tools build.
 #
-ifeq "$(SMP)" ""
+ifeq "$(PASS)" ""
   TARGET = $(DIR_INFO)/linux-$(PATCHLEVEL)-ipfire
 endif
-ifeq "$(SMP)" "1"
+ifeq "$(PASS)" "SMP"
   TARGET = $(DIR_INFO)/linux-$(PATCHLEVEL)-ipfire-smp
 endif
-ifeq "$(SMP)" "installer"
+ifeq "$(PASS)" "installer"
   TARGET = $(DIR_INFO)/linux-$(PATCHLEVEL)-ipfire-installer
 endif
 
@@ -57,7 +57,7 @@ objects =$(DL_FILE) \
        patch-o-matic-ng-20060206.tar.bz2 \
        kbc_option_2420.patch \
        net4801.kernel.patch_2.4.31 \
-       netfilter-layer7-v2.1.tar.gz \
+       netfilter-layer7-v2.6.tar.gz \
        patch-$(PATCHLEVEL).gz
 
 $(DL_FILE)                                     = $(DL_FROM)/$(DL_FILE)
@@ -67,7 +67,7 @@ patch-o-matic-ng-20060206.tar.bz2     = $(URL_IPFIRE)/patch-o-matic-ng-20060206.
 iptables-1.3.5.tar.bz2                 = $(URL_IPFIRE)/iptables-1.3.5.tar.bz2
 kbc_option_2420.patch                  = $(URL_IPFIRE)/kbc_option_2420.patch
 net4801.kernel.patch_2.4.31                    = $(URL_IPFIRE)/net4801.kernel.patch_2.4.31
-netfilter-layer7-v2.1.tar.gz           = $(URL_IPFIRE)/netfilter-layer7-v2.1.tar.gz
+netfilter-layer7-v2.6.tar.gz           = $(URL_IPFIRE)/netfilter-layer7-v2.6.tar.gz
 
 $(DL_FILE)_MD5                                 = 50695965725367f39007023feac5e256
 patch-$(PATCHLEVEL).gz_MD5                             = 4b09dd018286850c20c0f051ced7b583
@@ -76,7 +76,7 @@ patch-o-matic-ng-20060206.tar.bz2_MD5         = eca9893afb753e331caddfe63142b566
 iptables-1.3.5.tar.bz2_MD5                             = 00fb916fa8040ca992a5ace56d905ea5
 kbc_option_2420.patch_MD5                              = 6d37870344f7fcf97ace1fbf43323c60
 net4801.kernel.patch_2.4.31_MD5                        = c7d64e3caedb2f2b10e1c11db7f73a04
-netfilter-layer7-v2.1.tar.gz_MD5                       = 551626a158c2a2cbfd937d27ecc7fac1
+netfilter-layer7-v2.6.tar.gz_MD5                       = 58135cd1aafaf4ae2fa478159206f064
 
 install : $(TARGET)
 
@@ -140,9 +140,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 #      cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(DIR_APP) --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-03-policy-lookup
 #      cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(DIR_APP) --iptables-path=$(ROOT)/usr/src/iptables/ ipsec-04-policy-checks
 #      cd $(DIR_SRC)/patch-o-matic* && yes 'y' | ./runme --kernel-path=$(DIR_APP) --iptables-path=$(ROOT)/usr/src/iptables/ TARPIT
-
-       # imq-patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.16-imq2.diff
        
        #layer7-patch
        cd $(DIR_SRC) && tar xzf $(DIR_DL)/netfilter-layer7-v2.6.tar.gz
@@ -151,7 +148,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        # ip_conntrack permissions from 440 to 444
        # cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ip_conntrack_standalone-patch-for-ipfire.patch
 
-ifeq "$(SMP)" ""
+ifeq "$(PASS)" ""
        # Only do this once on the non-SMP pass
        cd $(DIR_SRC) && tar czf $(DIR_DL)/iptables-fixed.tar.gz iptables-1.3.5
 endif
@@ -179,17 +176,17 @@ endif
 #      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.4.29_r8169clone.patch
 
        # bootsplash
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bootsplash-3.0.7-2.4.31-vanilla.diff
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bootsplash-3.1.6-2.6.15.diff
 
        # Cleanup kernel source
        cd $(DIR_APP) && make mrproper
-ifeq "$(SMP)" ""
+ifeq "$(PASS)" ""
        cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE) $(DIR_APP)/.config
 endif
-ifeq "$(SMP)" "1"
+ifeq "$(PASS)" "SMP"
        cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).smp $(DIR_APP)/.config
 endif
-ifeq "$(SMP)" "installer"
+ifeq "$(PASS)" "installer"
        cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE).installer $(DIR_APP)/.config
        cd $(DIR_APP) && sed -i -e 's/-O2/-Os/g' Makefile
 endif
@@ -197,28 +194,31 @@ endif
        cd $(DIR_APP) && make CC="$(KGCC)" oldconfig
        cd $(DIR_APP) && make CC="$(KGCC)" dep
        cd $(DIR_APP) && make CC="$(KGCC)" clean
-       if [ "$(SMP)" = "" ]; then \
+       if [ "$(PASS)" = "" ]; then \
                cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage; \
-               cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER); \
-               cd $(DIR_APP) && cp System.map /boot/System.map-$(VER); \
+               cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER); \
+               cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER); \
+               cd $(DIR_APP) && cp -v .config /boot/config-$(VER); \
                ln -sf vmlinuz-$(VER) /boot/vmlinuz; \
                ln -sf System.map-$(VER) /boot/System.map; \
                cd $(DIR_APP) && make CC="$(KGCC)" modules; \
                cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \
-       elif [ "$(SMP)" = "1" ]; then \
+       elif [ "$(PASS)" = "1" ]; then \
                cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =/EXTRAVERSION\ =\ -smp/' Makefile; \
                cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage; \
-               cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-$(VER)-smp; \
-               cd $(DIR_APP) && cp System.map /boot/System.map-$(VER)-smp; \
+               cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER)-smp; \
+               cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER)-smp; \
+               cd $(DIR_APP) && cp -v .config /boot/config-$(VER); \
                ln -sf vmlinuz-$(VER)-smp /boot/vmlinuz-smp; \
                cd $(DIR_APP) && make CC="$(KGCC)" modules; \
                cd $(DIR_APP) && make CC="$(KGCC)" modules_install; \
-       elif [ "$(SMP)" = "installer" ]; then \
+       elif [ "$(PASS)" = "installer" ]; then \
                cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage; \
-               cd $(DIR_APP) && cp arch/$(MACHINE)/boot/bzImage /boot/vmlinuz-installer; \
+               cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-installer; \
+               cd $(DIR_APP) && cp -v .config /boot/config-$(VER); \
        fi
        # remove symlinked pcmcia directory
-ifeq "$(SMP)" ""
+ifeq "$(PASS)" ""
        rm -rf /lib/modules/$(VER)/pcmcia
        find /lib/modules/$(VER)/ -name '*.o' -a -type f | xargs gzip -f9
 
@@ -230,7 +230,7 @@ ifeq "$(SMP)" ""
        mv -f  /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2/* /lib/modules/$(VER)/kernel/drivers/scsi
        rm -rf /lib/modules/$(VER)/kernel/drivers/scsi/sym53c8xx_2
 endif
-ifeq "$(SMP)" "1"
+ifeq "$(PASS)" "SMP"
        rm -rf /lib/modules/$(VER)-smp/pcmcia
        find /lib/modules/$(VER)-smp/ -name '*.o' -a -type f | xargs gzip -f9
 
@@ -243,7 +243,7 @@ ifeq "$(SMP)" "1"
        rm -rf /lib/modules/$(VER)-smp/kernel/drivers/scsi/sym53c8xx_2
 endif
 
-ifeq "$(SMP)" ""
+ifeq "$(PASS)" ""
        # Only do this once on the non-SMP pass
        cd $(DIR_APP) && make mandocs
        -mkdir -p /usr/share/man/man9/
diff --git a/make.sh b/make.sh
index cf15c5b59dd378f2ce77cc91fec11bc3e2028728..6476ab0ebcf86daa20c109d39975f1a622ed81e9 100644 (file)
--- a/make.sh
+++ b/make.sh
@@ -320,24 +320,24 @@ buildipfire() {
   ipfiremake ppp
   ipfiremake rp-pppoe
   ipfiremake unzip
-  ipfiremake linux                     PASS=ipfire SMP=installer
-  ipfiremake linux                     PASS=ipfire SMP=1
-#  ipfiremake 3cp4218                  SMP=1
-#  ipfiremake amedyn                   SMP=1
-#  ipfiremake cxacru                   SMP=1
-#  ipfiremake eagle                    SMP=1
-#  ipfiremake cnx_pci                  SMP=1
-#  ipfiremake fcdsl                    SMP=1
-#  ipfiremake fcdsl2                   SMP=1
-#  ipfiremake fcdslsl                  SMP=1
-#  ipfiremake fcdslusb         SMP=1
-#  ipfiremake fcdslslusb               SMP=1
-#  ipfiremake fcpci                    SMP=1
-#  ipfiremake fcclassic                SMP=1
-#  ipfiremake pulsar                   SMP=1
-#  ipfiremake unicorn                  SMP=1
-#  ipfiremake promise-sata-300-tx      SMP=1
-  ipfiremake linux                     PASS=ipfire
+  ipfiremake linux                     PASS=installer
+  ipfiremake linux                     PASS=SMP
+#  ipfiremake 3cp4218          PASS=SMP
+#  ipfiremake amedyn                   PASS=SMP
+#  ipfiremake cxacru                   PASS=SMP
+#  ipfiremake eagle                    PASS=SMP
+#  ipfiremake cnx_pci          PASS=SMP
+#  ipfiremake fcdsl                    PASS=SMP
+#  ipfiremake fcdsl2                   PASS=SMP
+#  ipfiremake fcdslsl          PASS=SMP
+#  ipfiremake fcdslusb         PASS=SMP
+#  ipfiremake fcdslslusb               PASS=SMP
+#  ipfiremake fcpci                    PASS=SMP
+#  ipfiremake fcclassic                PASS=SMP
+#  ipfiremake pulsar                   PASS=SMP
+#  ipfiremake unicorn          PASS=SMP
+#  ipfiremake promise-sata-300-tx      PASS=SMP
+  ipfiremake linux
 #  ipfiremake 3cp4218  
 #  ipfiremake amedyn   
 #  ipfiremake cxacru   
diff --git a/src/patches/bootsplash-3.1.6-2.6.15.diff b/src/patches/bootsplash-3.1.6-2.6.15.diff
new file mode 100644 (file)
index 0000000..ab4c472
--- /dev/null
@@ -0,0 +1,2799 @@
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/char/keyboard.c linux-2.6.15-VinX/drivers/char/keyboard.c
+--- linux-2.6.15/drivers/char/keyboard.c       2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/char/keyboard.c  2006-01-05 01:17:07.000000000 +0100
+@@ -1062,6 +1062,15 @@ static void kbd_keycode(unsigned int key
+                       if (keycode < BTN_MISC)
+                               printk(KERN_WARNING "keyboard.c: can't emulate rawmode for keycode %d\n", keycode);
++#ifdef CONFIG_BOOTSPLASH
++      /* This code has to be redone for some non-x86 platforms */
++      if (down == 1 && (keycode == 0x3c || keycode == 0x01)) {        /* F2 and ESC on PC keyboard */
++              extern int splash_verbose(void);
++              if (splash_verbose())
++                      return; 
++      }       
++#endif
++
+ #ifdef CONFIG_MAGIC_SYSRQ            /* Handle the SysRq Hack */
+       if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) {
+               sysrq_down = down;
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/char/n_tty.c linux-2.6.15-VinX/drivers/char/n_tty.c
+--- linux-2.6.15/drivers/char/n_tty.c  2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/char/n_tty.c     2006-01-05 01:17:07.000000000 +0100
+@@ -1292,6 +1292,15 @@ do_it_again:
+                       tty->minimum_to_wake = (minimum - (b - buf));
+               
+               if (!input_available_p(tty, 0)) {
++#ifdef CONFIG_BOOTSPLASH
++                      if (file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,0) ||
++                          file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1) ||
++                          file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) ||
++                          file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,1)) {
++                              extern int splash_verbose(void);
++                              (void)splash_verbose();
++                      }
++#endif
+                       if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
+                               retval = -EIO;
+                               break;
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/char/vt.c linux-2.6.15-VinX/drivers/char/vt.c
+--- linux-2.6.15/drivers/char/vt.c     2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/char/vt.c        2006-01-05 01:17:07.000000000 +0100
+@@ -3260,6 +3260,31 @@ void vcs_scr_writew(struct vc_data *vc, 
+       }
+ }
++#ifdef CONFIG_BOOTSPLASH
++void con_remap_def_color(struct vc_data *vc, int new_color)
++{
++       unsigned short *sbuf = vc->vc_screenbuf;
++       unsigned c, len = vc->vc_screenbuf_size >> 1;
++       int old_color;
++
++       if (sbuf) {
++             old_color = vc->vc_def_color << 8;
++             new_color <<= 8;
++             while(len--) {
++                     c = *sbuf;
++                     if (((c ^ old_color) & 0xf000) == 0)
++                             *sbuf ^= (old_color ^ new_color) & 0xf000; 
++                     if (((c ^ old_color) & 0x0f00) == 0)
++                             *sbuf ^= (old_color ^ new_color) & 0x0f00;
++                     sbuf++;
++             }
++             new_color >>= 8;
++       }
++       vc->vc_def_color = vc->vc_color = new_color;
++       update_attr(vc);
++}
++#endif
++
+ /*
+  *    Visible symbols for modules
+  */
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/Kconfig linux-2.6.15-VinX/drivers/video/Kconfig
+--- linux-2.6.15/drivers/video/Kconfig 2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/Kconfig    2006-01-05 01:17:11.000000000 +0100
+@@ -1469,5 +1469,9 @@ if FB && SYSFS
+       source "drivers/video/backlight/Kconfig"
+ endif
++if FB
++      source "drivers/video/bootsplash/Kconfig"
++endif
++
+ endmenu
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/Makefile linux-2.6.15-VinX/drivers/video/Makefile
+--- linux-2.6.15/drivers/video/Makefile        2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/Makefile   2006-01-05 01:17:11.000000000 +0100
+@@ -7,6 +7,7 @@
+ obj-$(CONFIG_VT)                += console/
+ obj-$(CONFIG_LOGO)              += logo/
+ obj-$(CONFIG_SYSFS)             += backlight/
++obj-$(CONFIG_BOOTSPLASH)        += bootsplash/
+ obj-$(CONFIG_FB)                  += fb.o
+ fb-y                              := fbmem.o fbmon.o fbcmap.o fbsysfs.o \
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/Kconfig linux-2.6.15-VinX/drivers/video/bootsplash/Kconfig
+--- linux-2.6.15/drivers/video/bootsplash/Kconfig      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/Kconfig 2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,17 @@
++#
++# Bootsplash configuration
++#
++
++menu "Bootsplash configuration"
++
++config BOOTSPLASH
++      bool "Bootup splash screen"
++      depends on FRAMEBUFFER_CONSOLE && FB_VESA
++      default n
++        ---help---
++          This option enables the Linux bootsplash screen. For more 
++          information on the bootsplash screen have a look at 
++          http://www.bootsplash.org/.
++          If you are unsure, say N
++endmenu
++
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/Makefile linux-2.6.15-VinX/drivers/video/bootsplash/Makefile
+--- linux-2.6.15/drivers/video/bootsplash/Makefile     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/Makefile        2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,5 @@
++# Makefile for the Linux bootsplash
++
++obj-$(CONFIG_BOOTSPLASH)              += bootsplash.o
++obj-$(CONFIG_BOOTSPLASH)              += decode-jpg.o
++obj-$(CONFIG_BOOTSPLASH)              += render.o
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/bootsplash.c linux-2.6.15-VinX/drivers/video/bootsplash/bootsplash.c
+--- linux-2.6.15/drivers/video/bootsplash/bootsplash.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/bootsplash.c    2006-01-05 01:17:09.000000000 +0100
+@@ -0,0 +1,984 @@
++/* 
++ *           linux/drivers/video/bootsplash/bootsplash.c - 
++ *                 splash screen handling functions.
++ *    
++ *    (w) 2001-2004 by Volker Poplawski, <volker@poplawski.de>,
++ *                Stefan Reinauer, <stepan@suse.de>,
++ *                Steffen Winterfeldt, <snwint@suse.de>,
++ *                  Michael Schroeder <mls@suse.de>
++ *                
++ *        Ideas & SuSE screen work by Ken Wimer, <wimer@suse.de>
++ *
++ *  For more information on this code check http://www.bootsplash.org/
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/fb.h>
++#include <linux/vt_kern.h>
++#include <linux/vmalloc.h>
++#include <linux/unistd.h>
++#include <linux/syscalls.h>
++
++#include <asm/irq.h>
++#include <asm/system.h>
++
++#include "../console/fbcon.h"
++#include "bootsplash.h"
++#include "decode-jpg.h"
++
++/* extern struct fb_ops vesafb_ops; */
++extern signed char con2fb_map[MAX_NR_CONSOLES];
++
++#define SPLASH_VERSION "3.1.6-2004/03/31"
++
++/* These errors have to match fbcon-jpegdec.h */
++static unsigned char *jpg_errors[] = {
++      "no SOI found", 
++      "not 8 bit", 
++      "height mismatch", 
++      "width mismatch",
++      "bad width or height", 
++      "too many COMPPs", 
++      "illegal HV", 
++      "quant table selector",
++      "picture is not YCBCR 221111",
++      "unknow CID in scan",
++      "dct not sequential",
++      "wrong marker",
++      "no EOI",
++      "bad tables",
++      "depth mismatch"
++};
++
++static struct jpeg_decdata *decdata = 0; /* private decoder data */
++
++static int splash_registered = 0;
++static int splash_usesilent = 0;      /* shall we display the silentjpeg? */
++int splash_default = 0xf01;
++
++static int splash_check_jpeg(unsigned char *jpeg, int width, int height, int depth);
++
++static int __init splash_setup(char *options)
++{
++      if(!strncmp("silent", options, 6)) {
++              printk(KERN_INFO "bootsplash: silent mode.\n");
++              splash_usesilent = 1;
++              /* skip "silent," */
++              if (strlen(options) == 6)
++                      return 0;
++              options += 7;
++      }
++      if(!strncmp("verbose", options, 7)) {
++              printk(KERN_INFO "bootsplash: verbose mode.\n");
++              splash_usesilent = 0;
++              return 0;
++      }
++      splash_default = simple_strtoul(options, NULL, 0);
++      return 0;
++}
++
++__setup("splash=", splash_setup);
++
++
++static int splash_hasinter(unsigned char *buf, int num)
++{
++    unsigned char *bufend = buf + num * 12;
++    while(buf < bufend) {
++      if (buf[1] > 127)               /* inter? */
++          return 1;
++      buf += buf[3] > 127 ? 24 : 12;  /* blend? */
++    }
++    return 0;
++}
++
++static int boxextract(unsigned char *buf, unsigned short *dp, unsigned char *cols, int *blendp)
++{
++    dp[0] = buf[0] | buf[1] << 8;
++    dp[1] = buf[2] | buf[3] << 8;
++    dp[2] = buf[4] | buf[5] << 8;
++    dp[3] = buf[6] | buf[7] << 8;
++    *(unsigned int *)(cols + 0) =
++      *(unsigned int *)(cols + 4) =
++      *(unsigned int *)(cols + 8) =
++      *(unsigned int *)(cols + 12) = *(unsigned int *)(buf + 8);
++    if (dp[1] > 32767) {
++      dp[1] = ~dp[1];
++      *(unsigned int *)(cols + 4) = *(unsigned int *)(buf + 12);
++      *(unsigned int *)(cols + 8) = *(unsigned int *)(buf + 16);
++      *(unsigned int *)(cols + 12) = *(unsigned int *)(buf + 20);
++      *blendp = 1;
++      return 24;
++    }
++    return 12;
++}
++
++static void boxit(unsigned char *pic, int bytes, unsigned char *buf, int num, int percent, int overpaint)
++{
++    int x, y, i, p, doblend, r, g, b, a, add;
++    unsigned short data1[4];
++    unsigned char cols1[16];
++    unsigned short data2[4];
++    unsigned char cols2[16];
++    unsigned char *bufend;
++    unsigned short *picp;
++    unsigned int stipple[32], sti, stin, stinn, stixs, stixe, stiys, stiye;
++    int xs, xe, ys, ye, xo, yo;
++
++    if (num == 0)
++      return;
++    bufend = buf + num * 12;
++    stipple[0] = 0xffffffff;
++    stin = 1;
++    stinn = 0;
++    stixs = stixe = 0;
++    stiys = stiye = 0;
++    while(buf < bufend) {
++      doblend = 0;
++      buf += boxextract(buf, data1, cols1, &doblend);
++      if (data1[0] == 32767 && data1[1] == 32767) {
++          /* box stipple */
++          if (stinn == 32)
++              continue;
++          if (stinn == 0) {
++              stixs = data1[2];
++              stixe = data1[3];
++              stiys = stiye = 0;
++          } else if (stinn == 4) {
++              stiys = data1[2];
++              stiye = data1[3];
++          }
++          stipple[stinn++] = (cols1[ 0] << 24) | (cols1[ 1] << 16) | (cols1[ 2] << 8) | cols1[ 3] ;
++          stipple[stinn++] = (cols1[ 4] << 24) | (cols1[ 5] << 16) | (cols1[ 6] << 8) | cols1[ 7] ;
++          stipple[stinn++] = (cols1[ 8] << 24) | (cols1[ 9] << 16) | (cols1[10] << 8) | cols1[11] ;
++          stipple[stinn++] = (cols1[12] << 24) | (cols1[13] << 16) | (cols1[14] << 8) | cols1[15] ;
++          stin = stinn;
++          continue;
++      }
++      stinn = 0;
++      if (data1[0] > 32767)
++          buf += boxextract(buf, data2, cols2, &doblend);
++      if (data1[0] == 32767 && data1[1] == 32766) {
++          /* box copy */
++          i = 12 * (short)data1[3];
++          doblend = 0;
++          i += boxextract(buf + i, data1, cols1, &doblend);
++          if (data1[0] > 32767)
++              boxextract(buf + i, data2, cols2, &doblend);
++      }
++      if (data1[0] == 32767)
++          continue;
++      if (data1[2] > 32767) {
++          if (overpaint)
++              continue;
++          data1[2] = ~data1[2];
++      }
++      if (data1[3] > 32767) {
++          if (percent == 65536)
++              continue;
++          data1[3] = ~data1[3];
++      }
++      if (data1[0] > 32767) {
++          data1[0] = ~data1[0];
++          for (i = 0; i < 4; i++)
++              data1[i] = (data1[i] * (65536 - percent) + data2[i] * percent) >> 16;
++          for (i = 0; i < 16; i++)
++              cols1[i] = (cols1[i] * (65536 - percent) + cols2[i] * percent) >> 16;
++      }
++      *(unsigned int *)cols2 = *(unsigned int *)cols1;
++      a = cols2[3];
++      if (a == 0 && !doblend)
++          continue;
++
++      if (stixs >= 32768) {
++          xo = xs = (stixs ^ 65535) + data1[0];
++          xe = stixe ? stixe + data1[0] : data1[2];
++      } else if (stixe >= 32768) {
++          xs = stixs ? data1[2] - stixs : data1[0];
++          xe = data1[2] - (stixe ^ 65535);
++          xo = xe + 1;
++      } else {
++          xo = xs = stixs;
++          xe = stixe ? stixe : data1[2];
++      }
++      if (stiys >= 32768) {
++          yo = ys = (stiys ^ 65535) + data1[1];
++          ye = stiye ? stiye + data1[1] : data1[3];
++      } else if (stiye >= 32768) {
++          ys = stiys ? data1[3] - stiys : data1[1];
++          ye = data1[3] - (stiye ^ 65535);
++          yo = ye + 1;
++      } else {
++          yo = ys = stiys;
++          ye = stiye ? stiye : data1[3];
++      }
++      xo = 32 - (xo & 31);
++      yo = stin - (yo % stin);
++      if (xs < data1[0])
++          xs = data1[0];
++      if (xe > data1[2])
++          xe = data1[2];
++      if (ys < data1[1])
++          ys = data1[1];
++      if (ye > data1[3])
++          ye = data1[3];
++
++      for (y = ys; y <= ye; y++) {
++          sti = stipple[(y + yo) % stin];
++          x = (xs + xo) & 31;
++          if (x)
++              sti = (sti << x) | (sti >> (32 - x));
++          if (doblend) {
++              if ((p = data1[3] - data1[1]) != 0)
++                  p = ((y - data1[1]) << 16) / p;
++              for (i = 0; i < 8; i++)
++                  cols2[i + 8] = (cols1[i] * (65536 - p) + cols1[i + 8] * p) >> 16;
++          }
++          add = (xs & 1);
++          add ^= (add ^ y) & 1 ? 1 : 3;               /* 2x2 ordered dithering */
++          picp = (unsigned short *)(pic + xs * 2 + y * bytes);
++          for (x = xs; x <= xe; x++) {
++              if (!(sti & 0x80000000)) {
++                  sti <<= 1;
++                  picp++;
++                  add ^= 3;
++                  continue;
++              }
++              sti = (sti << 1) | 1;
++              if (doblend) {
++                  if ((p = data1[2] - data1[0]) != 0)
++                      p = ((x - data1[0]) << 16) / p;
++                  for (i = 0; i < 4; i++)
++                      cols2[i] = (cols2[i + 8] * (65536 - p) + cols2[i + 12] * p) >> 16;
++                  a = cols2[3];
++              }
++              r = cols2[0];
++              g = cols2[1];
++              b = cols2[2];
++              if (a != 255) {
++                  i = *picp;
++                  r = ((i >> 8 & 0xf8) * (255 - a) + r * a) / 255;
++                  g = ((i >> 3 & 0xfc) * (255 - a) + g * a) / 255;
++                  b = ((i << 3 & 0xf8) * (255 - a) + b * a) / 255;
++              }
++  #define CLAMP(x) ((x) >= 256 ? 255 : (x))
++              i = ((CLAMP(r + add*2+1) & 0xf8) <<  8) |
++                  ((CLAMP(g + add    ) & 0xfc) <<  3) |
++                  ((CLAMP(b + add*2+1)       ) >>  3);
++              *picp++ = i;
++              add ^= 3;
++          }
++      }
++    }
++}
++
++static int splash_check_jpeg(unsigned char *jpeg, int width, int height, int depth)
++{
++    int size, err;
++    unsigned char *mem;
++
++    size = ((width + 15) & ~15) * ((height + 15) & ~15) * (depth >> 3);
++    mem = vmalloc(size);
++    if (!mem) {
++      printk(KERN_INFO "bootsplash: no memory for decoded picture.\n");
++      return -1;
++    }
++    if (!decdata)
++      decdata = vmalloc(sizeof(*decdata));
++    if ((err = jpeg_decode(jpeg, mem, ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata)))
++        printk(KERN_INFO "bootsplash: error while decompressing picture: %s (%d)\n",jpg_errors[err - 1], err);
++    vfree(mem);
++    return err ? -1 : 0;
++}
++
++static void splash_free(struct vc_data *vc, struct fb_info *info)
++{
++    if (!vc->vc_splash_data)
++      return;
++    if (info->silent_screen_base)
++          info->screen_base = info->silent_screen_base;
++    info->silent_screen_base = 0;
++    if (vc->vc_splash_data->splash_silentjpeg)
++          vfree(vc->vc_splash_data->splash_sboxes);
++    vfree(vc->vc_splash_data);
++    vc->vc_splash_data = 0;
++    info->splash_data = 0;
++}
++
++static int splash_mkpenguin(struct splash_data *data, int pxo, int pyo, int pwi, int phe, int pr, int pg, int pb)
++{
++    unsigned char *buf;
++    int i;
++
++    if (pwi ==0 || phe == 0)
++      return 0;
++    buf = (unsigned char *)data + sizeof(*data);
++    pwi += pxo - 1;
++    phe += pyo - 1;
++    *buf++ = pxo;
++    *buf++ = pxo >> 8;
++    *buf++ = pyo;
++    *buf++ = pyo >> 8;
++    *buf++ = pwi;
++    *buf++ = pwi >> 8;
++    *buf++ = phe;
++    *buf++ = phe >> 8;
++    *buf++ = pr;
++    *buf++ = pg;
++    *buf++ = pb;
++    *buf++ = 0;
++    for (i = 0; i < 12; i++, buf++)
++      *buf = buf[-12];
++    buf[-24] ^= 0xff;
++    buf[-23] ^= 0xff;
++    buf[-1] = 0xff;
++    return 2;
++}
++
++static const int splash_offsets[3][16] = {
++    /* len, unit, size, state, fgcol, col, xo, yo, wi, he
++       boxcnt, ssize, sboxcnt, percent, overok, palcnt */
++    /* V1 */
++    {   20,   -1,   16,    -1,    -1,  -1,  8, 10, 12, 14,
++           -1,    -1,      -1,      -1,     -1,     -1 },
++    /* V2 */
++    {   35,    8,   12,     9,    10,  11, 16, 18, 20, 22,
++           -1,    -1,      -1,      -1,     -1,     -1 },
++    /* V3 */
++    {   38,    8,   12,     9,    10,  11, 16, 18, 20, 22,
++           24,    28,      32,      34,     36,     37 },
++};
++
++#define SPLASH_OFF_LEN     offsets[0]
++#define SPLASH_OFF_UNIT    offsets[1]
++#define SPLASH_OFF_SIZE    offsets[2]
++#define SPLASH_OFF_STATE   offsets[3]
++#define SPLASH_OFF_FGCOL   offsets[4]
++#define SPLASH_OFF_COL     offsets[5]
++#define SPLASH_OFF_XO      offsets[6]
++#define SPLASH_OFF_YO      offsets[7]
++#define SPLASH_OFF_WI      offsets[8]
++#define SPLASH_OFF_HE      offsets[9]
++#define SPLASH_OFF_BOXCNT  offsets[10]
++#define SPLASH_OFF_SSIZE   offsets[11]
++#define SPLASH_OFF_SBOXCNT offsets[12]
++#define SPLASH_OFF_PERCENT offsets[13]
++#define SPLASH_OFF_OVEROK  offsets[14]
++#define SPLASH_OFF_PALCNT  offsets[15]
++
++static inline int splash_getb(unsigned char *pos, int off)
++{
++    return off == -1 ? 0 : pos[off];
++}
++
++static inline int splash_gets(unsigned char *pos, int off)
++{
++    return off == -1 ? 0 : pos[off] | pos[off + 1] << 8;
++}
++
++static inline int splash_geti(unsigned char *pos, int off)
++{
++    return off == -1 ? 0 :
++           pos[off] | pos[off + 1] << 8 | pos[off + 2] << 16 | pos[off + 3] << 24;
++}
++
++static int splash_getraw(unsigned char *start, unsigned char *end, int *update)
++{
++    unsigned char *ndata;
++    int version;
++    int splash_size;
++    int unit;
++    int width, height;
++    int silentsize;
++    int boxcnt;
++    int sboxcnt;
++    int palcnt;
++    int i, len;
++    const int *offsets;
++    struct vc_data *vc;
++    struct fb_info *info;
++    struct splash_data *sd;
++
++    if (update)
++      *update = -1;
++
++    if (!update || start[7] < '2' || start[7] > '3' || splash_geti(start, 12) != (int)0xffffffff)
++      printk(KERN_INFO "bootsplash %s: looking for picture...", SPLASH_VERSION);
++
++    for (ndata = start; ndata < end; ndata++) {
++      if (ndata[0] != 'B' || ndata[1] != 'O' || ndata[2] != 'O' || ndata[3] != 'T')
++          continue;
++      if (ndata[4] != 'S' || ndata[5] != 'P' || ndata[6] != 'L' || ndata[7] < '1' || ndata[7] > '3')
++          continue;
++      version = ndata[7] - '0';
++      offsets = splash_offsets[version - 1];
++      len = SPLASH_OFF_LEN;
++      unit = splash_getb(ndata, SPLASH_OFF_UNIT);
++      if (unit >= MAX_NR_CONSOLES)
++          continue;
++      if (unit) {
++              vc_allocate(unit);
++      }
++      vc = vc_cons[unit].d;
++      info = registered_fb[(int)con2fb_map[unit]];
++      width = info->var.xres;
++      height = info->var.yres;
++      splash_size = splash_geti(ndata, SPLASH_OFF_SIZE);
++      if (splash_size == (int)0xffffffff && version > 1) {
++          if ((sd = vc->vc_splash_data) != 0) {
++              int up = 0;
++              i = splash_getb(ndata, SPLASH_OFF_STATE);
++              if (i != 255) {
++                  sd->splash_state = i;
++                  up = -1;
++              }
++              i = splash_getb(ndata, SPLASH_OFF_FGCOL);
++              if (i != 255) {
++                  sd->splash_fg_color = i;
++                  up = -1;
++              }
++              i = splash_getb(ndata, SPLASH_OFF_COL);
++              if (i != 255) {
++                  sd->splash_color = i;
++                  up = -1;
++              }
++              boxcnt = sboxcnt = 0;
++              if (ndata + len <= end) {
++                  boxcnt = splash_gets(ndata, SPLASH_OFF_BOXCNT);
++                  sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT);
++              }
++              if (boxcnt) {
++                  i = splash_gets(ndata, len);
++                  if (boxcnt + i <= sd->splash_boxcount && ndata + len + 2 + boxcnt * 12 <= end) {
++
++                      if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_boxes + i * 12, 8)) {
++
++                          memcpy(sd->splash_boxes + i * 12, ndata + len + 2, boxcnt * 12);
++                          up |= 1;
++                      }
++                  }
++                  len += boxcnt * 12 + 2;
++              }
++              if (sboxcnt) {
++                  i = splash_gets(ndata, len);
++                  if (sboxcnt + i <= sd->splash_sboxcount && ndata + len + 2 + sboxcnt * 12 <= end) {
++                      if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_sboxes + i * 12, 8)) {
++                          memcpy(sd->splash_sboxes + i * 12, ndata + len + 2, sboxcnt * 12);
++                          up |= 2;
++                      }
++                  }
++              }
++              if (update)
++                  *update = up;
++          }
++          return unit;
++      }
++      if (splash_size == 0) {
++          printk(KERN_INFO"...found, freeing memory.\n");
++          if (vc->vc_splash_data)
++              splash_free(vc, info);
++          return unit;
++      }
++      boxcnt = splash_gets(ndata, SPLASH_OFF_BOXCNT);
++      palcnt = 3 * splash_getb(ndata, SPLASH_OFF_PALCNT);
++      if (ndata + len + splash_size > end) {
++          printk(KERN_INFO "...found, but truncated!\n");
++          return -1;
++      }
++      if (!jpeg_check_size(ndata + len + boxcnt * 12 + palcnt, width, height)) {
++          ndata += len + splash_size - 1;
++          continue;
++      }
++      if (splash_check_jpeg(ndata + len + boxcnt * 12 + palcnt, width, height, info->var.bits_per_pixel))
++          return -1;
++      silentsize = splash_geti(ndata, SPLASH_OFF_SSIZE);
++      if (silentsize)
++          printk(KERN_INFO" silentjpeg size %d bytes,", silentsize);
++      if (silentsize >= splash_size) {
++          printk(KERN_INFO " bigger than splashsize!\n");
++          return -1;
++      }
++      splash_size -= silentsize;
++      if (!splash_usesilent)
++          silentsize = 0;
++      else if (height * 2 * info->fix.line_length > info->fix.smem_len) {
++          printk(KERN_INFO " does not fit into framebuffer.\n");
++          silentsize = 0;
++      }
++      sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT);
++      if (silentsize) {
++          unsigned char *simage = ndata + len + splash_size + 12 * sboxcnt;
++          if (!jpeg_check_size(simage, width, height) ||
++              splash_check_jpeg(simage, width, height, info->var.bits_per_pixel)) {
++                  printk(KERN_INFO " error in silent jpeg.\n");
++                  silentsize = 0;
++              }
++      }
++      if (vc->vc_splash_data)
++          splash_free(vc, info);
++      vc->vc_splash_data = sd = vmalloc(sizeof(*sd) + splash_size + (version < 3 ? 2 * 12 : 0));
++      if (!sd)
++          break;
++      sd->splash_silentjpeg = 0;
++      sd->splash_sboxes = 0;
++      sd->splash_sboxcount = 0;
++      if (silentsize) {
++          sd->splash_silentjpeg = vmalloc(silentsize);
++          if (sd->splash_silentjpeg) {
++              memcpy(sd->splash_silentjpeg, ndata + len + splash_size, silentsize);
++              sd->splash_sboxes = vc->vc_splash_data->splash_silentjpeg;
++              sd->splash_silentjpeg += 12 * sboxcnt;
++              sd->splash_sboxcount = sboxcnt;
++          }
++      }
++      sd->splash_state = splash_getb(ndata, SPLASH_OFF_STATE);
++      sd->splash_fg_color = splash_getb(ndata, SPLASH_OFF_FGCOL);
++      sd->splash_color = splash_getb(ndata, SPLASH_OFF_COL);
++      sd->splash_overpaintok = splash_getb(ndata, SPLASH_OFF_OVEROK);
++      sd->splash_text_xo = splash_gets(ndata, SPLASH_OFF_XO);
++      sd->splash_text_yo = splash_gets(ndata, SPLASH_OFF_YO);
++      sd->splash_text_wi = splash_gets(ndata, SPLASH_OFF_WI);
++      sd->splash_text_he = splash_gets(ndata, SPLASH_OFF_HE);
++      sd->splash_percent = splash_gets(ndata, SPLASH_OFF_PERCENT);
++      if (version == 1) {
++          sd->splash_text_xo *= 8;
++          sd->splash_text_wi *= 8;
++          sd->splash_text_yo *= 16;
++          sd->splash_text_he *= 16;
++          sd->splash_color    = (splash_default >> 8) & 0x0f;
++          sd->splash_fg_color = (splash_default >> 4) & 0x0f;
++          sd->splash_state    = splash_default & 1;
++      }
++      if (sd->splash_text_xo + sd->splash_text_wi > width || sd->splash_text_yo + sd->splash_text_he > height) {
++          splash_free(vc, info);
++          printk(KERN_INFO " found, but has oversized text area!\n");
++          return -1;
++      }
++/*    if (!vc_cons[unit].d || info->fbops != &vesafb_ops) {
++          splash_free(vc, info);
++          printk(KERN_INFO " found, but framebuffer can't handle it!\n");
++          return -1;
++      } */
++      printk(KERN_INFO "...found (%dx%d, %d bytes, v%d).\n", width, height, splash_size, version);
++      if (version == 1) {
++          printk(KERN_WARNING "bootsplash: Using deprecated v1 header. Updating your splash utility recommended.\n");
++          printk(KERN_INFO    "bootsplash: Find the latest version at http://www.bootsplash.org/\n");
++      }
++
++      /* fake penguin box for older formats */
++      if (version == 1)
++          boxcnt = splash_mkpenguin(sd, sd->splash_text_xo + 10, sd->splash_text_yo + 10, sd->splash_text_wi - 20, sd->splash_text_he - 20, 0xf0, 0xf0, 0xf0);
++      else if (version == 2)
++          boxcnt = splash_mkpenguin(sd, splash_gets(ndata, 24), splash_gets(ndata, 26), splash_gets(ndata, 28), splash_gets(ndata, 30), splash_getb(ndata, 32), splash_getb(ndata, 33), splash_getb(ndata, 34));
++
++      memcpy((char *)sd + sizeof(*sd) + (version < 3 ? boxcnt * 12 : 0), ndata + len, splash_size);
++      sd->splash_boxcount = boxcnt;
++      sd->splash_boxes = (unsigned char *)sd + sizeof(*sd);
++      sd->splash_palette = sd->splash_boxes + boxcnt * 12;
++      sd->splash_jpeg = sd->splash_palette + palcnt;
++      sd->splash_palcnt = palcnt / 3;
++      sd->splash_dosilent = sd->splash_silentjpeg != 0;
++      return unit;
++    }
++    printk(KERN_INFO "...no good signature found.\n");
++    return -1;
++}
++
++int splash_verbose(void) 
++{
++    struct vc_data *vc;
++    struct fb_info *info;
++
++    if (!splash_usesilent)
++        return 0;
++
++    vc = vc_cons[0].d;
++
++    if (!vc || !vc->vc_splash_data || !vc->vc_splash_data->splash_state)
++      return 0;
++    if (fg_console != vc->vc_num)
++      return 0;
++    if (!vc->vc_splash_data->splash_silentjpeg || !vc->vc_splash_data->splash_dosilent)
++      return 0;
++    vc->vc_splash_data->splash_dosilent = 0;
++    info = registered_fb[(int)con2fb_map[0]];
++    if (!info->silent_screen_base)
++      return 0;
++    splashcopy(info->silent_screen_base, info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, info->fix.line_length);
++    info->screen_base = info->silent_screen_base;
++    info->silent_screen_base = 0;
++    return 1;
++}
++
++static void splash_off(struct fb_info *info)
++{
++      if (info->silent_screen_base)
++              info->screen_base = info->silent_screen_base;
++      info->silent_screen_base = 0;
++      info->splash_data = 0;
++      if (info->splash_pic)
++              vfree(info->splash_pic);
++      info->splash_pic = 0;
++      info->splash_pic_size = 0;
++}
++
++int splash_prepare(struct vc_data *vc, struct fb_info *info)
++{
++      int err;
++        int width, height, depth, size, sbytes;
++
++      if (!vc->vc_splash_data || !vc->vc_splash_data->splash_state) {
++              if (decdata)
++                      vfree(decdata);
++              decdata = 0;
++              splash_off(info);
++              return -1;
++      }
++
++        width = info->var.xres;
++        height = info->var.yres;
++        depth = info->var.bits_per_pixel;
++      if (depth != 16) {      /* Other targets might need fixing */
++              splash_off(info);
++              return -2;
++      }
++
++      sbytes = ((width + 15) & ~15) * (depth >> 3);
++      size = sbytes * ((height + 15) & ~15);
++      if (size != info->splash_pic_size)
++              splash_off(info);
++      if (!info->splash_pic)
++              info->splash_pic = vmalloc(size);
++
++      if (!info->splash_pic) {
++              printk(KERN_INFO "bootsplash: not enough memory.\n");
++              splash_off(info);
++              return -3;
++      }
++
++      if (!decdata)
++              decdata = vmalloc(sizeof(*decdata));
++
++      if (vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent) {
++              /* fill area after framebuffer with other jpeg */
++              if ((err = jpeg_decode(vc->vc_splash_data->splash_silentjpeg, info->splash_pic, 
++                       ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata))) {
++                      printk(KERN_INFO "bootsplash: error while decompressing silent picture: %s (%d)\n", jpg_errors[err - 1], err);
++                      if (info->silent_screen_base)
++                              info->screen_base = info->silent_screen_base;
++                      vc->vc_splash_data->splash_dosilent = 0;
++              } else {
++                      if (vc->vc_splash_data->splash_sboxcount)
++                              boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_sboxes, 
++                                      vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 0);
++
++                      if (!info->silent_screen_base)
++                              info->silent_screen_base = info->screen_base;
++                      splashcopy(info->silent_screen_base, info->splash_pic, info->var.yres, info->var.xres, info->fix.line_length, sbytes);
++                      info->screen_base = info->silent_screen_base + info->fix.line_length * info->var.yres;
++              }
++      } else if (info->silent_screen_base)
++              info->screen_base = info->silent_screen_base;
++
++      if ((err = jpeg_decode(vc->vc_splash_data->splash_jpeg, info->splash_pic, 
++               ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata))) {
++              printk(KERN_INFO "bootsplash: error while decompressing picture: %s (%d) .\n", jpg_errors[err - 1], err);
++              splash_off(info);
++              return -4;
++      }
++      info->splash_pic_size = size;
++      info->splash_bytes = sbytes;
++      if (vc->vc_splash_data->splash_boxcount)
++              boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 0);
++      if (vc->vc_splash_data->splash_state)
++              info->splash_data = vc->vc_splash_data;
++      else
++              splash_off(info);
++      return 0;
++}
++
++
++#ifdef CONFIG_PROC_FS
++
++#include <linux/proc_fs.h>
++
++static int splash_read_proc(char *buffer, char **start, off_t offset, int size,
++                      int *eof, void *data);
++static int splash_write_proc(struct file *file, const char *buffer,
++                      unsigned long count, void *data);
++static int splash_status(struct vc_data *vc);
++static int splash_recolor(struct vc_data *vc);
++static int splash_proc_register(void);
++
++static struct proc_dir_entry *proc_splash;
++
++static int splash_recolor(struct vc_data *vc)
++{
++      if (!vc->vc_splash_data)
++          return -1;
++      if (!vc->vc_splash_data->splash_state)
++          return 0;
++      con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color);
++      if (fg_console == vc->vc_num) {
++              update_region(vc, vc->vc_origin + vc->vc_size_row * vc->vc_top,
++                            vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2);
++      }
++      return 0;
++}
++
++static int splash_status(struct vc_data *vc)
++{
++      struct fb_info *info;
++      printk(KERN_INFO "bootsplash: status on console %d changed to %s\n", vc->vc_num, vc->vc_splash_data && vc->vc_splash_data->splash_state ? "on" : "off");
++
++      info = registered_fb[(int) con2fb_map[vc->vc_num]];
++      if (fg_console == vc->vc_num)
++              splash_prepare(vc, info);
++      if (vc->vc_splash_data && vc->vc_splash_data->splash_state) {
++              con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color);
++              /* vc_resize also calls con_switch which resets yscroll */
++              vc_resize(vc, vc->vc_splash_data->splash_text_wi / vc->vc_font.width, vc->vc_splash_data->splash_text_he / vc->vc_font.height);
++              if (fg_console == vc->vc_num) {
++                      update_region(vc, vc->vc_origin + vc->vc_size_row * vc->vc_top,
++                                    vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2);
++                      splash_clear_margins(vc->vc_splash_data, vc, info, 0);
++              }
++      } else {
++              /* Switch bootsplash off */
++              con_remap_def_color(vc, 0x07);
++              vc_resize(vc, info->var.xres / vc->vc_font.width, info->var.yres / vc->vc_font.height);
++      }
++      return 0;
++}
++
++static int splash_read_proc(char *buffer, char **start, off_t offset, int size,
++                      int *eof, void *data)
++{
++      int len = 0;
++      off_t begin = 0;
++      struct vc_data *vc = vc_cons[0].d;
++      struct fb_info *info = registered_fb[(int)con2fb_map[0]];
++      int color = vc->vc_splash_data ? vc->vc_splash_data->splash_color << 4 |
++                      vc->vc_splash_data->splash_fg_color : splash_default >> 4;
++      int status = vc->vc_splash_data ? vc->vc_splash_data->splash_state & 1 : 0;
++      len += sprintf(buffer + len, "Splash screen v%s (0x%02x, %dx%d%s): %s\n",
++                      SPLASH_VERSION, color, info->var.xres, info->var.yres,
++                      (vc->vc_splash_data ?  vc->vc_splash_data->splash_dosilent : 0)? ", silent" : "",
++                                      status ? "on" : "off");
++      if (offset >= begin + len)
++              return 0;
++
++      *start = buffer + (begin - offset);
++
++      return (size < begin + len - offset ? size : begin + len - offset);
++}
++
++static int splash_write_proc(struct file *file, const char *buffer,
++                    unsigned long count, void *data)
++{
++        int new, unit;
++      struct vc_data *vc;
++      
++      if (!buffer || !splash_default)
++              return count;
++
++      acquire_console_sem();
++      if (!strncmp(buffer, "show", 4) || !strncmp(buffer, "hide", 4)) {
++              int pe, oldpe;
++
++              vc = vc_cons[0].d;
++              if (buffer[4] == ' ' && buffer[5] == 'p')
++                      pe = 0;
++              else if (buffer[4] == '\n')
++                      pe = 65535;
++              else
++                      pe = simple_strtoul(buffer + 5, NULL, 0);
++              if (pe < 0)
++                      pe = 0;
++              if (pe > 65535)
++                      pe = 65535;
++              if (*buffer == 'h')
++                      pe = 65535 - pe;
++              pe += pe > 32767;
++              if (vc->vc_splash_data && vc->vc_splash_data->splash_percent != pe) {
++                      struct fb_info *info;
++                      struct fbcon_ops *ops;
++
++                      oldpe = vc->vc_splash_data->splash_percent;
++                      vc->vc_splash_data->splash_percent = pe;
++                      if (fg_console != 0 || !vc->vc_splash_data->splash_state) {
++                              release_console_sem();
++                              return count;
++                      }
++                      info = registered_fb[(int) con2fb_map[vc->vc_num]];
++                      ops = info->fbcon_par;
++                      if (ops->blank_state) {
++                              release_console_sem();
++                              return count;
++                      }
++                      if (!vc->vc_splash_data->splash_overpaintok || pe == 65536 || pe < oldpe) {
++                              if (splash_hasinter(vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount))
++                                      splash_status(vc);
++                              else
++                                      splash_prepare(vc, info);
++                      } else {
++                              if (vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base)
++                                      boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1);
++                              boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1);
++                      }
++              }
++              release_console_sem();
++              return count;
++      }
++      if (!strncmp(buffer,"silent\n",7) || !strncmp(buffer,"verbose\n",8)) {
++              vc = vc_cons[0].d;
++              if (vc->vc_splash_data && vc->vc_splash_data->splash_silentjpeg) {
++                  if (vc->vc_splash_data->splash_dosilent != (buffer[0] == 's')) {
++                      vc->vc_splash_data->splash_dosilent = buffer[0] == 's';
++                      splash_status(vc);
++                  }
++              }
++              release_console_sem();
++              return count;
++      }
++      if (!strncmp(buffer,"freesilent\n",11)) {
++              vc = vc_cons[0].d;
++              if (vc->vc_splash_data && vc->vc_splash_data->splash_silentjpeg) {
++                  printk(KERN_INFO "bootsplash: freeing silent jpeg\n");
++                  vc->vc_splash_data->splash_silentjpeg = 0;
++                  vfree(vc->vc_splash_data->splash_sboxes);
++                  vc->vc_splash_data->splash_sboxes = 0;
++                  vc->vc_splash_data->splash_sboxcount = 0;
++                  if (vc->vc_splash_data->splash_dosilent)
++                      splash_status(vc);
++                  vc->vc_splash_data->splash_dosilent = 0;
++              }
++              release_console_sem();
++              return count;
++      }
++
++      if (!strncmp(buffer, "BOOTSPL", 7)) {
++          int up = -1;
++          unit = splash_getraw((unsigned char *)buffer, (unsigned char *)buffer + count, &up);
++          if (unit >= 0) {
++              vc = vc_cons[unit].d;
++              if (up == -1)
++                  splash_status(vc);
++              else {
++                  struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]];
++                  struct fbcon_ops *ops = info->fbcon_par;
++                  if (ops->blank_state)
++                      up = 0;
++                  if ((up & 2) != 0 && vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base)
++                      boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1);
++                  if ((up & 1) != 0)
++                          boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1);
++              }
++          }
++          release_console_sem();
++          return count;
++      }
++      vc = vc_cons[0].d;
++      if (!vc->vc_splash_data) {
++              release_console_sem();
++              return count;
++      }
++      if (buffer[0] == 't') {
++              vc->vc_splash_data->splash_state ^= 1;
++              splash_status(vc);
++              release_console_sem();
++              return count;
++      }
++      new = simple_strtoul(buffer, NULL, 0);
++      if (new > 1) {
++              /* expert user */
++              vc->vc_splash_data->splash_color    = new >> 8 & 0xff;
++              vc->vc_splash_data->splash_fg_color = new >> 4 & 0x0f;
++      }
++      if ((new & 1) == vc->vc_splash_data->splash_state)
++              splash_recolor(vc);
++      else {
++              vc->vc_splash_data->splash_state = new & 1;
++              splash_status(vc);
++      }
++      release_console_sem();
++      return count;
++}
++
++static int splash_proc_register(void)
++{
++      if ((proc_splash = create_proc_entry("splash", 0, 0))) {
++              proc_splash->read_proc = splash_read_proc;
++              proc_splash->write_proc = splash_write_proc;
++              return 0;
++      }
++      return 1;
++}
++
++# if 0
++static int splash_proc_unregister(void)
++{
++      if (proc_splash)
++              remove_proc_entry("splash", 0);
++      return 0;
++}
++# endif
++#endif        /* CONFIG_PROC_FS */
++
++void splash_init(void)
++{
++      struct fb_info *info;
++      struct vc_data *vc;
++      int isramfs = 1;
++      int fd;
++      int len;
++      int max_len = 1024*1024*2;
++      char *mem;
++
++      if (splash_registered)
++              return;
++      vc = vc_cons[0].d;
++      info = registered_fb[0];
++      if (!vc || !info || info->var.bits_per_pixel != 16)
++              return;
++#ifdef CONFIG_PROC_FS
++      splash_proc_register();
++#endif
++      splash_registered = 1;
++      if (vc->vc_splash_data)
++              return;
++      if ((fd = sys_open("/bootsplash", O_RDONLY, 0)) < 0) {
++              isramfs = 0;
++              fd = sys_open("/initrd.image", O_RDONLY, 0);
++      }
++      if (fd < 0)
++              return;
++      if ((len = (int)sys_lseek(fd, (off_t)0, 2)) <= 0) {
++              sys_close(fd);
++              return;
++      }
++      /* Don't look for more than the last 2MB */
++      if (len > max_len) {
++              printk( KERN_INFO "bootsplash: scanning last %dMB of initrd for signature\n",
++                              max_len>>20);
++              sys_lseek(fd, (off_t)(len - max_len), 0);
++              len = max_len;
++      } else {
++              sys_lseek(fd, (off_t)0, 0);
++      }
++
++      mem = vmalloc(len);
++      if (mem) {
++              acquire_console_sem();
++              if ((int)sys_read(fd, mem, len) == len && splash_getraw((unsigned char *)mem, (unsigned char *)mem + len, (int *)0) == 0 && vc->vc_splash_data)
++                      vc->vc_splash_data->splash_state = splash_default & 1;
++              release_console_sem();
++              vfree(mem);
++      }
++      sys_close(fd);
++      if (isramfs)
++              sys_unlink("/bootsplash");
++      return;
++}
++
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/bootsplash.h linux-2.6.15-VinX/drivers/video/bootsplash/bootsplash.h
+--- linux-2.6.15/drivers/video/bootsplash/bootsplash.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/bootsplash.h    2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,44 @@
++/* 
++ *    linux/drivers/video/bootsplash/bootsplash.h - splash screen definition.
++ *    
++ *    (w) 2001-2003 by Volker Poplawski, <volker@poplawski.de>
++ *                Stefan Reinauer, <stepan@suse.de>
++ *                
++ *                
++ *    idea and SuSE screen work by Ken Wimer, <wimer@suse.de>
++ */
++
++#ifndef __BOOTSPLASH_H
++#define __BOOTSPLASH_H
++
++struct fb_info;
++
++/* splash.c */
++extern int splash_prepare(struct vc_data *, struct fb_info *);
++extern void splash_init(void);
++
++/* splash_render.c */
++extern void splash_putcs(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      const unsigned short *s, int count, int ypos, int xpos);
++extern void splash_putc(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      int c, int ypos, int xpos);
++extern void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes);
++extern void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy,
++                      int sx, int height, int width);
++extern void splash_bmove(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, 
++                      int sx, int dy, int dx, int height, int width);
++extern void splash_clear_margins(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      int bottom_only);
++extern int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor);
++extern void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      int y, int sx, int dx, int width);
++extern void splash_blank(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      int blank);
++
++/* vt.c */
++extern void con_remap_def_color(struct vc_data *, int new_color);
++
++extern void acquire_console_sem(void);
++extern void release_console_sem(void);
++
++#endif
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/decode-jpg.c linux-2.6.15-VinX/drivers/video/bootsplash/decode-jpg.c
+--- linux-2.6.15/drivers/video/bootsplash/decode-jpg.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/decode-jpg.c    2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,958 @@
++/* 
++ *    linux/drivers/video/bootsplash/decode-jpg.c - a tiny jpeg decoder.
++ *      
++ *      (w) August 2001 by Michael Schroeder, <mls@suse.de>
++ *                  
++ */
++
++#include <linux/config.h>
++#include <linux/string.h>
++#include <asm/byteorder.h>
++
++#include "decode-jpg.h"
++
++#define ISHIFT 11
++
++#define IFIX(a) ((int)((a) * (1 << ISHIFT) + .5))
++#define IMULT(a, b) (((a) * (b)) >> ISHIFT)
++#define ITOINT(a) ((a) >> ISHIFT)
++
++#ifndef __P
++# define __P(x) x
++#endif
++
++/* special markers */
++#define M_BADHUFF     -1
++#define M_EOF         0x80
++
++struct in {
++      unsigned char *p;
++      unsigned int bits;
++      int left;
++      int marker;
++
++      int (*func) __P((void *));
++      void *data;
++};
++
++/*********************************/
++struct dec_hufftbl;
++struct enc_hufftbl;
++
++union hufftblp {
++      struct dec_hufftbl *dhuff;
++      struct enc_hufftbl *ehuff;
++};
++
++struct scan {
++      int dc;                 /* old dc value */
++
++      union hufftblp hudc;
++      union hufftblp huac;
++      int next;               /* when to switch to next scan */
++
++      int cid;                /* component id */
++      int hv;                 /* horiz/vert, copied from comp */
++      int tq;                 /* quant tbl, copied from comp */
++};
++
++/*********************************/
++
++#define DECBITS 10            /* seems to be the optimum */
++
++struct dec_hufftbl {
++      int maxcode[17];
++      int valptr[16];
++      unsigned char vals[256];
++      unsigned int llvals[1 << DECBITS];
++};
++
++static void decode_mcus __P((struct in *, int *, int, struct scan *, int *));
++static int dec_readmarker __P((struct in *));
++static void dec_makehuff __P((struct dec_hufftbl *, int *, unsigned char *));
++
++static void setinput __P((struct in *, unsigned char *));
++/*********************************/
++
++#undef PREC
++#define PREC int
++
++static void idctqtab __P((unsigned char *, PREC *));
++static void idct __P((int *, int *, PREC *, PREC, int));
++static void scaleidctqtab __P((PREC *, PREC));
++
++/*********************************/
++
++static void initcol __P((PREC[][64]));
++
++static void col221111 __P((int *, unsigned char *, int));
++static void col221111_16 __P((int *, unsigned char *, int));
++
++/*********************************/
++
++#define M_SOI 0xd8
++#define M_APP0        0xe0
++#define M_DQT 0xdb
++#define M_SOF0        0xc0
++#define M_DHT   0xc4
++#define M_DRI 0xdd
++#define M_SOS 0xda
++#define M_RST0        0xd0
++#define M_EOI 0xd9
++#define M_COM 0xfe
++
++static unsigned char *datap;
++
++static int getbyte(void)
++{
++      return *datap++;
++}
++
++static int getword(void)
++{
++      int c1, c2;
++      c1 = *datap++;
++      c2 = *datap++;
++      return c1 << 8 | c2;
++}
++
++struct comp {
++      int cid;
++      int hv;
++      int tq;
++};
++
++#define MAXCOMP 4
++struct jpginfo {
++      int nc;                 /* number of components */
++      int ns;                 /* number of scans */
++      int dri;                /* restart interval */
++      int nm;                 /* mcus til next marker */
++      int rm;                 /* next restart marker */
++};
++
++static struct jpginfo info;
++static struct comp comps[MAXCOMP];
++
++static struct scan dscans[MAXCOMP];
++
++static unsigned char quant[4][64];
++
++static struct dec_hufftbl dhuff[4];
++
++#define dec_huffdc (dhuff + 0)
++#define dec_huffac (dhuff + 2)
++
++static struct in in;
++
++static int readtables(int till)
++{
++      int m, l, i, j, lq, pq, tq;
++      int tc, th, tt;
++
++      for (;;) {
++              if (getbyte() != 0xff)
++                      return -1;
++              if ((m = getbyte()) == till)
++                      break;
++
++              switch (m) {
++              case 0xc2:
++                      return 0;
++
++              case M_DQT:
++                      lq = getword();
++                      while (lq > 2) {
++                              pq = getbyte();
++                              tq = pq & 15;
++                              if (tq > 3)
++                                      return -1;
++                              pq >>= 4;
++                              if (pq != 0)
++                                      return -1;
++                              for (i = 0; i < 64; i++)
++                                      quant[tq][i] = getbyte();
++                              lq -= 64 + 1;
++                      }
++                      break;
++
++              case M_DHT:
++                      l = getword();
++                      while (l > 2) {
++                              int hufflen[16], k;
++                              unsigned char huffvals[256];
++
++                              tc = getbyte();
++                              th = tc & 15;
++                              tc >>= 4;
++                              tt = tc * 2 + th;
++                              if (tc > 1 || th > 1)
++                                      return -1;
++                              for (i = 0; i < 16; i++)
++                                      hufflen[i] = getbyte();
++                              l -= 1 + 16;
++                              k = 0;
++                              for (i = 0; i < 16; i++) {
++                                      for (j = 0; j < hufflen[i]; j++)
++                                              huffvals[k++] = getbyte();
++                                      l -= hufflen[i];
++                              }
++                              dec_makehuff(dhuff + tt, hufflen,
++                                           huffvals);
++                      }
++                      break;
++
++              case M_DRI:
++                      l = getword();
++                      info.dri = getword();
++                      break;
++
++              default:
++                      l = getword();
++                      while (l-- > 2)
++                              getbyte();
++                      break;
++              }
++      }
++      return 0;
++}
++
++static void dec_initscans(void)
++{
++      int i;
++
++      info.nm = info.dri + 1;
++      info.rm = M_RST0;
++      for (i = 0; i < info.ns; i++)
++              dscans[i].dc = 0;
++}
++
++static int dec_checkmarker(void)
++{
++      int i;
++
++      if (dec_readmarker(&in) != info.rm)
++              return -1;
++      info.nm = info.dri;
++      info.rm = (info.rm + 1) & ~0x08;
++      for (i = 0; i < info.ns; i++)
++              dscans[i].dc = 0;
++      return 0;
++}
++
++int jpeg_check_size(unsigned char *buf, int width, int height)
++{
++      datap = buf;
++      getbyte(); 
++      getbyte(); 
++      readtables(M_SOF0);
++      getword();
++      getbyte();
++        if (height != getword() || width != getword())
++              return 0;
++        return 1;
++}
++
++int jpeg_decode(buf, pic, width, height, depth, decdata)
++unsigned char *buf, *pic;
++int width, height, depth;
++struct jpeg_decdata *decdata;
++{
++      int i, j, m, tac, tdc;
++      int mcusx, mcusy, mx, my;
++      int max[6];
++
++      if (!decdata || !buf || !pic)
++              return -1;
++      datap = buf;
++      if (getbyte() != 0xff)
++              return ERR_NO_SOI;
++      if (getbyte() != M_SOI)
++              return ERR_NO_SOI;
++      if (readtables(M_SOF0))
++              return ERR_BAD_TABLES;
++      getword();
++      i = getbyte();
++      if (i != 8)
++              return ERR_NOT_8BIT;
++      if (((getword() + 15) & ~15) != height)
++              return ERR_HEIGHT_MISMATCH;
++      if (((getword() + 15) & ~15) != width)
++              return ERR_WIDTH_MISMATCH;
++      if ((height & 15) || (width & 15))
++              return ERR_BAD_WIDTH_OR_HEIGHT;
++      info.nc = getbyte();
++      if (info.nc > MAXCOMP)
++              return ERR_TOO_MANY_COMPPS;
++      for (i = 0; i < info.nc; i++) {
++              int h, v;
++              comps[i].cid = getbyte();
++              comps[i].hv = getbyte();
++              v = comps[i].hv & 15;
++              h = comps[i].hv >> 4;
++              comps[i].tq = getbyte();
++              if (h > 3 || v > 3)
++                      return ERR_ILLEGAL_HV;
++              if (comps[i].tq > 3)
++                      return ERR_QUANT_TABLE_SELECTOR;
++      }
++      if (readtables(M_SOS))
++              return ERR_BAD_TABLES;
++      getword();
++      info.ns = getbyte();
++      if (info.ns != 3)
++              return ERR_NOT_YCBCR_221111;
++      for (i = 0; i < 3; i++) {
++              dscans[i].cid = getbyte();
++              tdc = getbyte();
++              tac = tdc & 15;
++              tdc >>= 4;
++              if (tdc > 1 || tac > 1)
++                      return ERR_QUANT_TABLE_SELECTOR;
++              for (j = 0; j < info.nc; j++)
++                      if (comps[j].cid == dscans[i].cid)
++                              break;
++              if (j == info.nc)
++                      return ERR_UNKNOWN_CID_IN_SCAN;
++              dscans[i].hv = comps[j].hv;
++              dscans[i].tq = comps[j].tq;
++              dscans[i].hudc.dhuff = dec_huffdc + tdc;
++              dscans[i].huac.dhuff = dec_huffac + tac;
++      }
++      
++      i = getbyte();
++      j = getbyte();
++      m = getbyte();
++      
++      if (i != 0 || j != 63 || m != 0)
++              return ERR_NOT_SEQUENTIAL_DCT;
++      
++      if (dscans[0].cid != 1 || dscans[1].cid != 2 || dscans[2].cid != 3)
++              return ERR_NOT_YCBCR_221111;
++
++      if (dscans[0].hv != 0x22 || dscans[1].hv != 0x11 || dscans[2].hv != 0x11)
++              return ERR_NOT_YCBCR_221111;
++
++      mcusx = width >> 4;
++      mcusy = height >> 4;
++
++
++      idctqtab(quant[dscans[0].tq], decdata->dquant[0]);
++      idctqtab(quant[dscans[1].tq], decdata->dquant[1]);
++      idctqtab(quant[dscans[2].tq], decdata->dquant[2]);
++      initcol(decdata->dquant);
++      setinput(&in, datap);
++
++#if 0
++      /* landing zone */
++      img[len] = 0;
++      img[len + 1] = 0xff;
++      img[len + 2] = M_EOF;
++#endif
++
++      dec_initscans();
++
++      dscans[0].next = 6 - 4;
++      dscans[1].next = 6 - 4 - 1;
++      dscans[2].next = 6 - 4 - 1 - 1; /* 411 encoding */
++      for (my = 0; my < mcusy; my++) {
++              for (mx = 0; mx < mcusx; mx++) {
++                      if (info.dri && !--info.nm)
++                              if (dec_checkmarker())
++                                      return ERR_WRONG_MARKER;
++                      
++                      decode_mcus(&in, decdata->dcts, 6, dscans, max);
++                      idct(decdata->dcts, decdata->out, decdata->dquant[0], IFIX(128.5), max[0]);
++                      idct(decdata->dcts + 64, decdata->out + 64, decdata->dquant[0], IFIX(128.5), max[1]);
++                      idct(decdata->dcts + 128, decdata->out + 128, decdata->dquant[0], IFIX(128.5), max[2]);
++                      idct(decdata->dcts + 192, decdata->out + 192, decdata->dquant[0], IFIX(128.5), max[3]);
++                      idct(decdata->dcts + 256, decdata->out + 256, decdata->dquant[1], IFIX(0.5), max[4]);
++                      idct(decdata->dcts + 320, decdata->out + 320, decdata->dquant[2], IFIX(0.5), max[5]);
++
++                      switch (depth) {
++                      case 24:
++                              col221111(decdata->out, pic + (my * 16 * mcusx + mx) * 16 * 3, mcusx * 16 * 3);
++                              break;
++                      case 16:
++                              col221111_16(decdata->out, pic + (my * 16 * mcusx + mx) * (16 * 2), mcusx * (16 * 2));
++                              break;
++                      default:
++                              return ERR_DEPTH_MISMATCH;
++                              break;
++                      }
++              }
++      }
++      
++      m = dec_readmarker(&in);
++      if (m != M_EOI)
++              return ERR_NO_EOI;
++
++      return 0;
++}
++
++/****************************************************************/
++/**************       huffman decoder             ***************/
++/****************************************************************/
++
++static int fillbits __P((struct in *, int, unsigned int));
++static int dec_rec2
++__P((struct in *, struct dec_hufftbl *, int *, int, int));
++
++static void setinput(in, p)
++struct in *in;
++unsigned char *p;
++{
++      in->p = p;
++      in->left = 0;
++      in->bits = 0;
++      in->marker = 0;
++}
++
++static int fillbits(in, le, bi)
++struct in *in;
++int le;
++unsigned int bi;
++{
++      int b, m;
++
++      if (in->marker) {
++              if (le <= 16)
++                      in->bits = bi << 16, le += 16;
++              return le;
++      }
++      while (le <= 24) {
++              b = *in->p++;
++              if (b == 0xff && (m = *in->p++) != 0) {
++                      if (m == M_EOF) {
++                              if (in->func && (m = in->func(in->data)) == 0)
++                                      continue;
++                      }
++                      in->marker = m;
++                      if (le <= 16)
++                              bi = bi << 16, le += 16;
++                      break;
++              }
++              bi = bi << 8 | b;
++              le += 8;
++      }
++      in->bits = bi;          /* tmp... 2 return values needed */
++      return le;
++}
++
++static int dec_readmarker(in)
++struct in *in;
++{
++      int m;
++
++      in->left = fillbits(in, in->left, in->bits);
++      if ((m = in->marker) == 0)
++              return 0;
++      in->left = 0;
++      in->marker = 0;
++      return m;
++}
++
++#define LEBI_DCL      int le, bi
++#define LEBI_GET(in)  (le = in->left, bi = in->bits)
++#define LEBI_PUT(in)  (in->left = le, in->bits = bi)
++
++#define GETBITS(in, n) (                                      \
++  (le < (n) ? le = fillbits(in, le, bi), bi = in->bits : 0),  \
++  (le -= (n)),                                                        \
++  bi >> le & ((1 << (n)) - 1)                                 \
++)
++
++#define UNGETBITS(in, n) (    \
++  le += (n)                   \
++)
++
++
++static int dec_rec2(in, hu, runp, c, i)
++struct in *in;
++struct dec_hufftbl *hu;
++int *runp;
++int c, i;
++{
++      LEBI_DCL;
++
++      LEBI_GET(in);
++      if (i) {
++              UNGETBITS(in, i & 127);
++              *runp = i >> 8 & 15;
++              i >>= 16;
++      } else {
++              for (i = DECBITS; (c = ((c << 1) | GETBITS(in, 1))) >= (hu->maxcode[i]); i++);
++              if (i >= 16) {
++                      in->marker = M_BADHUFF;
++                      return 0;
++              }
++              i = hu->vals[hu->valptr[i] + c - hu->maxcode[i - 1] * 2];
++              *runp = i >> 4;
++              i &= 15;
++      }
++      if (i == 0) {           /* sigh, 0xf0 is 11 bit */
++              LEBI_PUT(in);
++              return 0;
++      }
++      /* receive part */
++      c = GETBITS(in, i);
++      if (c < (1 << (i - 1)))
++              c += (-1 << i) + 1;
++      LEBI_PUT(in);
++      return c;
++}
++
++#define DEC_REC(in, hu, r, i)  (      \
++  r = GETBITS(in, DECBITS),           \
++  i = hu->llvals[r],                  \
++  i & 128 ?                           \
++    (                                 \
++      UNGETBITS(in, i & 127),         \
++      r = i >> 8 & 15,                        \
++      i >> 16                         \
++    )                                 \
++  :                                   \
++    (                                 \
++      LEBI_PUT(in),                   \
++      i = dec_rec2(in, hu, &r, r, i), \
++      LEBI_GET(in),                   \
++      i                                       \
++    )                                 \
++)
++
++static void decode_mcus(in, dct, n, sc, maxp)
++struct in *in;
++int *dct;
++int n;
++struct scan *sc;
++int *maxp;
++{
++      struct dec_hufftbl *hu;
++      int i, r, t;
++      LEBI_DCL;
++
++      memset(dct, 0, n * 64 * sizeof(*dct));
++      LEBI_GET(in);
++      while (n-- > 0) {
++              hu = sc->hudc.dhuff;
++              *dct++ = (sc->dc += DEC_REC(in, hu, r, t));
++
++              hu = sc->huac.dhuff;
++              i = 63;
++              while (i > 0) {
++                      t = DEC_REC(in, hu, r, t);
++                      if (t == 0 && r == 0) {
++                              dct += i;
++                              break;
++                      }
++                      dct += r;
++                      *dct++ = t;
++                      i -= r + 1;
++              }
++              *maxp++ = 64 - i;
++              if (n == sc->next)
++                      sc++;
++      }
++      LEBI_PUT(in);
++}
++
++static void dec_makehuff(hu, hufflen, huffvals)
++struct dec_hufftbl *hu;
++int *hufflen;
++unsigned char *huffvals;
++{
++      int code, k, i, j, d, x, c, v;
++      for (i = 0; i < (1 << DECBITS); i++)
++              hu->llvals[i] = 0;
++
++/*
++ * llvals layout:
++ *
++ * value v already known, run r, backup u bits:
++ *  vvvvvvvvvvvvvvvv 0000 rrrr 1 uuuuuuu
++ * value unknown, size b bits, run r, backup u bits:
++ *  000000000000bbbb 0000 rrrr 0 uuuuuuu
++ * value and size unknown:
++ *  0000000000000000 0000 0000 0 0000000
++ */
++      code = 0;
++      k = 0;
++      for (i = 0; i < 16; i++, code <<= 1) {  /* sizes */
++              hu->valptr[i] = k;
++              for (j = 0; j < hufflen[i]; j++) {
++                      hu->vals[k] = *huffvals++;
++                      if (i < DECBITS) {
++                              c = code << (DECBITS - 1 - i);
++                              v = hu->vals[k] & 0x0f; /* size */
++                              for (d = 1 << (DECBITS - 1 - i); --d >= 0;) {
++                                      if (v + i < DECBITS) {  /* both fit in table */
++                                              x = d >> (DECBITS - 1 - v -
++                                                        i);
++                                              if (v && x < (1 << (v - 1)))
++                                                      x += (-1 << v) + 1;
++                                              x = x << 16 | (hu-> vals[k] & 0xf0) << 4 |
++                                                      (DECBITS - (i + 1 + v)) | 128;
++                                      } else
++                                              x = v << 16 | (hu-> vals[k] & 0xf0) << 4 |
++                                                      (DECBITS - (i + 1));
++                                      hu->llvals[c | d] = x;
++                              }
++                      }
++                      code++;
++                      k++;
++              }
++              hu->maxcode[i] = code;
++      }
++      hu->maxcode[16] = 0x20000;      /* always terminate decode */
++}
++
++/****************************************************************/
++/**************             idct                  ***************/
++/****************************************************************/
++
++#define ONE ((PREC)IFIX(1.))
++#define S2  ((PREC)IFIX(0.382683432))
++#define C2  ((PREC)IFIX(0.923879532))
++#define C4  ((PREC)IFIX(0.707106781))
++
++#define S22 ((PREC)IFIX(2 * 0.382683432))
++#define C22 ((PREC)IFIX(2 * 0.923879532))
++#define IC4 ((PREC)IFIX(1 / 0.707106781))
++
++#define C3IC1 ((PREC)IFIX(0.847759065))       /* c3/c1 */
++#define C5IC1 ((PREC)IFIX(0.566454497))       /* c5/c1 */
++#define C7IC1 ((PREC)IFIX(0.198912367))       /* c7/c1 */
++
++#define XPP(a,b) (t = a + b, b = a - b, a = t)
++#define XMP(a,b) (t = a - b, b = a + b, a = t)
++#define XPM(a,b) (t = a + b, b = b - a, a = t)
++
++#define ROT(a,b,s,c) (        t = IMULT(a + b, s),    \
++                      a = IMULT(a, c - s) + t,        \
++                      b = IMULT(b, c + s) - t)
++
++#define IDCT          \
++(                     \
++  XPP(t0, t1),                \
++  XMP(t2, t3),                \
++  t2 = IMULT(t2, IC4) - t3,   \
++  XPP(t0, t3),                \
++  XPP(t1, t2),                \
++  XMP(t4, t7),                \
++  XPP(t5, t6),                \
++  XMP(t5, t7),                \
++  t5 = IMULT(t5, IC4),        \
++  ROT(t4, t6, S22, C22),\
++  t6 -= t7,           \
++  t5 -= t6,           \
++  t4 -= t5,           \
++  XPP(t0, t7),                \
++  XPP(t1, t6),                \
++  XPP(t2, t5),                \
++  XPP(t3, t4)         \
++)
++
++static unsigned char zig2[64] = {
++      0, 2, 3, 9, 10, 20, 21, 35,
++      14, 16, 25, 31, 39, 46, 50, 57,
++      5, 7, 12, 18, 23, 33, 37, 48,
++      27, 29, 41, 44, 52, 55, 59, 62,
++      15, 26, 30, 40, 45, 51, 56, 58,
++      1, 4, 8, 11, 19, 22, 34, 36,
++      28, 42, 43, 53, 54, 60, 61, 63,
++      6, 13, 17, 24, 32, 38, 47, 49
++};
++
++void idct(in, out, quant, off, max)
++int *in;
++int *out;
++PREC *quant;
++PREC off;
++int max;
++{
++      PREC t0, t1, t2, t3, t4, t5, t6, t7, t;
++      PREC tmp[64], *tmpp;
++      int i, j;
++      unsigned char *zig2p;
++
++      t0 = off;
++      if (max == 1) {
++              t0 += in[0] * quant[0];
++              for (i = 0; i < 64; i++)
++                      out[i] = ITOINT(t0);
++              return;
++      }
++      zig2p = zig2;
++      tmpp = tmp;
++      for (i = 0; i < 8; i++) {
++              j = *zig2p++;
++              t0 += in[j] * quant[j];
++              j = *zig2p++;
++              t5 = in[j] * quant[j];
++              j = *zig2p++;
++              t2 = in[j] * quant[j];
++              j = *zig2p++;
++              t7 = in[j] * quant[j];
++              j = *zig2p++;
++              t1 = in[j] * quant[j];
++              j = *zig2p++;
++              t4 = in[j] * quant[j];
++              j = *zig2p++;
++              t3 = in[j] * quant[j];
++              j = *zig2p++;
++              t6 = in[j] * quant[j];
++              IDCT;
++              tmpp[0 * 8] = t0;
++              tmpp[1 * 8] = t1;
++              tmpp[2 * 8] = t2;
++              tmpp[3 * 8] = t3;
++              tmpp[4 * 8] = t4;
++              tmpp[5 * 8] = t5;
++              tmpp[6 * 8] = t6;
++              tmpp[7 * 8] = t7;
++              tmpp++;
++              t0 = 0;
++      }
++      for (i = 0; i < 8; i++) {
++              t0 = tmp[8 * i + 0];
++              t1 = tmp[8 * i + 1];
++              t2 = tmp[8 * i + 2];
++              t3 = tmp[8 * i + 3];
++              t4 = tmp[8 * i + 4];
++              t5 = tmp[8 * i + 5];
++              t6 = tmp[8 * i + 6];
++              t7 = tmp[8 * i + 7];
++              IDCT;
++              out[8 * i + 0] = ITOINT(t0);
++              out[8 * i + 1] = ITOINT(t1);
++              out[8 * i + 2] = ITOINT(t2);
++              out[8 * i + 3] = ITOINT(t3);
++              out[8 * i + 4] = ITOINT(t4);
++              out[8 * i + 5] = ITOINT(t5);
++              out[8 * i + 6] = ITOINT(t6);
++              out[8 * i + 7] = ITOINT(t7);
++      }
++}
++
++static unsigned char zig[64] = {
++      0, 1, 5, 6, 14, 15, 27, 28,
++      2, 4, 7, 13, 16, 26, 29, 42,
++      3, 8, 12, 17, 25, 30, 41, 43,
++      9, 11, 18, 24, 31, 40, 44, 53,
++      10, 19, 23, 32, 39, 45, 52, 54,
++      20, 22, 33, 38, 46, 51, 55, 60,
++      21, 34, 37, 47, 50, 56, 59, 61,
++      35, 36, 48, 49, 57, 58, 62, 63
++};
++
++static PREC aaidct[8] = {
++      IFIX(0.3535533906), IFIX(0.4903926402),
++      IFIX(0.4619397663), IFIX(0.4157348062),
++      IFIX(0.3535533906), IFIX(0.2777851165),
++      IFIX(0.1913417162), IFIX(0.0975451610)
++};
++
++
++static void idctqtab(qin, qout)
++unsigned char *qin;
++PREC *qout;
++{
++      int i, j;
++
++      for (i = 0; i < 8; i++)
++              for (j = 0; j < 8; j++)
++                      qout[zig[i * 8 + j]] = qin[zig[i * 8 + j]] * 
++                                              IMULT(aaidct[i], aaidct[j]);
++}
++
++static void scaleidctqtab(q, sc)
++PREC *q;
++PREC sc;
++{
++      int i;
++
++      for (i = 0; i < 64; i++)
++              q[i] = IMULT(q[i], sc);
++}
++
++/****************************************************************/
++/**************          color decoder            ***************/
++/****************************************************************/
++
++#define ROUND
++
++/*
++ * YCbCr Color transformation:
++ *
++ * y:0..255   Cb:-128..127   Cr:-128..127
++ *
++ *      R = Y                + 1.40200 * Cr
++ *      G = Y - 0.34414 * Cb - 0.71414 * Cr
++ *      B = Y + 1.77200 * Cb
++ *
++ * =>
++ *      Cr *= 1.40200;
++ *      Cb *= 1.77200;
++ *      Cg = 0.19421 * Cb + .50937 * Cr;
++ *      R = Y + Cr;
++ *      G = Y - Cg;
++ *      B = Y + Cb;
++ *
++ * =>
++ *      Cg = (50 * Cb + 130 * Cr + 128) >> 8;
++ */
++
++static void initcol(q)
++PREC q[][64];
++{
++      scaleidctqtab(q[1], IFIX(1.77200));
++      scaleidctqtab(q[2], IFIX(1.40200));
++}
++
++/* This is optimized for the stupid sun SUNWspro compiler. */
++#define STORECLAMP(a,x)                               \
++(                                             \
++  (a) = (x),                                  \
++  (unsigned int)(x) >= 256 ?                  \
++    ((a) = (x) < 0 ? 0 : 255)                 \
++  :                                           \
++    0                                         \
++)
++
++#define CLAMP(x) ((unsigned int)(x) >= 256 ? ((x) < 0 ? 0 : 255) : (x))
++
++#ifdef ROUND
++
++#define CBCRCG(yin, xin)                      \
++(                                             \
++  cb = outc[0 +yin*8+xin],                    \
++  cr = outc[64+yin*8+xin],                    \
++  cg = (50 * cb + 130 * cr + 128) >> 8                \
++)
++
++#else
++
++#define CBCRCG(yin, xin)                      \
++(                                             \
++  cb = outc[0 +yin*8+xin],                    \
++  cr = outc[64+yin*8+xin],                    \
++  cg = (3 * cb + 8 * cr) >> 4                 \
++)
++
++#endif
++
++#define PIC(yin, xin, p, xout)                        \
++(                                             \
++  y = outy[(yin) * 8 + xin],                  \
++  STORECLAMP(p[(xout) * 3 + 0], y + cr),      \
++  STORECLAMP(p[(xout) * 3 + 1], y - cg),      \
++  STORECLAMP(p[(xout) * 3 + 2], y + cb)               \
++)
++
++#ifdef __LITTLE_ENDIAN
++#define PIC_16(yin, xin, p, xout, add)                 \
++(                                                \
++  y = outy[(yin) * 8 + xin],                     \
++  y = ((CLAMP(y + cr + add*2+1) & 0xf8) <<  8) | \
++      ((CLAMP(y - cg + add    ) & 0xfc) <<  3) | \
++      ((CLAMP(y + cb + add*2+1)       ) >>  3),  \
++  p[(xout) * 2 + 0] = y & 0xff,                  \
++  p[(xout) * 2 + 1] = y >> 8                     \
++)
++#else
++#ifdef CONFIG_PPC
++#define PIC_16(yin, xin, p, xout, add)                 \
++(                                                \
++  y = outy[(yin) * 8 + xin],                     \
++  y = ((CLAMP(y + cr + add*2+1) & 0xf8) <<  7) | \
++      ((CLAMP(y - cg + add*2+1) & 0xf8) <<  2) | \
++      ((CLAMP(y + cb + add*2+1)       ) >>  3),  \
++  p[(xout) * 2 + 0] = y >> 8,                    \
++  p[(xout) * 2 + 1] = y & 0xff                   \
++)
++#else
++#define PIC_16(yin, xin, p, xout, add)                 \
++(                                                \
++  y = outy[(yin) * 8 + xin],                     \
++  y = ((CLAMP(y + cr + add*2+1) & 0xf8) <<  8) | \
++      ((CLAMP(y - cg + add    ) & 0xfc) <<  3) | \
++      ((CLAMP(y + cb + add*2+1)       ) >>  3),  \
++  p[(xout) * 2 + 0] = y >> 8,                    \
++  p[(xout) * 2 + 1] = y & 0xff                   \
++)
++#endif
++#endif
++
++#define PIC221111(xin)                                                \
++(                                                             \
++  CBCRCG(0, xin),                                             \
++  PIC(xin / 4 * 8 + 0, (xin & 3) * 2 + 0, pic0, xin * 2 + 0), \
++  PIC(xin / 4 * 8 + 0, (xin & 3) * 2 + 1, pic0, xin * 2 + 1), \
++  PIC(xin / 4 * 8 + 1, (xin & 3) * 2 + 0, pic1, xin * 2 + 0), \
++  PIC(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1)  \
++)
++
++#define PIC221111_16(xin)                                               \
++(                                                                     \
++  CBCRCG(0, xin),                                                     \
++  PIC_16(xin / 4 * 8 + 0, (xin & 3) * 2 + 0, pic0, xin * 2 + 0, 3),     \
++  PIC_16(xin / 4 * 8 + 0, (xin & 3) * 2 + 1, pic0, xin * 2 + 1, 0),     \
++  PIC_16(xin / 4 * 8 + 1, (xin & 3) * 2 + 0, pic1, xin * 2 + 0, 1),     \
++  PIC_16(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1, 2)      \
++)
++
++static void col221111(out, pic, width)
++int *out;
++unsigned char *pic;
++int width;
++{
++      int i, j, k;
++      unsigned char *pic0, *pic1;
++      int *outy, *outc;
++      int cr, cg, cb, y;
++
++      pic0 = pic;
++      pic1 = pic + width;
++      outy = out;
++      outc = out + 64 * 4;
++      for (i = 2; i > 0; i--) {
++              for (j = 4; j > 0; j--) {
++                      for (k = 0; k < 8; k++) {
++                              PIC221111(k);
++                      }
++                      outc += 8;
++                      outy += 16;
++                      pic0 += 2 * width;
++                      pic1 += 2 * width;
++              }
++              outy += 64 * 2 - 16 * 4;
++      }
++}
++
++static void col221111_16(out, pic, width)
++int *out;
++unsigned char *pic;
++int width;
++{
++      int i, j, k;
++      unsigned char *pic0, *pic1;
++      int *outy, *outc;
++      int cr, cg, cb, y;
++
++      pic0 = pic;
++      pic1 = pic + width;
++      outy = out;
++      outc = out + 64 * 4;
++      for (i = 2; i > 0; i--) {
++              for (j = 4; j > 0; j--) {
++                      for (k = 0; k < 8; k++) {
++                          PIC221111_16(k);
++                      }
++                      outc += 8;
++                      outy += 16;
++                      pic0 += 2 * width;
++                      pic1 += 2 * width;
++              }
++              outy += 64 * 2 - 16 * 4;
++      }
++}
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/decode-jpg.h linux-2.6.15-VinX/drivers/video/bootsplash/decode-jpg.h
+--- linux-2.6.15/drivers/video/bootsplash/decode-jpg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/decode-jpg.h    2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,35 @@
++/*
++ *    linux/drivers/video/bootsplash/decode-jpg.h - a tiny jpeg decoder.
++ *
++ *      (w) August 2001 by Michael Schroeder, <mls@suse.de>
++ */
++
++#ifndef __DECODE_JPG_H
++#define __DECODE_JPG_H
++
++#define ERR_NO_SOI 1
++#define ERR_NOT_8BIT 2
++#define ERR_HEIGHT_MISMATCH 3
++#define ERR_WIDTH_MISMATCH 4
++#define ERR_BAD_WIDTH_OR_HEIGHT 5
++#define ERR_TOO_MANY_COMPPS 6
++#define ERR_ILLEGAL_HV 7
++#define ERR_QUANT_TABLE_SELECTOR 8
++#define ERR_NOT_YCBCR_221111 9
++#define ERR_UNKNOWN_CID_IN_SCAN 10
++#define ERR_NOT_SEQUENTIAL_DCT 11
++#define ERR_WRONG_MARKER 12
++#define ERR_NO_EOI 13
++#define ERR_BAD_TABLES 14
++#define ERR_DEPTH_MISMATCH 15
++
++struct jpeg_decdata {
++      int dcts[6 * 64 + 16];
++      int out[64 * 6];
++      int dquant[3][64];
++};
++
++extern int jpeg_decode(unsigned char *, unsigned char *, int, int, int, struct jpeg_decdata *);
++extern int jpeg_check_size(unsigned char *, int, int);
++
++#endif
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/bootsplash/render.c linux-2.6.15-VinX/drivers/video/bootsplash/render.c
+--- linux-2.6.15/drivers/video/bootsplash/render.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/bootsplash/render.c        2006-01-05 01:17:11.000000000 +0100
+@@ -0,0 +1,316 @@
++/* 
++ *    linux/drivers/video/bootsplash/render.c - splash screen render functions.
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/fb.h>
++#include <linux/vt_kern.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++
++#include "../console/fbcon.h"
++#include "bootsplash.h"
++
++void splash_putcs(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      const unsigned short *s, int count, int ypos, int xpos)
++{
++      unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
++      int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
++      int fgshift = (vc->vc_hi_font_mask) ? 9 : 8;
++      u8 *src;
++        u8 *dst, *splashsrc;
++      unsigned int d, x, y;
++      u32 dd, fgx, bgx;
++      u16 c = scr_readw(s);
++
++      int fg_color, bg_color, transparent;
++        fg_color = attr_fgcol(fgshift, c);
++        bg_color = attr_bgcol(bgshift, c);
++      transparent = sd->splash_color == bg_color;
++      xpos = xpos * vc->vc_font.width + sd->splash_text_xo;
++      ypos = ypos * vc->vc_font.height + sd->splash_text_yo;
++        splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2);
++        dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2);
++
++      fgx = ((u32 *)info->pseudo_palette)[fg_color];
++      if (transparent && sd->splash_color == 15) {
++          if (fgx == 0xffea)
++              fgx = 0xfe4a;
++          else if (fgx == 0x57ea)
++              fgx = 0x0540;
++          else if (fgx == 0xffff)
++              fgx = 0x52aa;
++      }
++      bgx = ((u32 *)info->pseudo_palette)[bg_color];
++      d = 0;
++
++      while (count--) {
++          c = scr_readw(s++);
++          src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * ((vc->vc_font.width + 7) >> 3);
++
++          for (y = 0; y < vc->vc_font.height; y++) {
++              for (x = 0; x < vc->vc_font.width; x += 2) {
++                  if ((x & 7) == 0)
++                      d = *src++;
++                  if (d & 0x80)
++                      dd = fgx;
++                  else
++                      dd = transparent ? *(u16 *)splashsrc : bgx;
++                  splashsrc += 2;
++                  if (d & 0x40)
++                      dd |= fgx << 16;
++                  else
++                      dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16;
++                  splashsrc += 2;
++                  d <<= 2;
++                  fb_writel(dd, dst);
++                  dst += 4;
++              }
++              dst += info->fix.line_length - vc->vc_font.width * 2;
++              splashsrc += info->splash_bytes - vc->vc_font.width * 2;
++          }
++          dst -= info->fix.line_length * vc->vc_font.height - vc->vc_font.width * 2;
++          splashsrc -= info->splash_bytes * vc->vc_font.height - vc->vc_font.width * 2;
++      }
++}
++
++static void splash_renderc(struct splash_data *sd, struct fb_info *info, int fg_color, int bg_color, u8 *src, int ypos, int xpos, int height, int width)
++{
++      int transparent = sd->splash_color == bg_color;
++      u32 dd, fgx, bgx;
++      u8 *dst, *splashsrc;
++      unsigned int d, x, y;
++
++      splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2);
++      dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2);
++      fgx = ((u32 *)info->pseudo_palette)[fg_color];
++      if (transparent && sd->splash_color == 15) {
++          if (fgx == 0xffea)
++              fgx = 0xfe4a;
++          else if (fgx == 0x57ea)
++              fgx = 0x0540;
++          else if (fgx == 0xffff)
++              fgx = 0x52aa;
++      }
++      bgx = ((u32 *)info->pseudo_palette)[bg_color];
++      d = 0;
++      for (y = 0; y < height; y++) {
++          for (x = 0; x < width; x += 2) {
++              if ((x & 7) == 0)
++                  d = *src++;
++              if (d & 0x80)
++                  dd = fgx;
++              else
++                  dd = transparent ? *(u16 *)splashsrc : bgx;
++              splashsrc += 2;
++              if (d & 0x40)
++                  dd |= fgx << 16;
++              else
++                  dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16;
++              splashsrc += 2;
++              d <<= 2;
++              fb_writel(dd, dst);
++              dst += 4;
++          }
++          dst += info->fix.line_length - width * 2;
++          splashsrc += info->splash_bytes - width * 2;
++      }
++}
++
++void splash_putc(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                      int c, int ypos, int xpos)
++{
++      unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
++      int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
++      int fgshift = (vc->vc_hi_font_mask) ? 9 : 8;
++      u8 *src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * ((vc->vc_font.width + 7) >> 3);
++      xpos = xpos * vc->vc_font.width + sd->splash_text_xo;
++      ypos = ypos * vc->vc_font.height + sd->splash_text_yo;
++      splash_renderc(sd, info, attr_fgcol(fgshift, c), attr_bgcol(bgshift, c), src, ypos, xpos, vc->vc_font.height, vc->vc_font.width);
++}
++
++void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes)
++{
++      int i;
++
++      while (height-- > 0) {
++          u32 *p = (u32 *)dst;
++          u32 *q = (u32 *)src;
++          for (i=0; i < width/4; i++) {
++              fb_writel(*q++,p++);
++              fb_writel(*q++,p++);
++          }
++          if (width & 2)
++              fb_writel(*q++,p++);
++          if (width & 1)
++              fb_writew(*(u16*)q,(u16*)p);
++          dst += dstbytes;
++          src += srcbytes;
++      }
++}
++
++static void splashset(u8 *dst, int height, int width, int dstbytes, u32 bgx) {
++      int i;
++
++      bgx |= bgx << 16;
++      while (height-- > 0) {
++          u32 *p = (u32 *)dst;
++          for (i=0; i < width/4; i++) {
++              fb_writel(bgx,p++);
++              fb_writel(bgx,p++);
++          }
++          if (width & 2)
++              fb_writel(bgx,p++);
++          if (width & 1)
++              fb_writew(bgx,(u16*)p);
++          dst += dstbytes;
++      }
++}
++
++static void splashfill(struct fb_info *info, int sy, int sx, int height, int width) {
++      splashcopy((u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2), (u8 *)(info->splash_pic + sy * info->splash_bytes + sx * 2), height, width, info->fix.line_length, info->splash_bytes);
++}
++
++void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy,
++                      int sx, int height, int width)
++{
++      int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
++      int bg_color = attr_bgcol_ec(bgshift, vc);
++      int transparent = sd->splash_color == bg_color;
++      u32 bgx;
++      u8 *dst;
++
++      sy = sy * vc->vc_font.height + sd->splash_text_yo;
++      sx = sx * vc->vc_font.width + sd->splash_text_xo;
++      height *= vc->vc_font.height;
++      width *= vc->vc_font.width;
++      if (transparent) {
++              splashfill(info, sy, sx, height, width);
++              return;
++      }
++        dst = (u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2);
++      bgx = ((u32 *)info->pseudo_palette)[bg_color];
++      splashset(dst, height, width, info->fix.line_length, bgx);
++}
++
++void splash_bmove(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, 
++              int sx, int dy, int dx, int height, int width)
++{
++      struct fb_copyarea area;
++
++      area.sx = sx * vc->vc_font.width;
++      area.sy = sy * vc->vc_font.height;
++      area.dx = dx * vc->vc_font.width;
++      area.dy = dy * vc->vc_font.height;
++      area.sx += sd->splash_text_xo;
++      area.sy += sd->splash_text_yo;
++      area.dx += sd->splash_text_xo;
++      area.dy += sd->splash_text_yo;
++      area.height = height * vc->vc_font.height;
++      area.width = width * vc->vc_font.width;
++
++      info->fbops->fb_copyarea(info, &area);
++}
++
++void splash_clear_margins(struct splash_data *sd, struct vc_data *vc, struct fb_info *info,
++                              int bottom_only)
++{
++      unsigned int tw = vc->vc_cols*vc->vc_font.width;
++      unsigned int th = vc->vc_rows*vc->vc_font.height;
++      
++      if (!bottom_only) {
++              /* top margin */
++              splashfill(info, 0, 0, sd->splash_text_yo, info->var.xres);
++              /* left margin */
++              splashfill(info, sd->splash_text_yo, 0, th, sd->splash_text_xo);
++              /* right margin */
++              splashfill(info, sd->splash_text_yo, sd->splash_text_xo + tw, th, info->var.xres - sd->splash_text_xo - tw);
++
++      }
++      splashfill(info, sd->splash_text_yo + th, 0, info->var.yres - sd->splash_text_yo - th, info->var.xres);
++}
++
++int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor)
++{
++      int i;
++      unsigned int dsize, s_pitch;
++
++      if (info->state != FBINFO_STATE_RUNNING)
++              return 0;
++      
++      s_pitch = (cursor->image.width + 7) >> 3;
++        dsize = s_pitch * cursor->image.height;
++        if (cursor->enable) {
++                switch (cursor->rop) {
++                case ROP_XOR:
++                        for (i = 0; i < dsize; i++)
++                                info->fb_cursordata[i] = cursor->image.data[i] ^ cursor->mask[i];
++                        break;
++                case ROP_COPY:
++                default:
++                        for (i = 0; i < dsize; i++)
++                                info->fb_cursordata[i] = cursor->image.data[i] & cursor->mask[i];
++                        break;
++                }
++        } else if (info->fb_cursordata != cursor->image.data)
++                memcpy(info->fb_cursordata, cursor->image.data, dsize);
++      cursor->image.data = info->fb_cursordata;
++      splash_renderc(sd, info, cursor->image.fg_color, cursor->image.bg_color, (u8 *)info->fb_cursordata, cursor->image.dy + sd->splash_text_yo, cursor->image.dx + sd->splash_text_xo, cursor->image.height, cursor->image.width);
++      return 0;
++}
++
++void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width)
++{
++      unsigned short *d = (unsigned short *) (vc->vc_origin + vc->vc_size_row * y + dx * 2);
++      unsigned short *s = d + (dx - sx);
++      unsigned short *start = d;
++      unsigned short *ls = d;
++      unsigned short *le = d + width;
++      unsigned short c;
++      int x = dx;
++      unsigned short attr = 1;
++
++      do {
++              c = scr_readw(d);
++              if (attr != (c & 0xff00)) {
++                      attr = c & 0xff00;
++                      if (d > start) {
++                              splash_putcs(sd, vc, info, start, d - start, y, x);
++                              x += d - start;
++                              start = d;
++                      }
++              }
++              if (s >= ls && s < le && c == scr_readw(s)) {
++                      if (d > start) {
++                              splash_putcs(sd, vc, info, start, d - start, y, x);
++                              x += d - start + 1;
++                              start = d + 1;
++                      } else {
++                              x++;
++                              start++;
++                      }
++              }
++              s++;
++              d++;
++      } while (d < le);
++      if (d > start)
++              splash_putcs(sd, vc, info, start, d - start, y, x);
++}
++
++void splash_blank(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int blank)
++{
++      if (blank) {
++              if (info->silent_screen_base)
++                  splashset((u8 *)info->silent_screen_base, info->var.yres, info->var.xres, info->fix.line_length, 0);
++              splashset((u8 *)info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, 0);
++      } else {
++              if (info->silent_screen_base)
++                      splash_prepare(vc, info);
++              splash_clear_margins(vc->vc_splash_data, vc, info, 0);
++              /* no longer needed, done in fbcon_blank */
++              /* update_screen(vc->vc_num); */
++      }
++}
++
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/console/bitblit.c linux-2.6.15-VinX/drivers/video/console/bitblit.c
+--- linux-2.6.15/drivers/video/console/bitblit.c       2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/console/bitblit.c  2006-01-05 01:22:17.000000000 +0100
+@@ -18,6 +18,9 @@
+ #include <linux/console.h>
+ #include <asm/types.h>
+ #include "fbcon.h"
++#ifdef CONFIG_BOOTSPLASH
++#include "../bootsplash/bootsplash.h"
++#endif
+ /*
+  * Accelerated handlers.
+@@ -48,6 +51,13 @@ static void bit_bmove(struct vc_data *vc
+ {
+       struct fb_copyarea area;
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_bmove(info->splash_data, vc, info,
++                      sy, sx, dy, dx, height, width);
++              return;
++      }
++#endif
+       area.sx = sx * vc->vc_font.width;
+       area.sy = sy * vc->vc_font.height;
+       area.dx = dx * vc->vc_font.width;
+@@ -64,6 +74,13 @@ static void bit_clear(struct vc_data *vc
+       int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
+       struct fb_fillrect region;
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_clear(info->splash_data, vc, info,
++                                              sy, sx, height, width);
++              return;
++      }
++#endif
+       region.color = attr_bgcol_ec(bgshift, vc);
+       region.dx = sx * vc->vc_font.width;
+       region.dy = sy * vc->vc_font.height;
+@@ -161,6 +178,13 @@ static void bit_putcs(struct vc_data *vc
+       image.height = vc->vc_font.height;
+       image.depth = 1;
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_putcs(info->splash_data, vc, info, s, count, yy, xx);
++              return;
++      }
++#endif
++
+       if (attribute) {
+               buf = kmalloc(cellsize, GFP_KERNEL);
+               if (!buf)
+@@ -214,6 +238,13 @@ static void bit_clear_margins(struct vc_
+       unsigned int bs = info->var.yres - bh;
+       struct fb_fillrect region;
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_clear_margins(info->splash_data, vc, info, bottom_only);
++              return;
++      }
++#endif
++
+       region.color = attr_bgcol_ec(bgshift, vc);
+       region.rop = ROP_COPY;
+@@ -380,6 +411,14 @@ static void bit_cursor(struct vc_data *v
+       cursor.image.depth = 1;
+       cursor.rop = ROP_XOR;
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_cursor(info->splash_data, info, &cursor);
++              ops->cursor_reset = 0;
++              return;
++      }
++#endif
++
+       if (info->fbops->fb_cursor)
+               err = info->fbops->fb_cursor(info, &cursor);
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/console/fbcon.c linux-2.6.15-VinX/drivers/video/console/fbcon.c
+--- linux-2.6.15/drivers/video/console/fbcon.c 2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/console/fbcon.c    2006-01-05 01:31:49.000000000 +0100
+@@ -94,6 +94,10 @@
+ #include "fbcon.h"
++#ifdef CONFIG_BOOTSPLASH
++#include "../bootsplash/bootsplash.h"
++#endif
++
+ #ifdef FBCONDEBUG
+ #  define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args)
+ #else
+@@ -107,8 +111,7 @@ enum {
+ };
+ static struct display fb_display[MAX_NR_CONSOLES];
+-
+-static signed char con2fb_map[MAX_NR_CONSOLES];
++signed char con2fb_map[MAX_NR_CONSOLES];
+ static signed char con2fb_map_boot[MAX_NR_CONSOLES];
+ static int logo_height;
+ static int logo_lines;
+@@ -559,6 +562,10 @@ static int fbcon_takeover(int show_logo)
+       for (i = first_fb_vc; i <= last_fb_vc; i++)
+               con2fb_map[i] = info_idx;
++#ifdef CONFIG_BOOTSPLASH
++      splash_init();
++#endif
++
+       err = take_over_console(&fb_con, first_fb_vc, last_fb_vc,
+                               fbcon_is_default);
+       if (err) {
+@@ -1101,6 +1108,16 @@ static void fbcon_init(struct vc_data *v
+       new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
+       new_cols /= vc->vc_font.width;
+       new_rows /= vc->vc_font.height;
++
++#ifdef CONFIG_BOOTSPLASH
++      if (vc->vc_splash_data && vc->vc_splash_data->splash_state) {
++              new_cols = vc->vc_splash_data->splash_text_wi / vc->vc_font.width;
++              new_rows = vc->vc_splash_data->splash_text_he / vc->vc_font.height;
++              logo = 0;
++              con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color);
++      }
++#endif
++                              
+       vc_resize(vc, new_cols, new_rows);
+       /*
+@@ -1718,6 +1735,10 @@ static int fbcon_scroll(struct vc_data *
+                       fbcon_softback_note(vc, t, count);
+               if (logo_shown >= 0)
+                       goto redraw_up;
++#ifdef CONFIG_BOOTSPLASH
++              if (info->splash_data)
++                      goto redraw_up;
++#endif
+               switch (p->scrollmode) {
+               case SCROLL_MOVE:
+                       ops->bmove(vc, info, t + count, 0, t, 0,
+@@ -1802,6 +1823,10 @@ static int fbcon_scroll(struct vc_data *
+       case SM_DOWN:
+               if (count > vc->vc_rows)        /* Maximum realistic size */
+                       count = vc->vc_rows;
++#ifdef CONFIG_BOOTSPLASH
++              if (info->splash_data)
++                      goto redraw_down;
++#endif
+               if (logo_shown >= 0)
+                       goto redraw_down;
+               switch (p->scrollmode) {
+@@ -1946,6 +1971,14 @@ static void fbcon_bmove_rec(struct vc_da
+               }
+               return;
+       }
++
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data && sy == dy && height == 1) {
++              /* must use slower redraw bmove to keep background pic intact */
++              splash_bmove_redraw(info->splash_data, vc, info, sy, sx, dx, width);
++              return;
++      }
++#endif
+       ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
+                  height, width);
+ }
+@@ -2053,6 +2086,10 @@ static int fbcon_switch(struct vc_data *
+       info = registered_fb[con2fb_map[vc->vc_num]];
+       ops = info->fbcon_par;
++#ifdef CONFIG_BOOTSPLASH
++      splash_prepare(vc, info);
++#endif
++
+       if (softback_top) {
+               if (softback_lines)
+                       fbcon_set_origin(vc);
+@@ -2173,6 +2210,12 @@ static int fbcon_switch(struct vc_data *
+ static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info,
+                               int blank)
+ {
++#ifdef CONFIG_BOOTSPLASH
++      if (info->splash_data) {
++              splash_blank(info->splash_data, vc, info, blank);
++              return;
++      }
++#endif
+       if (blank) {
+               unsigned short charmask = vc->vc_hi_font_mask ?
+                       0x1ff : 0xff;
+@@ -2373,10 +2416,19 @@ static int fbcon_do_set_font(struct vc_d
+       if (resize) {
+               int cols, rows;
++              u32 xres = info->var.xres, yres = info->var.yres;
+               cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
+               rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
+               cols /= w;
+               rows /= h;
++
++#ifdef CONFIG_BOOTSPLASH
++              if (info->splash_data) {
++                      xres = info->splash_data->splash_text_wi;
++                      yres = info->splash_data->splash_text_he;
++              }
++#endif
++                                      
+               vc_resize(vc, cols, rows);
+               if (CON_IS_VISIBLE(vc) && softback_buf)
+                       fbcon_update_softback(vc);
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/console/fbcon.h linux-2.6.15-VinX/drivers/video/console/fbcon.h
+--- linux-2.6.15/drivers/video/console/fbcon.h 2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/console/fbcon.h    2006-01-05 01:17:11.000000000 +0100
+@@ -26,6 +26,34 @@
+     *    low-level frame buffer device
+     */
++#ifdef CONFIG_BOOTSPLASH
++struct splash_data {
++    int splash_state;                 /* show splash? */
++    int splash_color;                 /* transparent color */
++    int splash_fg_color;              /* foreground color */
++    int splash_width;                 /* width of image */
++    int splash_height;                        /* height of image */
++    int splash_text_xo;                       /* text area origin */
++    int splash_text_yo;
++    int splash_text_wi;                       /* text area size */ 
++    int splash_text_he;
++    int splash_showtext;              /* silent/verbose mode */
++    int splash_boxcount;
++    int splash_percent;
++    int splash_overpaintok;           /* is it ok to overpaint boxes */
++    int splash_palcnt;
++    char *oldscreen_base;             /* pointer to top of virtual screen */
++    unsigned char *splash_boxes;
++    unsigned char *splash_jpeg;               /* jpeg */
++    unsigned char *splash_palette;    /* palette for 8-bit */
++
++    int splash_dosilent;              /* show silent jpeg */
++    unsigned char *splash_silentjpeg;
++    unsigned char *splash_sboxes;
++    int splash_sboxcount;
++};
++#endif
++
+ struct display {
+     /* Filled in by the low-level console driver */
+     const u_char *fontdata;
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/drivers/video/vesafb.c linux-2.6.15-VinX/drivers/video/vesafb.c
+--- linux-2.6.15/drivers/video/vesafb.c        2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/drivers/video/vesafb.c   2006-01-05 01:37:18.000000000 +0100
+@@ -201,7 +201,10 @@ static int vesafb_setcolreg(unsigned reg
+       return 0;
+ }
+-static struct fb_ops vesafb_ops = {
++#ifndef CONFIG_BOOTSPLASH
++static
++#endif
++struct fb_ops vesafb_ops = {
+       .owner          = THIS_MODULE,
+       .fb_setcolreg   = vesafb_setcolreg,
+       .fb_pan_display = vesafb_pan_display,
+@@ -285,6 +288,11 @@ static int __init vesafb_probe(struct pl
+        *                 option to simply use size_total as that
+        *                 wastes plenty of kernel address space. */
+       size_remap  = size_vmode * 2;
++      
++#ifdef CONFIG_BOOTSPLASH
++      size_remap *= 2;        /* some more for the images */
++#endif
++
+       if (vram_remap)
+               size_remap = vram_remap * 1024 * 1024;
+       if (size_remap < size_vmode)
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/include/linux/console_struct.h linux-2.6.15-VinX/include/linux/console_struct.h
+--- linux-2.6.15/include/linux/console_struct.h        2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/include/linux/console_struct.h   2006-01-05 01:38:58.000000000 +0100
+@@ -97,6 +97,11 @@ struct vc_data {
+       struct vc_data **vc_display_fg;         /* [!] Ptr to var holding fg console for this display */
+       unsigned long   vc_uni_pagedir;
+       unsigned long   *vc_uni_pagedir_loc;  /* [!] Location of uni_pagedir variable for this console */
++      
++#ifdef CONFIG_BOOTSPLASH
++        struct splash_data *vc_splash_data;
++#endif
++
+       /* additional information is in vt_kern.h */
+ };
+diff -ruNp -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/include/linux/fb.h linux-2.6.15-VinX/include/linux/fb.h
+--- linux-2.6.15/include/linux/fb.h    2006-01-03 04:21:10.000000000 +0100
++++ linux-2.6.15-VinX/include/linux/fb.h       2006-01-05 01:17:11.000000000 +0100
+@@ -771,6 +771,14 @@ struct fb_info {
+       void *fbcon_par;                /* fbcon use-only private area */
+       /* From here on everything is device dependent */
+       void *par;      
++#ifdef CONFIG_BOOTSPLASH
++      struct splash_data *splash_data;
++      unsigned char *splash_pic;
++      int splash_pic_size;
++      int splash_bytes;
++      char *silent_screen_base;       /* real screen base */
++      char fb_cursordata[64];
++#endif
+ };
+ #ifdef MODULE