From c3e3698013a914ba5ceb385479e40eae5437f7e2 Mon Sep 17 00:00:00 2001 From: ms Date: Thu, 12 Oct 2006 15:57:24 +0000 Subject: [PATCH] EXPERIMENTELLE Konfiguration fuer den Installer-Kernel. 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 | 2152 ++++++++------- lfs/linux | 50 +- make.sh | 36 +- src/patches/bootsplash-3.1.6-2.6.15.diff | 2799 ++++++++++++++++++++ 4 files changed, 3988 insertions(+), 1049 deletions(-) create mode 100644 src/patches/bootsplash-3.1.6-2.6.15.diff diff --git a/config/kernel/kernel.config.i586.installer b/config/kernel/kernel.config.i586.installer index 5364d20d8d..f3aa5065d6 100644 --- a/config/kernel/kernel.config.i586.installer +++ b/config/kernel/kernel.config.i586.installer @@ -1,445 +1,462 @@ # # 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 diff --git a/lfs/linux b/lfs/linux index 7ec39b1225..affc3e83b3 100644 --- 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 cf15c5b59d..6476ab0ebc 100644 --- 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 index 0000000000..ab4c472fee --- /dev/null +++ b/src/patches/bootsplash-3.1.6-2.6.15.diff @@ -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, , ++ * Stefan Reinauer, , ++ * Steffen Winterfeldt, , ++ * Michael Schroeder ++ * ++ * Ideas & SuSE screen work by Ken Wimer, ++ * ++ * For more information on this code check http://www.bootsplash.org/ ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#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 ++ ++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, ++ * Stefan Reinauer, ++ * ++ * ++ * idea and SuSE screen work by Ken Wimer, ++ */ ++ ++#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, ++ * ++ */ ++ ++#include ++#include ++#include ++ ++#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, ++ */ ++ ++#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 ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#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 + #include + #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 -- 2.39.2