[rdc] nuke old files
authorFlorian Fainelli <florian@openwrt.org>
Sat, 25 Apr 2009 09:58:58 +0000 (09:58 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Sat, 25 Apr 2009 09:58:58 +0000 (09:58 +0000)
SVN-Revision: 15402

50 files changed:
target/linux/rdc/config-2.6.24 [deleted file]
target/linux/rdc/config-2.6.25 [deleted file]
target/linux/rdc/config-2.6.27 [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c [deleted file]
target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c [deleted file]
target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c [deleted file]
target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h [deleted file]
target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c [deleted file]
target/linux/rdc/files-2.6.24/drivers/net/r6040.c [deleted file]
target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h [deleted file]
target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h [deleted file]
target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch [deleted file]
target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch [deleted file]
target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch [deleted file]
target/linux/rdc/patches-2.6.24/003-rootfstype.patch [deleted file]
target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch [deleted file]
target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch [deleted file]
target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch [deleted file]
target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch [deleted file]
target/linux/rdc/patches-2.6.24/006-pci_ids.patch [deleted file]
target/linux/rdc/patches-2.6.24/600-x86_lzma.patch [deleted file]
target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch [deleted file]
target/linux/rdc/patches-2.6.25/003-rootfstype.patch [deleted file]
target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch [deleted file]
target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch [deleted file]
target/linux/rdc/patches-2.6.25/600-x86_lzma.patch [deleted file]
target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch [deleted file]
target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch [deleted file]
target/linux/rdc/patches-2.6.27/003-rootfstype.patch [deleted file]
target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch [deleted file]
target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch [deleted file]
target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch [deleted file]

diff --git a/target/linux/rdc/config-2.6.24 b/target/linux/rdc/config-2.6.24
deleted file mode 100644 (file)
index f149a4c..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BOUNCE=y
-# CONFIG_BROADCOM_PHY is not set
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-# CONFIG_DMADEVICES is not set
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HIBERNATION_UP_POSSIBLE=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-CONFIG_KEXEC=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-CONFIG_LBD=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-CONFIG_MTD_PHYSMAP_LEN=0
-CONFIG_MTD_PHYSMAP_START=0x8000000
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_NF_CONNTRACK=y
-CONFIG_NOHIGHMEM=y
-CONFIG_NO_HZ=y
-CONFIG_NR_QUICK=1
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCIPCWATCHDOG is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_QSEMI_PHY is not set
-CONFIG_QUICKLIST=y
-# CONFIG_R6040 is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCx200 is not set
-CONFIG_SEMAPHORE_SLEEPERS=y
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SLABINFO=y
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-CONFIG_TICK_ONESHOT=y
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-# CONFIG_USER_NS is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-# CONFIG_X86_BIGSMP is not set
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_PAE is not set
-# CONFIG_X86_PC is not set
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC=y
-CONFIG_X86_REBOOTFIXUPS=y
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_UP_APIC is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/config-2.6.25 b/target/linux/rdc/config-2.6.25
deleted file mode 100644 (file)
index 422b97f..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ATA is not set
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_ATA_PIIX is not set
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_IDE is not set
-# CONFIG_BLK_DEV_IDEDISK is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_BOUNCE=y
-# CONFIG_BROADCOM_PHY is not set
-CONFIG_CLASSIC_RCU=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AEAD is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_SALSA20_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-# CONFIG_DMADEVICES is not set
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-# CONFIG_E100 is not set
-# CONFIG_E1000E_ENABLED is not set
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_FAST_CMPXCHG_LOCAL=y
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_LOCKBREAK is not set
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-# CONFIG_HID is not set
-CONFIG_HID_SUPPORT=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-# CONFIG_HP_WATCHDOG is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I2C_ALGOBIT is not set
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-# CONFIG_IBM_ASM is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_PROC_FS is not set
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_APANEL is not set
-# CONFIG_INPUT_GPIO_BUTTONS is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IPWIRELESS is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_JFS_FS is not set
-CONFIG_KEXEC=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_LBD=y
-# CONFIG_LEDS_ALIX is not set
-CONFIG_LEDS_GPIO=y
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_LZO_COMPRESS is not set
-# CONFIG_LZO_DECOMPRESS is not set
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NLS_ISO8859_2 is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-# CONFIG_PCCARD is not set
-# CONFIG_PCCARD_NONSTATIC is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCIPCWATCHDOG is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCMCIA is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_R6040 is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_SCHED_HRTICK is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_WAIT_SCAN is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_ACB is not set
-CONFIG_SEMAPHORE_SLEEPERS=y
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SLABINFO=y
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_SND_SIS7019 is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_SONYPI is not set
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-# CONFIG_USB is not set
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_PWC_DEBUG is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_OTI6858 is not set
-CONFIG_USB_SUPPORT=y
-# CONFIG_USB_UHCI_HCD is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_CPIA2 is not set
-CONFIG_VIDEO_V4L1=y
-# CONFIG_VIDEO_V4L2_COMMON is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_PCI is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-# CONFIG_X86_BIGSMP is not set
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_PAE is not set
-# CONFIG_X86_PC is not set
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC321X=y
-CONFIG_X86_REBOOTFIXUPS=y
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_UP_APIC is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/config-2.6.27 b/target/linux/rdc/config-2.6.27
deleted file mode 100644 (file)
index cf8998d..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-# CONFIG_4KSTACKS is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_AGP is not set
-# CONFIG_ALIM1535_WDT is not set
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-CONFIG_ARCH_HAS_DEFAULT_IDLE=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BITREVERSE=y
-CONFIG_BOUNCE=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-# CONFIG_COMPAT_VDSO is not set
-# CONFIG_CPU5_WDT is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_SALSA20_586 is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DELL_RBU is not set
-CONFIG_DEVPORT=y
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_EUROTECH_WDT is not set
-CONFIG_FAST_CMPXCHG_LOCAL=y
-CONFIG_FIRMWARE_MEMMAP=y
-# CONFIG_FIXED_PHY is not set
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-# CONFIG_GENERIC_GPIO is not set
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_LOCKBREAK is not set
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_ARCH_TRACEHOOK is not set
-# CONFIG_HAVE_CLK is not set
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-# CONFIG_HAVE_DMA_ATTRS is not set
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_FTRACE=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-# CONFIG_HPET_TIMER is not set
-# CONFIG_HP_WATCHDOG is not set
-CONFIG_HUGETLBFS=y
-CONFIG_HUGETLB_PAGE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_VIA is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I8K is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_IBMASR is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_IDE is not set
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_IT8712F_WDT is not set
-# CONFIG_ITCO_WDT is not set
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_GZIP is not set
-CONFIG_KERNEL_LZMA=y
-CONFIG_KEXEC=y
-CONFIG_KMOD=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_KVM is not set
-CONFIG_LBD=y
-# CONFIG_LEDS_ALIX is not set
-# CONFIG_LGUEST is not set
-CONFIG_LSF=y
-# CONFIG_M386 is not set
-CONFIG_M486=y
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MATH_EMULATION=y
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MEMTEST is not set
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_ONENAND is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_RDC3210=y
-CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
-CONFIG_MTD_RDC3210_BUSWIDTH=2
-# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
-CONFIG_MTD_RDC3210_SIZE=0x400000
-# CONFIG_MTD_RDC3210_STATIC_MAP is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-# CONFIG_OLPC is not set
-# CONFIG_OPTIMIZE_INLINING is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_PC87413_WDT is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_GOANY=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GOOLPC is not set
-# CONFIG_PCSPKR_PLATFORM is not set
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_R6040 is not set
-CONFIG_RDC321X_WDT=y
-# CONFIG_RD_BZIP2 is not set
-CONFIG_RD_GZIP=y
-# CONFIG_RD_LZMA is not set
-# CONFIG_RELOCATABLE is not set
-# CONFIG_RTC is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_SBC7240_WDT is not set
-# CONFIG_SBC8360_WDT is not set
-# CONFIG_SBC_EPX_C3_WATCHDOG is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_SCHED_HRTICK is not set
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SMP is not set
-# CONFIG_SMSC37B787_WDT is not set
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_SPARSEMEM_STATIC=y
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_SYSPROF_TRACER is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_TELCLOCK is not set
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_TOSHIBA is not set
-CONFIG_UID16=y
-CONFIG_USB_SUPPORT=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_PCI is not set
-CONFIG_VIRTUALIZATION=y
-# CONFIG_VM86 is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_WAFER_WDT is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPU=y
-CONFIG_X86_CPUID=y
-# CONFIG_X86_ELAN is not set
-CONFIG_X86_F00F_BUG=y
-# CONFIG_X86_GENERIC is not set
-# CONFIG_X86_GENERICARCH is not set
-CONFIG_X86_INVLPG=y
-CONFIG_X86_L1_CACHE_SHIFT=4
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MSR=y
-# CONFIG_X86_PAE is not set
-CONFIG_X86_PC=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_RDC321X=y
-CONFIG_X86_REBOOTFIXUPS=y
-CONFIG_X86_RESERVE_LOW_64K=y
-# CONFIG_X86_UP_APIC is not set
-CONFIG_X86_VERBOSE_BOOTUP=y
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c b/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c
deleted file mode 100644 (file)
index f4b9083..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/mm.h>
-#include <asm/io.h>
-#include <asm/processor.h>
-
-#include "cpu.h"
-
-static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
-        .c_vendor       = "RDC",
-        .c_models = {
-                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
-                  {
-                          [0] = "R861x(-G)",
-                  }
-                },
-        },
-};
-
-int __init rdc_init_cpu(void)
-{
-        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
-        return 0;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile
deleted file mode 100644 (file)
index 5961bc7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the RDC321x specific parts of the kernel
-#
-obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
-
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c
deleted file mode 100644 (file)
index dbd0327..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
- *     RDC321x architecture specific GPIO support
- *
- *  This program is free software; you can redistribute  it and/or modify it
- *  under  the terms of  the GNU General  Public License as published by the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/autoconf.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/types.h>
-#include <linux/module.h>
-#include <linux/delay.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-static inline int rdc_gpio_is_valid(unsigned gpio)
-{
-       return (gpio <= RDC_MAX_GPIO);
-}
-
-static unsigned int rdc_gpio_read(unsigned gpio)
-{
-       unsigned int val;
-
-       val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-        val |= (0x1 << (gpio & 0x1F));
-        outl(val, RDC3210_CFGREG_DATA);
-        udelay(10);
-        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-
-       return val;
-}
-
-static void rdc_gpio_write(unsigned int val)
-{
-       if (val) {
-               outl(val, RDC3210_CFGREG_DATA);
-               udelay(10);
-       }
-}
-
-int rdc_gpio_get_value(unsigned gpio)
-{
-       if (rdc_gpio_is_valid(gpio))
-               return (int)rdc_gpio_read(gpio);
-       else
-               return -EINVAL;
-}
-EXPORT_SYMBOL(rdc_gpio_get_value);
-
-void rdc_gpio_set_value(unsigned gpio, int value)
-{
-       unsigned int val;
-
-       if (!rdc_gpio_is_valid(gpio))
-               return;
-       
-       val = rdc_gpio_read(gpio);
-
-       if (value)
-               val &= ~(0x1 << (gpio & 0x1F));
-       else
-               val |= (0x1 << (gpio & 0x1F));
-
-       rdc_gpio_write(val);
-}
-EXPORT_SYMBOL(rdc_gpio_set_value);
-
-int rdc_gpio_direction_input(unsigned gpio)
-{
-       return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_input);
-
-int rdc_gpio_direction_output(unsigned gpio, int value)
-{
-       return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_output);
-
-
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c
deleted file mode 100644 (file)
index 86981f8..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- *
- *  Generic RDC321x platform devices
- *
- *  Copyright (C) 2007-2008 OpenWrt.org
- *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the
- *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- *  Boston, MA  02110-1301, USA.
- *
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/version.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/physmap.h>
-#include <linux/root_dev.h>
-#include <asm/gpio.h>
-
-/* Flash */
-#ifdef CONFIG_MTD_RDC3210
-static struct resource rdc_flash_resource[] = {
-       [0] = {
-               .start = (u32)-CONFIG_MTD_RDC3210_SIZE,
-               .end = (u32)-1,
-               .flags = IORESOURCE_MEM,
-       },
-};
-
-static struct platform_device rdc_flash_device = {
-       .name = "rdc321x-flash",
-       .id = -1,
-       .num_resources = ARRAY_SIZE(rdc_flash_resource),
-       .resource = rdc_flash_resource,
-};
-#else
-static struct mtd_partition rdc_flash_parts[15];
-
-static struct resource rdc_flash_resource = {
-       .end = (u32)-1,
-       .flags = IORESOURCE_MEM,
-};
-
-static struct physmap_flash_data rdc_flash_data = {
-       .parts = rdc_flash_parts,
-};
-
-static struct platform_device rdc_flash_device = {
-       .name = "physmap-flash",
-       .id = -1,
-       .resource = &rdc_flash_resource,
-       .num_resources = 1,
-       .dev.platform_data = &rdc_flash_data,
-};
-#endif
-
-/* LEDS */
-static struct gpio_led default_leds[] = {
-        { .name = "rdc321x:dmz", .gpio = 1, },
-};
-
-static struct gpio_led_platform_data rdc321x_led_data = {
-       .num_leds = ARRAY_SIZE(default_leds),
-       .leds = default_leds,
-};
-
-static struct platform_device rdc321x_leds = {
-       .name = "leds-gpio",
-       .id = -1,
-       .dev = {
-               .platform_data = &rdc321x_led_data,
-       }
-};
-
-/* Watchdog */
-static struct platform_device rdc321x_wdt = {
-       .name = "rdc321x-wdt",
-       .id = -1,
-       .num_resources = 0,
-};
-
-/* Button */
-static struct gpio_keys_button rdc321x_gpio_btn[] = {
-       {
-               .gpio = 0,
-               .code = BTN_0,
-               .desc = "Reset",
-               .active_low = 1,
-       }
-};
-
-static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
-       .buttons = rdc321x_gpio_btn,
-       .nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
-};
-
-static struct platform_device rdc321x_button = {
-       .name = "gpio-keys",
-       .id = -1,
-       .dev = {
-               .platform_data = &rdc321x_gpio_btn_data,
-       }
-};
-
-static struct platform_device *rdc321x_devs[] = {
-       &rdc_flash_device,
-       &rdc321x_leds,
-       &rdc321x_wdt,
-       &rdc321x_button
-};
-
-static int probe_flash_start(struct map_info *the_map)
-{
-       struct mtd_info *res;
-
-       the_map->virt = ioremap(the_map->phys, the_map->size);
-       if (the_map->virt == NULL)
-               return 1;
-       for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
-                       >>= 1) {
-               res = do_map_probe("cfi_probe", the_map);
-               if (res == NULL)
-                       res = do_map_probe("jedec_probe", the_map);
-               if (res != NULL)
-                       break;
-       }
-       iounmap(the_map->virt);
-       if (res != NULL)
-               the_map->phys = (u32)-(s32)(the_map->size = res->size);
-       return res == NULL;
-}
-
-static __init int rdc_board_setup(void)
-{
-#ifndef CONFIG_MTD_RDC3210
-       struct map_info rdc_map_info;
-       u32 the_header[4];
-
-       ROOT_DEV = 0;
-       rdc_map_info.name = rdc_flash_device.name;
-       rdc_map_info.phys = 0xff000000;
-       rdc_map_info.size = 0x1000000;
-       rdc_map_info.bankwidth = 2;
-       rdc_map_info.set_vpp = NULL;
-       simple_map_init(&rdc_map_info);
-       while (probe_flash_start(&rdc_map_info)) {
-               rdc_map_info.phys++;
-               if (--rdc_map_info.size)
-                       panic("Not to be or to be: That"
-                               " is not the question.");
-       }
-       rdc_flash_resource.start = rdc_map_info.phys;
-       rdc_flash_data.width = rdc_map_info.bankwidth;
-       rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
-       if (rdc_map_info.virt == NULL)
-               panic("Something's rotten in Denmark!");
-       the_header[0] = ((u32 *)rdc_map_info.virt)[0];
-       the_header[1] = ((u32 *)rdc_map_info.virt)[1];
-       the_header[2] = ((u32 *)rdc_map_info.virt)[2];
-       the_header[3] = ((u32 *)rdc_map_info.virt)[3];
-       iounmap(rdc_map_info.virt);
-       if (!memcmp(the_header, "GMTK", 4)) {   /* Gemtek */
-               /* TODO */
-       } else if (!memcmp(the_header, "CSYS", 4)) {    /* Sitecom */
-               /* TODO */
-       } else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) { /* AMIT */
-               rdc_flash_parts[0].name = "kernel_parthdr";
-               rdc_flash_parts[0].offset = 0;
-               rdc_flash_parts[0].size = 0x10;
-               rdc_flash_parts[1].name = "kernel";
-               rdc_flash_parts[1].offset = 0x10;
-               rdc_flash_parts[1].size = 0xffff0;
-               rdc_flash_parts[2].name = "rootfs_parthdr";
-               rdc_flash_parts[2].offset = 0x100000;
-               rdc_flash_parts[2].size = 0x10;
-               rdc_flash_parts[3].name = "rootfs";
-               rdc_flash_parts[3].offset = 0x100010;
-               rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
-               rdc_flash_parts[4].name = "config_parthdr";
-               rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
-               rdc_flash_parts[4].size = 0x10;
-               rdc_flash_parts[5].name = "config";
-               rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
-               rdc_flash_parts[5].size = 0xfff0;
-               rdc_flash_parts[6].name = "recoveryfs_parthdr";
-               rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
-               rdc_flash_parts[6].size = 0x10;
-               rdc_flash_parts[7].name = "recoveryfs";
-               rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
-               rdc_flash_parts[7].size = 0x3fff0;
-               rdc_flash_parts[8].name = "recovery_parthdr";
-               rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
-               rdc_flash_parts[8].size = 0x10;
-               rdc_flash_parts[9].name = "recovery";
-               rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
-               rdc_flash_parts[9].size = 0x7ff0;
-               rdc_flash_parts[10].name = "productinfo_parthdr";
-               rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
-               rdc_flash_parts[10].size = 0x10;
-               rdc_flash_parts[11].name = "productinfo";
-               rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
-               rdc_flash_parts[11].size = 0x1ff0;
-               rdc_flash_parts[12].name = "bootloader_parthdr";
-               rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
-               rdc_flash_parts[12].size = 0x10;
-               rdc_flash_parts[13].name = "bootloader";
-               rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
-               rdc_flash_parts[13].size = 0x5ff0;
-               rdc_flash_parts[14].name = "everything";
-               rdc_flash_parts[14].offset = 0;
-               rdc_flash_parts[14].size = rdc_map_info.size;
-               rdc_flash_data.nr_parts = 15;
-       } else {        /* ZyXEL */
-               rdc_flash_parts[0].name = "kernel";
-               rdc_flash_parts[0].offset = 0;
-               rdc_flash_parts[0].size = 0x100000;
-               rdc_flash_parts[1].name = "rootfs";
-               rdc_flash_parts[1].offset = 0x100000;
-               rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
-               rdc_flash_parts[2].name = "linux";
-               rdc_flash_parts[2].offset = 0;
-               rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
-               rdc_flash_parts[3].name = "config";
-               rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
-               rdc_flash_parts[3].size = 0x10000;
-               rdc_flash_parts[4].name = "productinfo";
-               rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
-               rdc_flash_parts[4].size = 0x10000;
-               rdc_flash_parts[5].name = "bootloader";
-               rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
-               rdc_flash_parts[5].size = 0x20000;
-               rdc_flash_data.nr_parts = 6;
-       }
-#endif
-       return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
-}
-
-#ifdef CONFIG_MTD_RDC3210
-arch_initcall(rdc_board_setup);
-#else
-late_initcall(rdc_board_setup);
-#endif
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c
deleted file mode 100644 (file)
index ad206c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *     Machine specific setup for generic
- */
-
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <asm/arch_hooks.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-
-char * __init machine_specific_memory_setup(void)
-{
-       return "RDC R-321x";
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c b/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c
deleted file mode 100644 (file)
index 13b69f6..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * RDC321x watchdog driver
- *
- * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *
- * This driver is highly inspired from the cpu5_wdt driver
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/miscdevice.h>
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/timer.h>
-#include <linux/completion.h>
-#include <linux/jiffies.h>
-#include <linux/platform_device.h>
-#include <linux/watchdog.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-#define RDC_WDT_MASK           0x80000000      /* Mask */
-#define RDC_WDT_EN             0x00800000      /* Enable bit */
-#define RDC_WDT_WTI            0x00200000      /* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
-#define RDC_WDT_RST            0x00100000      /* Reset bit */
-#define RDC_WDT_WIF            0x00040000      /* WDT IRQ Flag */
-#define RDC_WDT_IRT            0x00000100      /* IRQ Routing table */
-#define RDC_WDT_CNT            0x00000001      /* WDT count */
-
-#define RDC_CLS_TMR            0x80003844      /* Clear timer */
-
-#define RDC_WDT_INTERVAL       (HZ/10+1)
-
-int nowayout = WATCHDOG_NOWAYOUT;
-module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
-
-static int ticks = 1000;
-
-/* some device data */
-
-static struct {
-       struct completion stop;
-       volatile int running;
-       struct timer_list timer;
-       volatile int queue;
-       int default_ticks;
-       unsigned long inuse;
-} rdc321x_wdt_device;
-
-/* generic helper functions */
-
-static void rdc321x_wdt_trigger(unsigned long unused)
-{
-       if( rdc321x_wdt_device.running )
-               ticks--;
-
-       /* keep watchdog alive */
-       outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA); 
-       
-       /* requeue?? */
-       if (rdc321x_wdt_device.queue && ticks)
-               mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-       else {
-               /* ticks doesn't matter anyway */
-               complete(&rdc321x_wdt_device.stop);
-       }
-
-}
-
-static void rdc321x_wdt_reset(void)
-{
-       ticks = rdc321x_wdt_device.default_ticks;
-}
-
-static void rdc321x_wdt_start(void)
-{
-       if (!rdc321x_wdt_device.queue) {
-               rdc321x_wdt_device.queue = 1;
-
-               /* Clear the timer */
-               outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
-               
-               /* Enable watchdog and set the timeout to 81.92 us */
-               outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
-
-               mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-       }
-
-       /* if process dies, counter is not decremented */
-       rdc321x_wdt_device.running++;
-}
-
-static int rdc321x_wdt_stop(void)
-{
-       if (rdc321x_wdt_device.running)
-               rdc321x_wdt_device.running = 0;
-
-       ticks = rdc321x_wdt_device.default_ticks;
-
-       return -EIO;
-}
-
-/* filesystem operations */
-
-static int rdc321x_wdt_open(struct inode *inode, struct file *file)
-{
-       if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
-               return -EBUSY;
-
-       return nonseekable_open(inode, file);
-}
-
-static int rdc321x_wdt_release(struct inode *inode, struct file *file)
-{
-       clear_bit(0, &rdc321x_wdt_device.inuse);
-       return 0;
-}
-
-static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-{
-       void __user *argp = (void __user *)arg;
-       unsigned int value;
-       static struct watchdog_info ident =
-       {
-               .options = WDIOF_CARDRESET,
-               .identity = "RDC321x WDT",
-       };
-
-       switch(cmd) {
-               case WDIOC_KEEPALIVE:
-                       rdc321x_wdt_reset();
-                       break;
-               case WDIOC_GETSTATUS:
-                       /* Read the value from the DATA register */
-                       value = inl(RDC3210_CFGREG_DATA);
-                       if ( copy_to_user(argp, &value, sizeof(int)) )
-                               return -EFAULT;
-                       break;
-               case WDIOC_GETSUPPORT:
-                       if ( copy_to_user(argp, &ident, sizeof(ident)) )
-                               return -EFAULT;
-                       break;
-               case WDIOC_SETOPTIONS:
-                       if ( copy_from_user(&value, argp, sizeof(int)) )
-                               return -EFAULT;
-                       switch(value) {
-                               case WDIOS_ENABLECARD:
-                                       rdc321x_wdt_start();
-                                       break;
-                               case WDIOS_DISABLECARD:
-                                       return rdc321x_wdt_stop();
-                               default:
-                                       return -EINVAL;
-                       }
-                       break;
-               default:
-                       return -ENOTTY;
-       }
-       return 0;
-}
-
-static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
-{
-       if ( !count )
-               return -EIO;
-
-       rdc321x_wdt_reset();
-
-       return count;
-}
-
-static const struct file_operations rdc321x_wdt_fops = {
-       .owner          = THIS_MODULE,
-       .llseek         = no_llseek,
-       .ioctl          = rdc321x_wdt_ioctl,
-       .open           = rdc321x_wdt_open,
-       .write          = rdc321x_wdt_write,
-       .release        = rdc321x_wdt_release,
-};
-
-static struct miscdevice rdc321x_wdt_misc = {
-       .minor  = WATCHDOG_MINOR,
-       .name   = "watchdog",
-       .fops   = &rdc321x_wdt_fops,
-};
-
-static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
-{
-       int err;
-
-       if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
-               printk(KERN_ERR PFX "misc_register failed\n");
-               return err;
-       }
-
-       /* Reset the watchdog */
-       outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
-
-       init_completion(&rdc321x_wdt_device.stop);
-       rdc321x_wdt_device.queue = 0;
-
-       clear_bit(0, &rdc321x_wdt_device.inuse);
-
-       setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
-
-       rdc321x_wdt_device.default_ticks = ticks;
-
-       printk(KERN_INFO PFX "init success\n");
-
-       return 0;
-}
-
-static int rdc321x_wdt_remove(struct platform_device *pdev)
-{
-       if (rdc321x_wdt_device.queue) {
-               rdc321x_wdt_device.queue = 0;
-               wait_for_completion(&rdc321x_wdt_device.stop);
-       }
-
-       misc_deregister(&rdc321x_wdt_misc);
-
-       return 0;
-}
-
-static struct platform_driver rdc321x_wdt_driver = {
-       .probe = rdc321x_wdt_probe,
-       .remove = rdc321x_wdt_remove,
-       .driver = {
-               .owner = THIS_MODULE,
-               .name = "rdc321x-wdt",
-       },
-};
-
-static int __init rdc321x_wdt_init(void)
-{
-       return platform_driver_register(&rdc321x_wdt_driver);
-}
-
-static void __exit rdc321x_wdt_exit(void)
-{
-       platform_driver_unregister(&rdc321x_wdt_driver);
-}
-
-module_init(rdc321x_wdt_init);
-module_exit(rdc321x_wdt_exit);
-
-MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
-MODULE_DESCRIPTION("RDC321x watchdog driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c
deleted file mode 100644 (file)
index a17d6ca..0000000
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
-  LzmaDecode.c
-  LZMA Decoder (optimized for Speed version)
-  
-  LZMA SDK 4.17 Copyright (c) 1999-2005 Igor Pavlov (2005-04-05)
-  http://www.7-zip.org/
-
-  LZMA SDK is licensed under two licenses:
-  1) GNU Lesser General Public License (GNU LGPL)
-  2) Common Public License (CPL)
-  It means that you can select one of these two licenses and 
-  follow rules of that license.
-
-  SPECIAL EXCEPTION:
-  Igor Pavlov, as the author of this Code, expressly permits you to 
-  statically or dynamically link your Code (or bind by name) to the 
-  interfaces of this file without subjecting your linked Code to the 
-  terms of the CPL or GNU LGPL. Any modifications or additions 
-  to this file, however, are subject to the LGPL or CPL terms.
-*/
-
-#include "LzmaDecode.h"
-
-#ifndef Byte
-#define Byte unsigned char
-#endif
-
-#define kNumTopBits 24
-#define kTopValue ((UInt32)1 << kNumTopBits)
-
-#define kNumBitModelTotalBits 11
-#define kBitModelTotal (1 << kNumBitModelTotalBits)
-#define kNumMoveBits 5
-
-#define RC_READ_BYTE (*Buffer++)
-
-#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
-  { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
-
-#ifdef _LZMA_IN_CB
-
-#define RC_TEST { if (Buffer == BufferLim) \
-  { UInt32 size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
-  BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
-
-#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
-
-#else
-
-#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
-
-#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
-#endif
-
-#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
-
-#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
-#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
-#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
-
-#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
-  { UpdateBit0(p); mi <<= 1; A0; } else \
-  { UpdateBit1(p); mi = (mi + mi) + 1; A1; } 
-  
-#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)               
-
-#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
-  { int i = numLevels; res = 1; \
-  do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
-  res -= (1 << numLevels); }
-
-
-#define kNumPosBitsMax 4
-#define kNumPosStatesMax (1 << kNumPosBitsMax)
-
-#define kLenNumLowBits 3
-#define kLenNumLowSymbols (1 << kLenNumLowBits)
-#define kLenNumMidBits 3
-#define kLenNumMidSymbols (1 << kLenNumMidBits)
-#define kLenNumHighBits 8
-#define kLenNumHighSymbols (1 << kLenNumHighBits)
-
-#define LenChoice 0
-#define LenChoice2 (LenChoice + 1)
-#define LenLow (LenChoice2 + 1)
-#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
-#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
-#define kNumLenProbs (LenHigh + kLenNumHighSymbols) 
-
-
-#define kNumStates 12
-#define kNumLitStates 7
-
-#define kStartPosModelIndex 4
-#define kEndPosModelIndex 14
-#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
-
-#define kNumPosSlotBits 6
-#define kNumLenToPosStates 4
-
-#define kNumAlignBits 4
-#define kAlignTableSize (1 << kNumAlignBits)
-
-#define kMatchMinLen 2
-
-#define IsMatch 0
-#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
-#define IsRepG0 (IsRep + kNumStates)
-#define IsRepG1 (IsRepG0 + kNumStates)
-#define IsRepG2 (IsRepG1 + kNumStates)
-#define IsRep0Long (IsRepG2 + kNumStates)
-#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
-#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
-#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
-#define LenCoder (Align + kAlignTableSize)
-#define RepLenCoder (LenCoder + kNumLenProbs)
-#define Literal (RepLenCoder + kNumLenProbs)
-
-#if Literal != LZMA_BASE_SIZE
-StopCompilingDueBUG
-#endif
-
-#ifdef _LZMA_OUT_READ
-
-typedef struct _LzmaVarState
-{
-  Byte *Buffer;
-  Byte *BufferLim;
-  UInt32 Range;
-  UInt32 Code;
-  #ifdef _LZMA_IN_CB
-  ILzmaInCallback *InCallback;
-  #endif
-  Byte *Dictionary;
-  UInt32 DictionarySize;
-  UInt32 DictionaryPos;
-  UInt32 GlobalPos;
-  UInt32 Reps[4];
-  int lc;
-  int lp;
-  int pb;
-  int State;
-  int RemainLen;
-  Byte TempDictionary[4];
-} LzmaVarState;
-
-int LzmaDecoderInit(
-    unsigned char *buffer, UInt32 bufferSize,
-    int lc, int lp, int pb,
-    unsigned char *dictionary, UInt32 dictionarySize,
-    #ifdef _LZMA_IN_CB
-    ILzmaInCallback *InCallback
-    #else
-    unsigned char *inStream, UInt32 inSize
-    #endif
-    )
-{
-  Byte *Buffer;
-  Byte *BufferLim;
-  UInt32 Range;
-  UInt32 Code;
-  LzmaVarState *vs = (LzmaVarState *)buffer;
-  CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
-  UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
-  UInt32 i;
-  if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
-    return LZMA_RESULT_NOT_ENOUGH_MEM;
-  vs->Dictionary = dictionary;
-  vs->DictionarySize = dictionarySize;
-  vs->DictionaryPos = 0;
-  vs->GlobalPos = 0;
-  vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
-  vs->lc = lc;
-  vs->lp = lp;
-  vs->pb = pb;
-  vs->State = 0;
-  vs->RemainLen = 0;
-  dictionary[dictionarySize - 1] = 0;
-  for (i = 0; i < numProbs; i++)
-    p[i] = kBitModelTotal >> 1; 
-
-  #ifdef _LZMA_IN_CB
-  RC_INIT;
-  #else
-  RC_INIT(inStream, inSize);
-  #endif
-  vs->Buffer = Buffer;
-  vs->BufferLim = BufferLim;
-  vs->Range = Range;
-  vs->Code = Code;
-  #ifdef _LZMA_IN_CB
-  vs->InCallback = InCallback;
-  #endif
-
-  return LZMA_RESULT_OK;
-}
-
-int LzmaDecode(unsigned char *buffer, 
-    unsigned char *outStream, UInt32 outSize,
-    UInt32 *outSizeProcessed)
-{
-  LzmaVarState *vs = (LzmaVarState *)buffer;
-  Byte *Buffer = vs->Buffer;
-  Byte *BufferLim = vs->BufferLim;
-  UInt32 Range = vs->Range;
-  UInt32 Code = vs->Code;
-  #ifdef _LZMA_IN_CB
-  ILzmaInCallback *InCallback = vs->InCallback;
-  #endif
-  CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
-  int state = vs->State;
-  Byte previousByte;
-  UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
-  UInt32 nowPos = 0;
-  UInt32 posStateMask = (1 << (vs->pb)) - 1;
-  UInt32 literalPosMask = (1 << (vs->lp)) - 1;
-  int lc = vs->lc;
-  int len = vs->RemainLen;
-  UInt32 globalPos = vs->GlobalPos;
-
-  Byte *dictionary = vs->Dictionary;
-  UInt32 dictionarySize = vs->DictionarySize;
-  UInt32 dictionaryPos = vs->DictionaryPos;
-
-  Byte tempDictionary[4];
-  if (dictionarySize == 0)
-  {
-    dictionary = tempDictionary;
-    dictionarySize = 1;
-    tempDictionary[0] = vs->TempDictionary[0];
-  }
-
-  if (len == -1)
-  {
-    *outSizeProcessed = 0;
-    return LZMA_RESULT_OK;
-  }
-
-  while(len != 0 && nowPos < outSize)
-  {
-    UInt32 pos = dictionaryPos - rep0;
-    if (pos >= dictionarySize)
-      pos += dictionarySize;
-    outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
-    if (++dictionaryPos == dictionarySize)
-      dictionaryPos = 0;
-    len--;
-  }
-  if (dictionaryPos == 0)
-    previousByte = dictionary[dictionarySize - 1];
-  else
-    previousByte = dictionary[dictionaryPos - 1];
-#else
-
-int LzmaDecode(
-    Byte *buffer, UInt32 bufferSize,
-    int lc, int lp, int pb,
-    #ifdef _LZMA_IN_CB
-    ILzmaInCallback *InCallback,
-    #else
-    unsigned char *inStream, UInt32 inSize,
-    #endif
-    unsigned char *outStream, UInt32 outSize,
-    UInt32 *outSizeProcessed)
-{
-  UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
-  CProb *p = (CProb *)buffer;
-
-  UInt32 i;
-  int state = 0;
-  Byte previousByte = 0;
-  UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
-  UInt32 nowPos = 0;
-  UInt32 posStateMask = (1 << pb) - 1;
-  UInt32 literalPosMask = (1 << lp) - 1;
-  int len = 0;
-  
-  Byte *Buffer;
-  Byte *BufferLim;
-  UInt32 Range;
-  UInt32 Code;
-  
-  if (bufferSize < numProbs * sizeof(CProb))
-    return LZMA_RESULT_NOT_ENOUGH_MEM;
-  for (i = 0; i < numProbs; i++)
-    p[i] = kBitModelTotal >> 1;
-  
-
-  #ifdef _LZMA_IN_CB
-  RC_INIT;
-  #else
-  RC_INIT(inStream, inSize);
-  #endif
-#endif
-
-  *outSizeProcessed = 0;
-  while(nowPos < outSize)
-  {
-    CProb *prob;
-    UInt32 bound;
-    int posState = (int)(
-        (nowPos 
-        #ifdef _LZMA_OUT_READ
-        + globalPos
-        #endif
-        )
-        & posStateMask);
-
-    prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
-    IfBit0(prob)
-    {
-      int symbol = 1;
-      UpdateBit0(prob)
-      prob = p + Literal + (LZMA_LIT_SIZE * 
-        (((
-        (nowPos 
-        #ifdef _LZMA_OUT_READ
-        + globalPos
-        #endif
-        )
-        & literalPosMask) << lc) + (previousByte >> (8 - lc))));
-
-      if (state >= kNumLitStates)
-      {
-        int matchByte;
-        #ifdef _LZMA_OUT_READ
-        UInt32 pos = dictionaryPos - rep0;
-        if (pos >= dictionarySize)
-          pos += dictionarySize;
-        matchByte = dictionary[pos];
-        #else
-        matchByte = outStream[nowPos - rep0];
-        #endif
-        do
-        {
-          int bit;
-          CProb *probLit;
-          matchByte <<= 1;
-          bit = (matchByte & 0x100);
-          probLit = prob + 0x100 + bit + symbol;
-          RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
-        }
-        while (symbol < 0x100);
-      }
-      while (symbol < 0x100)
-      {
-        CProb *probLit = prob + symbol;
-        RC_GET_BIT(probLit, symbol)
-      }
-      previousByte = (Byte)symbol;
-
-      outStream[nowPos++] = previousByte;
-      #ifdef _LZMA_OUT_READ
-      dictionary[dictionaryPos] = previousByte;
-      if (++dictionaryPos == dictionarySize)
-        dictionaryPos = 0;
-      #endif
-      if (state < 4) state = 0;
-      else if (state < 10) state -= 3;
-      else state -= 6;
-    }
-    else             
-    {
-      UpdateBit1(prob);
-      prob = p + IsRep + state;
-      IfBit0(prob)
-      {
-        UpdateBit0(prob);
-        rep3 = rep2;
-        rep2 = rep1;
-        rep1 = rep0;
-        state = state < kNumLitStates ? 0 : 3;
-        prob = p + LenCoder;
-      }
-      else
-      {
-        UpdateBit1(prob);
-        prob = p + IsRepG0 + state;
-        IfBit0(prob)
-        {
-          UpdateBit0(prob);
-          prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
-          IfBit0(prob)
-          {
-            #ifdef _LZMA_OUT_READ
-            UInt32 pos;
-            #endif
-            UpdateBit0(prob);
-            if (nowPos 
-                #ifdef _LZMA_OUT_READ
-                + globalPos
-                #endif
-                == 0)
-              return LZMA_RESULT_DATA_ERROR;
-            state = state < kNumLitStates ? 9 : 11;
-            #ifdef _LZMA_OUT_READ
-            pos = dictionaryPos - rep0;
-            if (pos >= dictionarySize)
-              pos += dictionarySize;
-            previousByte = dictionary[pos];
-            dictionary[dictionaryPos] = previousByte;
-            if (++dictionaryPos == dictionarySize)
-              dictionaryPos = 0;
-            #else
-            previousByte = outStream[nowPos - rep0];
-            #endif
-            outStream[nowPos++] = previousByte;
-            continue;
-          }
-          else
-          {
-            UpdateBit1(prob);
-          }
-        }
-        else
-        {
-          UInt32 distance;
-          UpdateBit1(prob);
-          prob = p + IsRepG1 + state;
-          IfBit0(prob)
-          {
-            UpdateBit0(prob);
-            distance = rep1;
-          }
-          else 
-          {
-            UpdateBit1(prob);
-            prob = p + IsRepG2 + state;
-            IfBit0(prob)
-            {
-              UpdateBit0(prob);
-              distance = rep2;
-            }
-            else
-            {
-              UpdateBit1(prob);
-              distance = rep3;
-              rep3 = rep2;
-            }
-            rep2 = rep1;
-          }
-          rep1 = rep0;
-          rep0 = distance;
-        }
-        state = state < kNumLitStates ? 8 : 11;
-        prob = p + RepLenCoder;
-      }
-      {
-        int numBits, offset;
-        CProb *probLen = prob + LenChoice;
-        IfBit0(probLen)
-        {
-          UpdateBit0(probLen);
-          probLen = prob + LenLow + (posState << kLenNumLowBits);
-          offset = 0;
-          numBits = kLenNumLowBits;
-        }
-        else
-        {
-          UpdateBit1(probLen);
-          probLen = prob + LenChoice2;
-          IfBit0(probLen)
-          {
-            UpdateBit0(probLen);
-            probLen = prob + LenMid + (posState << kLenNumMidBits);
-            offset = kLenNumLowSymbols;
-            numBits = kLenNumMidBits;
-          }
-          else
-          {
-            UpdateBit1(probLen);
-            probLen = prob + LenHigh;
-            offset = kLenNumLowSymbols + kLenNumMidSymbols;
-            numBits = kLenNumHighBits;
-          }
-        }
-        RangeDecoderBitTreeDecode(probLen, numBits, len);
-        len += offset;
-      }
-
-      if (state < 4)
-      {
-        int posSlot;
-        state += kNumLitStates;
-        prob = p + PosSlot +
-            ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << 
-            kNumPosSlotBits);
-        RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
-        if (posSlot >= kStartPosModelIndex)
-        {
-          int numDirectBits = ((posSlot >> 1) - 1);
-          rep0 = (2 | ((UInt32)posSlot & 1));
-          if (posSlot < kEndPosModelIndex)
-          {
-            rep0 <<= numDirectBits;
-            prob = p + SpecPos + rep0 - posSlot - 1;
-          }
-          else
-          {
-            numDirectBits -= kNumAlignBits;
-            do
-            {
-              RC_NORMALIZE
-              Range >>= 1;
-              rep0 <<= 1;
-              if (Code >= Range)
-              {
-                Code -= Range;
-                rep0 |= 1;
-              }
-            }
-            while (--numDirectBits != 0);
-            prob = p + Align;
-            rep0 <<= kNumAlignBits;
-            numDirectBits = kNumAlignBits;
-          }
-          {
-            int i = 1;
-            int mi = 1;
-            do
-            {
-              CProb *prob3 = prob + mi;
-              RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
-              i <<= 1;
-            }
-            while(--numDirectBits != 0);
-          }
-        }
-        else
-          rep0 = posSlot;
-        if (++rep0 == (UInt32)(0))
-        {
-          /* it's for stream version */
-          len = -1;
-          break;
-        }
-      }
-
-      len += kMatchMinLen;
-      if (rep0 > nowPos 
-        #ifdef _LZMA_OUT_READ
-        + globalPos || rep0 > dictionarySize
-        #endif
-        ) 
-        return LZMA_RESULT_DATA_ERROR;
-      do
-      {
-        #ifdef _LZMA_OUT_READ
-        UInt32 pos = dictionaryPos - rep0;
-        if (pos >= dictionarySize)
-          pos += dictionarySize;
-        previousByte = dictionary[pos];
-        dictionary[dictionaryPos] = previousByte;
-        if (++dictionaryPos == dictionarySize)
-          dictionaryPos = 0;
-        #else
-        previousByte = outStream[nowPos - rep0];
-        #endif
-        len--;
-        outStream[nowPos++] = previousByte;
-      }
-      while(len != 0 && nowPos < outSize);
-    }
-  }
-  RC_NORMALIZE;
-
-  #ifdef _LZMA_OUT_READ
-  vs->Buffer = Buffer;
-  vs->BufferLim = BufferLim;
-  vs->Range = Range;
-  vs->Code = Code;
-  vs->DictionaryPos = dictionaryPos;
-  vs->GlobalPos = globalPos + nowPos;
-  vs->Reps[0] = rep0;
-  vs->Reps[1] = rep1;
-  vs->Reps[2] = rep2;
-  vs->Reps[3] = rep3;
-  vs->State = state;
-  vs->RemainLen = len;
-  vs->TempDictionary[0] = tempDictionary[0];
-  #endif
-
-  *outSizeProcessed = nowPos;
-  return LZMA_RESULT_OK;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h
deleted file mode 100644 (file)
index 5367735..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 
-  LzmaDecode.h
-  LZMA Decoder interface
-
-  LZMA SDK 4.16 Copyright (c) 1999-2005 Igor Pavlov (2005-03-18)
-  http://www.7-zip.org/
-
-  LZMA SDK is licensed under two licenses:
-  1) GNU Lesser General Public License (GNU LGPL)
-  2) Common Public License (CPL)
-  It means that you can select one of these two licenses and 
-  follow rules of that license.
-
-  SPECIAL EXCEPTION:
-  Igor Pavlov, as the author of this code, expressly permits you to 
-  statically or dynamically link your code (or bind by name) to the 
-  interfaces of this file without subjecting your linked code to the 
-  terms of the CPL or GNU LGPL. Any modifications or additions 
-  to this file, however, are subject to the LGPL or CPL terms.
-*/
-
-#ifndef __LZMADECODE_H
-#define __LZMADECODE_H
-
-/* #define _LZMA_IN_CB */
-/* Use callback for input data */
-
-/* #define _LZMA_OUT_READ */
-/* Use read function for output data */
-
-/* #define _LZMA_PROB32 */
-/* It can increase speed on some 32-bit CPUs, 
-   but memory usage will be doubled in that case */
-
-/* #define _LZMA_LOC_OPT */
-/* Enable local speed optimizations inside code */
-
-#ifndef UInt32
-#ifdef _LZMA_UINT32_IS_ULONG
-#define UInt32 unsigned long
-#else
-#define UInt32 unsigned int
-#endif
-#endif
-
-#ifdef _LZMA_PROB32
-#define CProb UInt32
-#else
-#define CProb unsigned short
-#endif
-
-#define LZMA_RESULT_OK 0
-#define LZMA_RESULT_DATA_ERROR 1
-#define LZMA_RESULT_NOT_ENOUGH_MEM 2
-
-#ifdef _LZMA_IN_CB
-typedef struct _ILzmaInCallback
-{
-  int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
-} ILzmaInCallback;
-#endif
-
-#define LZMA_BASE_SIZE 1846
-#define LZMA_LIT_SIZE 768
-
-/* 
-bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
-bufferSize += 100 in case of _LZMA_OUT_READ
-by default CProb is unsigned short, 
-but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
-*/
-
-#ifdef _LZMA_OUT_READ
-int LzmaDecoderInit(
-    unsigned char *buffer, UInt32 bufferSize,
-    int lc, int lp, int pb,
-    unsigned char *dictionary, UInt32 dictionarySize,
-  #ifdef _LZMA_IN_CB
-    ILzmaInCallback *inCallback
-  #else
-    unsigned char *inStream, UInt32 inSize
-  #endif
-);
-#endif
-
-int LzmaDecode(
-    unsigned char *buffer, 
-  #ifndef _LZMA_OUT_READ
-    UInt32 bufferSize,
-    int lc, int lp, int pb,
-  #ifdef _LZMA_IN_CB
-    ILzmaInCallback *inCallback,
-  #else
-    unsigned char *inStream, UInt32 inSize,
-  #endif
-  #endif
-    unsigned char *outStream, UInt32 outSize,
-    UInt32 *outSizeProcessed);
-
-#endif
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c b/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c
deleted file mode 100644 (file)
index bd74cb7..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * lzma_misc.c
- * 
- * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
- * puts by Nick Holloway 1993, better puts by Martin Mares 1995
- * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
- * 
- * Decompress LZMA compressed vmlinuz 
- * Version 0.9 Copyright (c) Ming-Ching Tiew mctiew@yahoo.com
- * Program adapted from misc.c for 2.6 kernel
- * Forward ported to latest 2.6 version of misc.c by
- * Felix Fietkau <nbd@openwrt.org>
- */
-
-#undef CONFIG_PARAVIRT
-#include <linux/linkage.h>
-#include <linux/vmalloc.h>
-#include <linux/screen_info.h>
-#include <linux/console.h>
-#include <linux/string.h>
-#include <asm/io.h>
-#include <asm/page.h>
-#include <asm/boot.h>
-
-/* WARNING!!
- * This code is compiled with -fPIC and it is relocated dynamically
- * at run time, but no relocation processing is performed.
- * This means that it is not safe to place pointers in static structures.
- */
-
-/*
- * Getting to provable safe in place decompression is hard.
- * Worst case behaviours need to be analized.
- * Background information:
- *
- * The file layout is:
- *    magic[2]
- *    method[1]
- *    flags[1]
- *    timestamp[4]
- *    extraflags[1]
- *    os[1]
- *    compressed data blocks[N]
- *    crc[4] orig_len[4]
- *
- * resulting in 18 bytes of non compressed data overhead.
- *
- * Files divided into blocks
- * 1 bit (last block flag)
- * 2 bits (block type)
- *
- * 1 block occurs every 32K -1 bytes or when there 50% compression has been achieved.
- * The smallest block type encoding is always used.
- *
- * stored:
- *    32 bits length in bytes.
- *
- * fixed:
- *    magic fixed tree.
- *    symbols.
- *
- * dynamic:
- *    dynamic tree encoding.
- *    symbols.
- *
- *
- * The buffer for decompression in place is the length of the
- * uncompressed data, plus a small amount extra to keep the algorithm safe.
- * The compressed data is placed at the end of the buffer.  The output
- * pointer is placed at the start of the buffer and the input pointer
- * is placed where the compressed data starts.  Problems will occur
- * when the output pointer overruns the input pointer.
- *
- * The output pointer can only overrun the input pointer if the input
- * pointer is moving faster than the output pointer.  A condition only
- * triggered by data whose compressed form is larger than the uncompressed
- * form.
- *
- * The worst case at the block level is a growth of the compressed data
- * of 5 bytes per 32767 bytes.
- *
- * The worst case internal to a compressed block is very hard to figure.
- * The worst case can at least be boundined by having one bit that represents
- * 32764 bytes and then all of the rest of the bytes representing the very
- * very last byte.
- *
- * All of which is enough to compute an amount of extra data that is required
- * to be safe.  To avoid problems at the block level allocating 5 extra bytes
- * per 32767 bytes of data is sufficient.  To avoind problems internal to a block
- * adding an extra 32767 bytes (the worst case uncompressed block size) is
- * sufficient, to ensure that in the worst case the decompressed data for
- * block will stop the byte before the compressed data for a block begins.
- * To avoid problems with the compressed data's meta information an extra 18
- * bytes are needed.  Leading to the formula:
- *
- * extra_bytes = (uncompressed_size >> 12) + 32768 + 18 + decompressor_size.
- *
- * Adding 8 bytes per 32K is a bit excessive but much easier to calculate.
- * Adding 32768 instead of 32767 just makes for round numbers.
- * Adding the decompressor_size is necessary as it musht live after all
- * of the data as well.  Last I measured the decompressor is about 14K.
- * 10K of actuall data and 4K of bss.
- *
- */
-
-/*
- * gzip declarations
- */
-
-#define OF(args)  args
-#define STATIC static
-
-#undef memcpy
-
-typedef unsigned char  uch;
-typedef unsigned short ush;
-typedef unsigned long  ulg;
-
-#define WSIZE 0x80000000       /* Window size must be at least 32k,
-                                * and a power of two
-                                * We don't actually have a window just
-                                * a huge output buffer so I report
-                                * a 2G windows size, as that should
-                                * always be larger than our output buffer.
-                                */
-
-static uch *inbuf;     /* input buffer */
-static uch *window;    /* Sliding window buffer, (and final output buffer) */
-
-static unsigned insize;  /* valid bytes in inbuf */
-static unsigned inptr;   /* index of next byte to be processed in inbuf */
-static unsigned long workspace;
-
-#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
-               
-/* Diagnostic functions */
-#ifdef DEBUG
-#  define Assert(cond,msg) {if(!(cond)) error(msg);}
-#  define Trace(x) fprintf x
-#  define Tracev(x) {if (verbose) fprintf x ;}
-#  define Tracevv(x) {if (verbose>1) fprintf x ;}
-#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
-#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
-#else
-#  define Assert(cond,msg)
-#  define Trace(x)
-#  define Tracev(x)
-#  define Tracevv(x)
-#  define Tracec(c,x)
-#  define Tracecv(c,x)
-#endif
-
-static int  fill_inbuf(void);
-  
-/*
- * This is set up by the setup-routine at boot-time
- */
-static unsigned char *real_mode; /* Pointer to real-mode data */
-extern unsigned char input_data[];
-extern int input_len;
-
-static void error(char *x);
-static void *memcpy(void *dest, const void *src, unsigned n);
-
-#ifdef CONFIG_X86_NUMAQ
-void *xquad_portio;
-#endif
-
-static void* memcpy(void* dest, const void* src, unsigned n)
-{
-       int i;
-       char *d = (char *)dest, *s = (char *)src;
-
-       for (i=0;i<n;i++) d[i] = s[i];
-       return dest;
-}
-
-/* ===========================================================================
- * Fill the input buffer. This is called only when the buffer is empty
- * and at least one byte is really needed.
- */
-static int fill_inbuf(void)
-{
-       error("ran out of input data");
-       return 0;
-}
-
-
-// When using LZMA in callback, the compressed length is not needed.
-// Otherwise you need a special version of lzma compression program
-// which will pad the compressed length in the header.
-#define _LZMA_IN_CB
-#include "LzmaDecode.h"
-#include "LzmaDecode.c"
-
-static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize);
-
-static int early_serial_base = 0x3f8;  /* ttyS0 */
-
-#define XMTRDY          0x20
-
-#define DLAB            0x80
-
-#define TXR             0       /*  Transmit register (WRITE) */
-#define RXR             0       /*  Receive register  (READ)  */
-#define IER             1       /*  Interrupt Enable          */
-#define IIR             2       /*  Interrupt ID              */
-#define FCR             2       /*  FIFO control              */
-#define LCR             3       /*  Line control              */
-#define MCR             4       /*  Modem control             */
-#define LSR             5       /*  Line Status               */
-#define MSR             6       /*  Modem Status              */
-#define DLL             0       /*  Divisor Latch Low         */
-#define DLH             1       /*  Divisor latch High        */
-
-static int early_serial_putc(unsigned char ch)
-{
-        unsigned timeout = 0xffff;
-        while ((inb(early_serial_base + LSR) & XMTRDY) == 0 && --timeout)
-                cpu_relax();
-        outb(ch, early_serial_base + TXR);
-        return timeout ? 0 : -1;
-}
-
-static void early_serial_write(const char *s, unsigned n)
-{
-        while (*s && n-- > 0) {
-                if (*s == '\n')
-                        early_serial_putc('\r');
-                early_serial_putc(*s);
-                s++;
-        }
-}
-
-#define DEFAULT_BAUD 38400
-
-static __init void early_serial_init(void)
-{
-        unsigned char c;
-        unsigned divisor;
-        unsigned baud = DEFAULT_BAUD;
-        char *e;
-
-        outb(0x3, early_serial_base + LCR);     /* 8n1 */
-        outb(0, early_serial_base + IER);       /* no interrupt */
-        outb(0, early_serial_base + FCR);       /* no fifo */
-        outb(0x3, early_serial_base + MCR);     /* DTR + RTS */
-
-       baud = DEFAULT_BAUD;
-
-        divisor = 115200 / baud;
-        c = inb(early_serial_base + LCR);
-        outb(c | DLAB, early_serial_base + LCR);
-        outb(divisor & 0xff, early_serial_base + DLL);
-        outb((divisor >> 8) & 0xff, early_serial_base + DLH);
-        outb(c & ~DLAB, early_serial_base + LCR);
-}
-
-/*
- * Do the lzma decompression
- * When using LZMA in callback, the end of input stream is automatically determined
- */
-static int lzma_unzip(void)
-{
-
-       unsigned int i;  /* temp value */
-       unsigned int lc; /* literal context bits */
-       unsigned int lp; /* literal pos state bits */
-       unsigned int pb; /* pos state bits */
-       unsigned int uncompressedSize = 0;
-       unsigned char* p;
-       
-       ILzmaInCallback callback;
-       callback.Read = read_byte;
-
-       /* lzma args */
-       i = get_byte();
-       lc = i % 9, i = i / 9;
-       lp = i % 5, pb = i / 5;
-       
-       /* skip dictionary size */
-       for (i = 0; i < 4; i++) 
-               get_byte();
-       // get uncompressedSize         
-       p= (char*)&uncompressedSize;    
-       for (i = 0; i < 4; i++) 
-           *p++ = get_byte();
-           
-       //get compressedSize 
-       for (i = 0; i < 4; i++) 
-               get_byte();
-       
-       // point it beyond uncompresedSize
-       //workspace = window + uncompressedSize;
-       
-       /* decompress kernel */
-       if (LzmaDecode((unsigned char*)workspace, ~0, lc, lp, pb, &callback,
-               (unsigned char*)window, uncompressedSize, &i) == LZMA_RESULT_OK)
-               return 0;
-       else
-               return 1;
-}
-
-
-#ifdef  _LZMA_IN_CB
-static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize)
-{
-       static unsigned int i = 0;
-       static unsigned char val;
-       *bufferSize = 1;
-       val = get_byte();
-       *buffer = &val;
-       return LZMA_RESULT_OK;
-}      
-#endif
-
-static void error(char *x)
-{
-       while(1);       /* Halt */
-}
-
-asmlinkage void decompress_kernel(void *rmode, unsigned long end,
-                       uch *input_data, unsigned long input_len, uch *output)
-{
-       real_mode = rmode;
-
-       window = output;
-       inbuf  = input_data;    /* Input buffer */
-       insize = input_len;
-       inptr  = 0;
-
-       if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1))
-               error("Destination address not CONFIG_PHYSICAL_ALIGN aligned");
-       if ((workspace = end) > ((-__PAGE_OFFSET-(512 <<20)-1) & 0x7fffffff))
-               error("Destination address too large");
-#ifndef CONFIG_RELOCATABLE
-       if ((u32)output != LOAD_PHYSICAL_ADDR)
-               error("Wrong destination address");
-#endif
-       early_serial_init();
-       early_serial_write("Uncompressing Linux\n", 512);
-       lzma_unzip();
-       early_serial_write("Done, booting\n", 512);
-       return;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c b/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c
deleted file mode 100644 (file)
index f4b9083..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/mm.h>
-#include <asm/io.h>
-#include <asm/processor.h>
-
-#include "cpu.h"
-
-static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
-        .c_vendor       = "RDC",
-        .c_models = {
-                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
-                  {
-                          [0] = "R861x(-G)",
-                  }
-                },
-        },
-};
-
-int __init rdc_init_cpu(void)
-{
-        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
-        return 0;
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile
deleted file mode 100644 (file)
index 5961bc7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the RDC321x specific parts of the kernel
-#
-obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
-
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c
deleted file mode 100644 (file)
index dbd0327..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
- *     RDC321x architecture specific GPIO support
- *
- *  This program is free software; you can redistribute  it and/or modify it
- *  under  the terms of  the GNU General  Public License as published by the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/autoconf.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/types.h>
-#include <linux/module.h>
-#include <linux/delay.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-static inline int rdc_gpio_is_valid(unsigned gpio)
-{
-       return (gpio <= RDC_MAX_GPIO);
-}
-
-static unsigned int rdc_gpio_read(unsigned gpio)
-{
-       unsigned int val;
-
-       val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-        val |= (0x1 << (gpio & 0x1F));
-        outl(val, RDC3210_CFGREG_DATA);
-        udelay(10);
-        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
-        outl(val, RDC3210_CFGREG_ADDR);
-        udelay(10);
-        val = inl(RDC3210_CFGREG_DATA);
-
-       return val;
-}
-
-static void rdc_gpio_write(unsigned int val)
-{
-       if (val) {
-               outl(val, RDC3210_CFGREG_DATA);
-               udelay(10);
-       }
-}
-
-int rdc_gpio_get_value(unsigned gpio)
-{
-       if (rdc_gpio_is_valid(gpio))
-               return (int)rdc_gpio_read(gpio);
-       else
-               return -EINVAL;
-}
-EXPORT_SYMBOL(rdc_gpio_get_value);
-
-void rdc_gpio_set_value(unsigned gpio, int value)
-{
-       unsigned int val;
-
-       if (!rdc_gpio_is_valid(gpio))
-               return;
-       
-       val = rdc_gpio_read(gpio);
-
-       if (value)
-               val &= ~(0x1 << (gpio & 0x1F));
-       else
-               val |= (0x1 << (gpio & 0x1F));
-
-       rdc_gpio_write(val);
-}
-EXPORT_SYMBOL(rdc_gpio_set_value);
-
-int rdc_gpio_direction_input(unsigned gpio)
-{
-       return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_input);
-
-int rdc_gpio_direction_output(unsigned gpio, int value)
-{
-       return 0;
-}
-EXPORT_SYMBOL(rdc_gpio_direction_output);
-
-
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c
deleted file mode 100644 (file)
index 86981f8..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- *
- *  Generic RDC321x platform devices
- *
- *  Copyright (C) 2007-2008 OpenWrt.org
- *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the
- *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- *  Boston, MA  02110-1301, USA.
- *
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/version.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/physmap.h>
-#include <linux/root_dev.h>
-#include <asm/gpio.h>
-
-/* Flash */
-#ifdef CONFIG_MTD_RDC3210
-static struct resource rdc_flash_resource[] = {
-       [0] = {
-               .start = (u32)-CONFIG_MTD_RDC3210_SIZE,
-               .end = (u32)-1,
-               .flags = IORESOURCE_MEM,
-       },
-};
-
-static struct platform_device rdc_flash_device = {
-       .name = "rdc321x-flash",
-       .id = -1,
-       .num_resources = ARRAY_SIZE(rdc_flash_resource),
-       .resource = rdc_flash_resource,
-};
-#else
-static struct mtd_partition rdc_flash_parts[15];
-
-static struct resource rdc_flash_resource = {
-       .end = (u32)-1,
-       .flags = IORESOURCE_MEM,
-};
-
-static struct physmap_flash_data rdc_flash_data = {
-       .parts = rdc_flash_parts,
-};
-
-static struct platform_device rdc_flash_device = {
-       .name = "physmap-flash",
-       .id = -1,
-       .resource = &rdc_flash_resource,
-       .num_resources = 1,
-       .dev.platform_data = &rdc_flash_data,
-};
-#endif
-
-/* LEDS */
-static struct gpio_led default_leds[] = {
-        { .name = "rdc321x:dmz", .gpio = 1, },
-};
-
-static struct gpio_led_platform_data rdc321x_led_data = {
-       .num_leds = ARRAY_SIZE(default_leds),
-       .leds = default_leds,
-};
-
-static struct platform_device rdc321x_leds = {
-       .name = "leds-gpio",
-       .id = -1,
-       .dev = {
-               .platform_data = &rdc321x_led_data,
-       }
-};
-
-/* Watchdog */
-static struct platform_device rdc321x_wdt = {
-       .name = "rdc321x-wdt",
-       .id = -1,
-       .num_resources = 0,
-};
-
-/* Button */
-static struct gpio_keys_button rdc321x_gpio_btn[] = {
-       {
-               .gpio = 0,
-               .code = BTN_0,
-               .desc = "Reset",
-               .active_low = 1,
-       }
-};
-
-static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
-       .buttons = rdc321x_gpio_btn,
-       .nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
-};
-
-static struct platform_device rdc321x_button = {
-       .name = "gpio-keys",
-       .id = -1,
-       .dev = {
-               .platform_data = &rdc321x_gpio_btn_data,
-       }
-};
-
-static struct platform_device *rdc321x_devs[] = {
-       &rdc_flash_device,
-       &rdc321x_leds,
-       &rdc321x_wdt,
-       &rdc321x_button
-};
-
-static int probe_flash_start(struct map_info *the_map)
-{
-       struct mtd_info *res;
-
-       the_map->virt = ioremap(the_map->phys, the_map->size);
-       if (the_map->virt == NULL)
-               return 1;
-       for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
-                       >>= 1) {
-               res = do_map_probe("cfi_probe", the_map);
-               if (res == NULL)
-                       res = do_map_probe("jedec_probe", the_map);
-               if (res != NULL)
-                       break;
-       }
-       iounmap(the_map->virt);
-       if (res != NULL)
-               the_map->phys = (u32)-(s32)(the_map->size = res->size);
-       return res == NULL;
-}
-
-static __init int rdc_board_setup(void)
-{
-#ifndef CONFIG_MTD_RDC3210
-       struct map_info rdc_map_info;
-       u32 the_header[4];
-
-       ROOT_DEV = 0;
-       rdc_map_info.name = rdc_flash_device.name;
-       rdc_map_info.phys = 0xff000000;
-       rdc_map_info.size = 0x1000000;
-       rdc_map_info.bankwidth = 2;
-       rdc_map_info.set_vpp = NULL;
-       simple_map_init(&rdc_map_info);
-       while (probe_flash_start(&rdc_map_info)) {
-               rdc_map_info.phys++;
-               if (--rdc_map_info.size)
-                       panic("Not to be or to be: That"
-                               " is not the question.");
-       }
-       rdc_flash_resource.start = rdc_map_info.phys;
-       rdc_flash_data.width = rdc_map_info.bankwidth;
-       rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
-       if (rdc_map_info.virt == NULL)
-               panic("Something's rotten in Denmark!");
-       the_header[0] = ((u32 *)rdc_map_info.virt)[0];
-       the_header[1] = ((u32 *)rdc_map_info.virt)[1];
-       the_header[2] = ((u32 *)rdc_map_info.virt)[2];
-       the_header[3] = ((u32 *)rdc_map_info.virt)[3];
-       iounmap(rdc_map_info.virt);
-       if (!memcmp(the_header, "GMTK", 4)) {   /* Gemtek */
-               /* TODO */
-       } else if (!memcmp(the_header, "CSYS", 4)) {    /* Sitecom */
-               /* TODO */
-       } else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) { /* AMIT */
-               rdc_flash_parts[0].name = "kernel_parthdr";
-               rdc_flash_parts[0].offset = 0;
-               rdc_flash_parts[0].size = 0x10;
-               rdc_flash_parts[1].name = "kernel";
-               rdc_flash_parts[1].offset = 0x10;
-               rdc_flash_parts[1].size = 0xffff0;
-               rdc_flash_parts[2].name = "rootfs_parthdr";
-               rdc_flash_parts[2].offset = 0x100000;
-               rdc_flash_parts[2].size = 0x10;
-               rdc_flash_parts[3].name = "rootfs";
-               rdc_flash_parts[3].offset = 0x100010;
-               rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
-               rdc_flash_parts[4].name = "config_parthdr";
-               rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
-               rdc_flash_parts[4].size = 0x10;
-               rdc_flash_parts[5].name = "config";
-               rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
-               rdc_flash_parts[5].size = 0xfff0;
-               rdc_flash_parts[6].name = "recoveryfs_parthdr";
-               rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
-               rdc_flash_parts[6].size = 0x10;
-               rdc_flash_parts[7].name = "recoveryfs";
-               rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
-               rdc_flash_parts[7].size = 0x3fff0;
-               rdc_flash_parts[8].name = "recovery_parthdr";
-               rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
-               rdc_flash_parts[8].size = 0x10;
-               rdc_flash_parts[9].name = "recovery";
-               rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
-               rdc_flash_parts[9].size = 0x7ff0;
-               rdc_flash_parts[10].name = "productinfo_parthdr";
-               rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
-               rdc_flash_parts[10].size = 0x10;
-               rdc_flash_parts[11].name = "productinfo";
-               rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
-               rdc_flash_parts[11].size = 0x1ff0;
-               rdc_flash_parts[12].name = "bootloader_parthdr";
-               rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
-               rdc_flash_parts[12].size = 0x10;
-               rdc_flash_parts[13].name = "bootloader";
-               rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
-               rdc_flash_parts[13].size = 0x5ff0;
-               rdc_flash_parts[14].name = "everything";
-               rdc_flash_parts[14].offset = 0;
-               rdc_flash_parts[14].size = rdc_map_info.size;
-               rdc_flash_data.nr_parts = 15;
-       } else {        /* ZyXEL */
-               rdc_flash_parts[0].name = "kernel";
-               rdc_flash_parts[0].offset = 0;
-               rdc_flash_parts[0].size = 0x100000;
-               rdc_flash_parts[1].name = "rootfs";
-               rdc_flash_parts[1].offset = 0x100000;
-               rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
-               rdc_flash_parts[2].name = "linux";
-               rdc_flash_parts[2].offset = 0;
-               rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
-               rdc_flash_parts[3].name = "config";
-               rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
-               rdc_flash_parts[3].size = 0x10000;
-               rdc_flash_parts[4].name = "productinfo";
-               rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
-               rdc_flash_parts[4].size = 0x10000;
-               rdc_flash_parts[5].name = "bootloader";
-               rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
-               rdc_flash_parts[5].size = 0x20000;
-               rdc_flash_data.nr_parts = 6;
-       }
-#endif
-       return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
-}
-
-#ifdef CONFIG_MTD_RDC3210
-arch_initcall(rdc_board_setup);
-#else
-late_initcall(rdc_board_setup);
-#endif
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c
deleted file mode 100644 (file)
index ad206c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *     Machine specific setup for generic
- */
-
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <asm/arch_hooks.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-
-char * __init machine_specific_memory_setup(void)
-{
-       return "RDC R-321x";
-}
diff --git a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c b/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c
deleted file mode 100644 (file)
index 13b69f6..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * RDC321x watchdog driver
- *
- * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
- *
- * This driver is highly inspired from the cpu5_wdt driver
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/miscdevice.h>
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/timer.h>
-#include <linux/completion.h>
-#include <linux/jiffies.h>
-#include <linux/platform_device.h>
-#include <linux/watchdog.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
-
-#include <asm/mach-rdc/rdc321x_defs.h>
-
-#define RDC_WDT_MASK           0x80000000      /* Mask */
-#define RDC_WDT_EN             0x00800000      /* Enable bit */
-#define RDC_WDT_WTI            0x00200000      /* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
-#define RDC_WDT_RST            0x00100000      /* Reset bit */
-#define RDC_WDT_WIF            0x00040000      /* WDT IRQ Flag */
-#define RDC_WDT_IRT            0x00000100      /* IRQ Routing table */
-#define RDC_WDT_CNT            0x00000001      /* WDT count */
-
-#define RDC_CLS_TMR            0x80003844      /* Clear timer */
-
-#define RDC_WDT_INTERVAL       (HZ/10+1)
-
-int nowayout = WATCHDOG_NOWAYOUT;
-module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
-
-static int ticks = 1000;
-
-/* some device data */
-
-static struct {
-       struct completion stop;
-       volatile int running;
-       struct timer_list timer;
-       volatile int queue;
-       int default_ticks;
-       unsigned long inuse;
-} rdc321x_wdt_device;
-
-/* generic helper functions */
-
-static void rdc321x_wdt_trigger(unsigned long unused)
-{
-       if( rdc321x_wdt_device.running )
-               ticks--;
-
-       /* keep watchdog alive */
-       outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA); 
-       
-       /* requeue?? */
-       if (rdc321x_wdt_device.queue && ticks)
-               mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-       else {
-               /* ticks doesn't matter anyway */
-               complete(&rdc321x_wdt_device.stop);
-       }
-
-}
-
-static void rdc321x_wdt_reset(void)
-{
-       ticks = rdc321x_wdt_device.default_ticks;
-}
-
-static void rdc321x_wdt_start(void)
-{
-       if (!rdc321x_wdt_device.queue) {
-               rdc321x_wdt_device.queue = 1;
-
-               /* Clear the timer */
-               outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
-               
-               /* Enable watchdog and set the timeout to 81.92 us */
-               outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
-
-               mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
-       }
-
-       /* if process dies, counter is not decremented */
-       rdc321x_wdt_device.running++;
-}
-
-static int rdc321x_wdt_stop(void)
-{
-       if (rdc321x_wdt_device.running)
-               rdc321x_wdt_device.running = 0;
-
-       ticks = rdc321x_wdt_device.default_ticks;
-
-       return -EIO;
-}
-
-/* filesystem operations */
-
-static int rdc321x_wdt_open(struct inode *inode, struct file *file)
-{
-       if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
-               return -EBUSY;
-
-       return nonseekable_open(inode, file);
-}
-
-static int rdc321x_wdt_release(struct inode *inode, struct file *file)
-{
-       clear_bit(0, &rdc321x_wdt_device.inuse);
-       return 0;
-}
-
-static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-{
-       void __user *argp = (void __user *)arg;
-       unsigned int value;
-       static struct watchdog_info ident =
-       {
-               .options = WDIOF_CARDRESET,
-               .identity = "RDC321x WDT",
-       };
-
-       switch(cmd) {
-               case WDIOC_KEEPALIVE:
-                       rdc321x_wdt_reset();
-                       break;
-               case WDIOC_GETSTATUS:
-                       /* Read the value from the DATA register */
-                       value = inl(RDC3210_CFGREG_DATA);
-                       if ( copy_to_user(argp, &value, sizeof(int)) )
-                               return -EFAULT;
-                       break;
-               case WDIOC_GETSUPPORT:
-                       if ( copy_to_user(argp, &ident, sizeof(ident)) )
-                               return -EFAULT;
-                       break;
-               case WDIOC_SETOPTIONS:
-                       if ( copy_from_user(&value, argp, sizeof(int)) )
-                               return -EFAULT;
-                       switch(value) {
-                               case WDIOS_ENABLECARD:
-                                       rdc321x_wdt_start();
-                                       break;
-                               case WDIOS_DISABLECARD:
-                                       return rdc321x_wdt_stop();
-                               default:
-                                       return -EINVAL;
-                       }
-                       break;
-               default:
-                       return -ENOTTY;
-       }
-       return 0;
-}
-
-static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
-{
-       if ( !count )
-               return -EIO;
-
-       rdc321x_wdt_reset();
-
-       return count;
-}
-
-static const struct file_operations rdc321x_wdt_fops = {
-       .owner          = THIS_MODULE,
-       .llseek         = no_llseek,
-       .ioctl          = rdc321x_wdt_ioctl,
-       .open           = rdc321x_wdt_open,
-       .write          = rdc321x_wdt_write,
-       .release        = rdc321x_wdt_release,
-};
-
-static struct miscdevice rdc321x_wdt_misc = {
-       .minor  = WATCHDOG_MINOR,
-       .name   = "watchdog",
-       .fops   = &rdc321x_wdt_fops,
-};
-
-static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
-{
-       int err;
-
-       if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
-               printk(KERN_ERR PFX "misc_register failed\n");
-               return err;
-       }
-
-       /* Reset the watchdog */
-       outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
-
-       init_completion(&rdc321x_wdt_device.stop);
-       rdc321x_wdt_device.queue = 0;
-
-       clear_bit(0, &rdc321x_wdt_device.inuse);
-
-       setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
-
-       rdc321x_wdt_device.default_ticks = ticks;
-
-       printk(KERN_INFO PFX "init success\n");
-
-       return 0;
-}
-
-static int rdc321x_wdt_remove(struct platform_device *pdev)
-{
-       if (rdc321x_wdt_device.queue) {
-               rdc321x_wdt_device.queue = 0;
-               wait_for_completion(&rdc321x_wdt_device.stop);
-       }
-
-       misc_deregister(&rdc321x_wdt_misc);
-
-       return 0;
-}
-
-static struct platform_driver rdc321x_wdt_driver = {
-       .probe = rdc321x_wdt_probe,
-       .remove = rdc321x_wdt_remove,
-       .driver = {
-               .owner = THIS_MODULE,
-               .name = "rdc321x-wdt",
-       },
-};
-
-static int __init rdc321x_wdt_init(void)
-{
-       return platform_driver_register(&rdc321x_wdt_driver);
-}
-
-static void __exit rdc321x_wdt_exit(void)
-{
-       platform_driver_unregister(&rdc321x_wdt_driver);
-}
-
-module_init(rdc321x_wdt_init);
-module_exit(rdc321x_wdt_exit);
-
-MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
-MODULE_DESCRIPTION("RDC321x watchdog driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h b/target/linux/rdc/files-2.6.24/drivers/mtd/maps/imghdr.h
deleted file mode 100644 (file)
index 7232b70..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef GT_IMGHDR_H
-#define GT_IMGHDR_H
-
-#define GTIMG_MAGIC            "GMTK"
-
-/* Product ID */
-#define PID_RTL_AIRGO          1
-#define PID_RTL_RALINK         2
-#define PID_RDC_AIRGO          3
-#define PID_RDC_RALINK         5       /* White Lable */
-
-/* Gemtek */
-typedef struct
-{
-       u8              magic[4];               /* ASICII: GMTK */
-       u32             checksum;               /* CRC32 */
-       u32             version;                /* x.x.x.x */
-       u32             kernelsz;               /* The size of the kernel image */
-       u32             imagesz;                /* The length of this image file ( kernel + romfs + this header) */
-       u32             pid;                    /* Product ID */
-       u32             fastcksum;              /* Partial CRC32 on (First(256), medium(256), last(512)) */
-       u32             reserved;
-}gt_imghdr_t;
-
-#endif
diff --git a/target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c b/target/linux/rdc/files-2.6.24/drivers/mtd/maps/rdc3210.c
deleted file mode 100644 (file)
index e04bb99..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*******************************************************************
- * Simple Flash mapping for RDC3210                                *
- *                                                                 *
- *                                                     2005.03.23  *
- *                              Dante Su (dante_su@gemtek.com.tw)  *
- *                          Copyright (C) 2005 Gemtek Corporation  *
- *******************************************************************/
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <asm/io.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/partitions.h>
-#include <linux/autoconf.h>
-#include <linux/sched.h>
-#include <linux/squashfs_fs.h>
-
-static struct mtd_info         *rdc3210_mtd;
-
-struct map_info rdc3210_map = 
-{
-       .name =         "RDC3210 Flash",
-       .size =         CONFIG_MTD_RDC3210_SIZE,
-       .bankwidth =    CONFIG_MTD_RDC3210_BUSWIDTH,
-};
-
-/* Dante: This is the default static mapping, however this is nothing but a hint. (Say dynamic mapping) */
-static struct mtd_partition rdc3210_parts[] = 
-{
-#if CONFIG_MTD_RDC3210_SIZE == 0x400000
-       { name: "linux",   offset:  0,          size: 0x003C0000 },     /* 3840 KB = (Kernel + ROMFS) = (768 KB + 3072 KB) */
-       { name: "romfs",   offset:  0x000C0000, size: 0x00300000 },     /* 3072 KB */
-       { name: "nvram",   offset:  0x003C0000, size: 0x00010000 },     /*   64 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-       { name: "factory", offset:  0x003D0000, size: 0x00010000 },     /*   64 KB */
-#endif
-       { name: "bootldr", offset:  0x003E0000, size: 0x00020000 },     /*  128 KB */
-#elif CONFIG_MTD_RDC3210_SIZE == 0x200000
-       { name: "linux",   offset:  0x00008000, size: 0x001E8000 },
-       { name: "romfs",   offset:  0x000C8000, size: 0x00128000 },
-       { name: "nvram",   offset:  0x00000000, size: 0x00008000 },     /*   64 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-#error Unsupported configuration!
-#endif
-       { name: "bootldr", offset:  0x001F0000, size: 0x00010000 },
-
-#elif CONFIG_MTD_RDC3210_SIZE == 0x800000
-        { name: "linux",   offset:  0,          size: 0x001F0000 },     /* 1984 KB */
-        { name: "config",  offset:  0x001F0000, size: 0x00010000 },     /*   64 KB */
-        { name: "romfs",   offset:  0x00200000, size: 0x005D0000 },     /* 5952 KB */
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-        { name: "factory", offset:  0x007D0000, size: 0x00010000 },     /*   64 KB */
-#endif
-        { name: "bootldr", offset:  0x007E0000, size: 0x00010000 },     /*   64 KB */
-#else
-#error Unsupported configuration!
-#endif
-};
-
-static __u32 crctab[257] = {
-       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
-       0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
-       0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-       0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
-       0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
-       0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-       0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
-       0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
-       0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-       0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
-       0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
-       0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-       0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
-       0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
-       0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-       0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
-       0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
-       0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-       0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
-       0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-       0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-       0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
-       0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
-       0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-       0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
-       0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
-       0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-       0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
-       0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
-       0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-       0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
-       0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
-       0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-       0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
-       0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
-       0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-       0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
-       0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
-       0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-       0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
-       0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
-       0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-       0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
-       0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
-       0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-       0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
-       0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
-       0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-       0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
-       0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
-       0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-       0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
-       0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
-       0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-       0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
-       0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
-       0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-       0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
-       0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
-       0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-       0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
-       0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
-       0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-       0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
-       0
-};
-
-static __u32 crc32(__u8 * buf, __u32 len)
-{
-       register int i;
-       __u32 sum;
-       register __u32 s0;
-       s0 = ~0;
-       for (i = 0; i < len; i++) {
-               s0 = (s0 >> 8) ^ crctab[(__u8) (s0 & 0xFF) ^ buf[i]];
-       }
-       sum = ~s0;
-       return sum;
-}
-
-static void erase_callback(struct erase_info *done)
-{
-       wait_queue_head_t *wait_q = (wait_queue_head_t *)done->priv;
-       wake_up(wait_q);
-}
-
-static int erase_write (struct mtd_info *mtd, unsigned long pos, 
-                       int len, const char *buf)
-{
-       struct erase_info erase;
-       DECLARE_WAITQUEUE(wait, current);
-       wait_queue_head_t wait_q;
-       size_t retlen;
-       int ret;
-
-       /*
-        * First, let's erase the flash block.
-        */
-
-       init_waitqueue_head(&wait_q);
-       erase.mtd = mtd;
-       erase.callback = erase_callback;
-       erase.addr = pos;
-       erase.len = len;
-       erase.priv = (u_long)&wait_q;
-
-       set_current_state(TASK_INTERRUPTIBLE);
-       add_wait_queue(&wait_q, &wait);
-
-       ret = mtd->erase(mtd, &erase);
-       if (ret) {
-               set_current_state(TASK_RUNNING);
-               remove_wait_queue(&wait_q, &wait);
-               printk (KERN_WARNING "erase of region [0x%lx, 0x%x] "
-                                    "on \"%s\" failed\n",
-                       pos, len, mtd->name);
-               return ret;
-       }
-
-       schedule();  /* Wait for erase to finish. */
-       remove_wait_queue(&wait_q, &wait);
-
-       /*
-        * Next, writhe data to flash.
-        */
-
-       ret = mtd->write (mtd, pos, len, &retlen, buf);
-       if (ret)
-               return ret;
-       if (retlen != len)
-               return -EIO;
-       return 0;
-}
-
-static int __init init_rdc3210_map(void)
-{
-       rdc3210_map.phys = -rdc3210_map.size;
-               printk(KERN_NOTICE "flash device: %x at %x\n", rdc3210_map.size, rdc3210_map.phys);
-
-#if CONFIG_MTD_RDC3210_SIZE == 0x800000
-       simple_map_init(&rdc3210_map);
-#endif
-               
-       rdc3210_map.map_priv_1 = (unsigned long)(rdc3210_map.virt = ioremap_nocache(rdc3210_map.phys, rdc3210_map.size));
-
-       if (!rdc3210_map.map_priv_1) 
-       {
-               printk("Failed to ioremap\n");
-               return -EIO;
-       }
-       rdc3210_mtd = do_map_probe("cfi_probe", &rdc3210_map);
-#ifdef CONFIG_MTD_RDC3210_STATIC_MAP   /* Dante: This is for fixed map */
-       if (rdc3210_mtd) 
-       {
-               rdc3210_mtd->owner = THIS_MODULE;
-               add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
-               return 0;
-       }
-#else  /* Dante: This is for dynamic mapping */
-
-#include "imghdr.h"
-
-       typedef struct {
-               u8      magic[4];
-               u32     kernelsz, ramdisksz;
-               u8      magic2[4];
-               u32     sz2;
-       }sc_imghdr_t;
-
-       if (rdc3210_mtd) 
-       {       // Dante
-               sc_imghdr_t     *hdr2= (sc_imghdr_t *)(rdc3210_map.map_priv_1);
-               gt_imghdr_t     *hdr = (gt_imghdr_t *)hdr2
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-                       , *ptmp
-#endif
-                       ;
-               int     len, tmp, tmp2, tmp3, tmp4, hdr_type = 0;
-               
-               if(!memcmp(hdr->magic, GTIMG_MAGIC, 4))
-               {
-                       hdr_type = 1;
-                       tmp = hdr->kernelsz + sizeof(gt_imghdr_t);
-                       tmp2 = rdc3210_mtd->erasesize;
-                       tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
-                       tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
-               }
-#ifndef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-               else if (!memcmp(hdr2->magic, "CSYS", 4))
-               {
-                       hdr_type = 2;
-                       tmp = hdr2->ramdisksz + hdr2->kernelsz + sizeof(sc_imghdr_t);
-                       tmp2 = rdc3210_mtd->erasesize;
-                       tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
-                       tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
-               }
-#endif
-               else
-               {
-                       iounmap((void *)rdc3210_map.map_priv_1);
-                       rdc3210_map.map_priv_1 = 0L;
-                       rdc3210_map.virt = NULL;
-                       printk("Invalid MAGIC for Firmware Image!!!\n");
-                       return -EIO;
-               }
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-               tmp = (tmp3 == tmp4) ? tmp4 + tmp2 : tmp4;
-               if ((ptmp = (gt_imghdr_t *)vmalloc(tmp)) == NULL)
-               {
-                       iounmap((void *)rdc3210_map.map_priv_1);
-                       rdc3210_map.map_priv_1 = 0L;
-                       rdc3210_map.virt = NULL;
-                       printk("Can't allocate 0x%08x for flash-reading buffer!\n", tmp);
-                       return -ENOMEM;
-               }
-               if (rdc3210_mtd->read(rdc3210_mtd, 0, tmp, &len, (__u8 *)ptmp) || len != tmp)
-               {
-                       vfree(ptmp);
-                       iounmap((void *)rdc3210_map.map_priv_1);
-                       rdc3210_map.map_priv_1 = 0L;
-                       rdc3210_map.virt = NULL;
-                       printk("Can't read that much flash! Read 0x%08x of it.\n", len);
-                       return -EIO;
-               }
-#endif
-#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
-               /* 1. Adjust Redboot */
-               tmp = rdc3210_mtd->size - rdc3210_parts[4].size;
-               rdc3210_parts[4].offset = tmp - (tmp % tmp2);
-               rdc3210_parts[4].size   = rdc3210_mtd->size - rdc3210_parts[4].offset;
-               
-               /* 2. Adjust Factory Default */
-               tmp -= rdc3210_parts[3].size;
-               rdc3210_parts[3].offset = tmp - (tmp % tmp2);
-               rdc3210_parts[3].size   = rdc3210_parts[4].offset - rdc3210_parts[3].offset;
-#else
-               /* 1. Adjust Redboot */
-               tmp = rdc3210_mtd->size - rdc3210_parts[3].size;
-               rdc3210_parts[3].offset = tmp - (tmp % tmp2);
-               rdc3210_parts[3].size   = rdc3210_mtd->size - rdc3210_parts[3].offset;
-#endif
-               if (hdr_type == 1) {
-               /* 3. Adjust NVRAM */
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-               if (*(__u32 *)(((unsigned char *)ptmp)+tmp3) == SQUASHFS_MAGIC)
-               {
-                       len = 1;
-                       tmp4 = tmp3;
-                       tmp = hdr->imagesz;
-               rdc3210_parts[2].name   = "rootfs_data";
-               rdc3210_parts[2].offset = rdc3210_parts[0].offset + (((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2);
-               }
-               else
-#else
-                       tmp4 = tmp3;
-#endif
-               {
-                       len = 0;
-               tmp -= rdc3210_parts[2].size;
-               rdc3210_parts[2].offset = tmp - (tmp % tmp2);
-               }
-               rdc3210_parts[2].size   = rdc3210_parts[3].offset - rdc3210_parts[2].offset;
-               }
-               else if (hdr_type == 2)
-               {
-                       len = 0;
-                       tmp4 = tmp3;
-               }
-               
-               /* 4. Adjust Linux (Kernel + ROMFS) */
-               rdc3210_parts[0].size   = rdc3210_parts[len + hdr_type + 1].offset - rdc3210_parts[0].offset;
-
-               /* 5. Adjust ROMFS */
-               rdc3210_parts[1].offset = rdc3210_parts[0].offset + tmp4;
-               rdc3210_parts[1].size   = rdc3210_parts[hdr_type + 1].offset - rdc3210_parts[1].offset;
-#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
-               if (!(hdr->reserved || len))
-               {
-                       __u8    buf[1024];
-                       ptmp->reserved = hdr->imagesz;
-                       ptmp->imagesz  = tmp4;
-                       ptmp->checksum = ptmp->fastcksum = 0;
-                       memcpy(buf, ptmp, 0x100);
-                       memcpy(buf + 0x100, ((__u8 *)ptmp) + ((tmp4 >> 1) - ((tmp4 & 0x6) >> 1)), 0x100);
-                       memcpy(buf + 0x200, ((__u8 *)ptmp) + (tmp4 - 0x200), 0x200);
-                       ptmp->fastcksum = crc32(buf, sizeof(buf));
-                       ptmp->checksum = crc32((__u8 *)ptmp, tmp4);
-                       if (rdc3210_mtd->unlock) rdc3210_mtd->unlock(rdc3210_mtd, 0, tmp2);
-                       if ((len = erase_write(rdc3210_mtd, 0, tmp2, (char *)ptmp)))
-                       {
-                               vfree(ptmp);
-                               iounmap((void *)rdc3210_map.map_priv_1);
-                               rdc3210_map.map_priv_1 = 0L;
-                               rdc3210_map.virt = NULL;
-                               printk("Couldn't erase! Got %d.\n", len);
-                               return len;
-                       }
-                       if (rdc3210_mtd->sync) rdc3210_mtd->sync(rdc3210_mtd);
-               }
-               vfree(ptmp);
-#endif
-               rdc3210_mtd->owner = THIS_MODULE;
-               add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
-               return 0;
-       }
-#endif
-       iounmap((void *)rdc3210_map.map_priv_1);
-       rdc3210_map.map_priv_1 = 0L;
-       rdc3210_map.virt = NULL;
-       return -ENXIO;
-}
-
-static void __exit cleanup_rdc3210_map(void)
-{
-       if (rdc3210_mtd) 
-       {
-               del_mtd_partitions(rdc3210_mtd);
-               map_destroy(rdc3210_mtd);
-       }
-       
-       if (rdc3210_map.map_priv_1) 
-       {
-               iounmap((void *)rdc3210_map.map_priv_1);
-               rdc3210_map.map_priv_1 = 0L;
-               rdc3210_map.virt = NULL;
-       }
-}
-
-module_init(init_rdc3210_map);
-module_exit(cleanup_rdc3210_map);
diff --git a/target/linux/rdc/files-2.6.24/drivers/net/r6040.c b/target/linux/rdc/files-2.6.24/drivers/net/r6040.c
deleted file mode 100644 (file)
index 0096006..0000000
+++ /dev/null
@@ -1,1412 +0,0 @@
-/*
- * RDC R6040 Fast Ethernet MAC support
- *
- * Copyright (C) 2004 Sten Wang <sten.wang@rdc.com.tw>
- * Copyright (C) 2007
- *     Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
- *     Florian Fainelli <florian@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
-*/
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/version.h>
-#include <linux/moduleparam.h>
-#include <linux/string.h>
-#include <linux/timer.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/crc32.h>
-#include <linux/spinlock.h>
-#include <linux/bitops.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-#include <linux/uaccess.h>
-
-#include <asm/processor.h>
-
-#define DRV_NAME       "r6040"
-#define DRV_VERSION    "0.19"
-#define DRV_RELDATE    "16Jun2008"
-
-/* define bits of a debug mask */
-#define DBG_PHY           0x00000001 /*!< show PHY read/write */
-#define DBG_FREE_BUFS     0x00000002 /*!< show calls to r6040_free_*bufs */
-#define DBG_RING          0x00000004 /*!< debug init./freeing of descr rings */
-#define DBG_RX_BUF        0x00000008 /*!< show alloc. of new rx buf (in IRQ context !) */
-#define DBG_TX_BUF        0x00000010 /*!< show arrival of new tx buf */
-#define DBG_TX_DONE       0x00000020 /*!< debug TX done */
-#define DBG_RX_DESCR      0x00000040 /*!< debug rx descr to be processed */
-#define DBG_RX_DATA       0x00000080 /*!< show some user data of incoming packet */
-#define DBG_EXIT          0x00000100 /*!< show exit code calls */
-#define DBG_INIT          0x00000200 /*!< show init. code calls */
-#define DBG_TX_RING_DUMP  0x00000400 /*!< dump the tx ring after creation */
-#define DBG_RX_RING_DUMP  0x00000800 /*!< dump the rx ring after creation */
-#define DBG_TX_DESCR      0x00001000 /*!< dump the setting of a descr for tx */
-#define DBG_TX_DATA       0x00002000 /*!< dump some tx data */
-#define DBG_IRQ           0x00004000 /*!< print inside the irq handler */
-#define DBG_POLL          0x00008000 /*!< dump info on poll procedure */
-#define DBG_MAC_ADDR      0x00010000 /*!< debug mac address setting */
-#define DBG_OPEN          0x00020000 /*!< debug open proc. */
-
-static int debug = 0;
-module_param(debug, int, 0);
-MODULE_PARM_DESC(debug, "debug mask (-1 for all)");
-
-/* define which debugs are left in the code during compilation */
-#define DEBUG (-1) /* all debugs */
-
-#define dbg(l, f, ...)                         \
-  do { \
-    if ((DEBUG & l) && (debug & l)) { \
-      printk(KERN_INFO DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__); \
-    } \
-  } while (0)
-
-#define err(f, ...) printk(KERN_WARNING DRV_NAME " %s: " f, __FUNCTION__, ## __VA_ARGS__)
-
-/* PHY CHIP Address */
-#define PHY1_ADDR      1       /* For MAC1 */
-#define PHY2_ADDR      3       /* For MAC2 */
-#define PHY_MODE       0x3100  /* PHY CHIP Register 0 */
-#define PHY_CAP                0x01E1  /* PHY CHIP Register 4 */
-
-/* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT     (6000 * HZ / 1000)
-
-/* RDC MAC I/O Size */
-#define R6040_IO_SIZE  256
-
-/* MAX RDC MAC */
-#define MAX_MAC                2
-
-/* MAC registers */
-#define MCR0           0x00    /* Control register 0 */
-#define MCR1           0x04    /* Control register 1 */
-#define  MAC_RST       0x0001  /* Reset the MAC */
-#define MBCR           0x08    /* Bus control */
-#define MT_ICR         0x0C    /* TX interrupt control */
-#define MR_ICR         0x10    /* RX interrupt control */
-#define MTPR           0x14    /* TX poll command register */
-#define MR_BSR         0x18    /* RX buffer size */
-#define MR_DCR         0x1A    /* RX descriptor control */
-#define MLSR           0x1C    /* Last status */
-#define MMDIO          0x20    /* MDIO control register */
-#define  MDIO_WRITE    0x4000  /* MDIO write */
-#define  MDIO_READ     0x2000  /* MDIO read */
-#define MMRD           0x24    /* MDIO read data register */
-#define MMWD           0x28    /* MDIO write data register */
-#define MTD_SA0                0x2C    /* TX descriptor start address 0 */
-#define MTD_SA1                0x30    /* TX descriptor start address 1 */
-#define MRD_SA0                0x34    /* RX descriptor start address 0 */
-#define MRD_SA1                0x38    /* RX descriptor start address 1 */
-#define MISR           0x3C    /* Status register */
-#define MIER           0x40    /* INT enable register */
-#define  MSK_INT       0x0000  /* Mask off interrupts */
-#define  RX_FINISH      0x0001  /* rx finished irq */
-#define  RX_NO_DESC     0x0002  /* rx no descr. avail. irq */
-#define  RX_FIFO_FULL   0x0004  /* rx fifo full irq */
-#define  RX_EARLY       0x0008  /* rx early irq */
-#define  TX_FINISH      0x0010  /* tx finished irq */
-#define  TX_EARLY       0x0080  /* tx early irq */
-#define  EVENT_OVRFL    0x0100  /* event counter overflow irq */
-#define  LINK_CHANGED   0x0200  /* PHY link changed irq */
-
-#define ME_CISR                0x44    /* Event counter INT status */
-#define ME_CIER                0x48    /* Event counter INT enable  */
-#define MR_CNT         0x50    /* Successfully received packet counter */
-#define ME_CNT0                0x52    /* Event counter 0 */
-#define ME_CNT1                0x54    /* Event counter 1 */
-#define ME_CNT2                0x56    /* Event counter 2 */
-#define ME_CNT3                0x58    /* Event counter 3 */
-#define MT_CNT         0x5A    /* Successfully transmit packet counter */
-#define ME_CNT4                0x5C    /* Event counter 4 */
-#define MP_CNT         0x5E    /* Pause frame counter register */
-#define MAR0           0x60    /* Hash table 0 */
-#define MAR1           0x62    /* Hash table 1 */
-#define MAR2           0x64    /* Hash table 2 */
-#define MAR3           0x66    /* Hash table 3 */
-#define MID_0L         0x68    /* Multicast address MID0 Low */
-#define MID_0M         0x6A    /* Multicast address MID0 Medium */
-#define MID_0H         0x6C    /* Multicast address MID0 High */
-#define MID_1L         0x70    /* MID1 Low */
-#define MID_1M         0x72    /* MID1 Medium */
-#define MID_1H         0x74    /* MID1 High */
-#define MID_2L         0x78    /* MID2 Low */
-#define MID_2M         0x7A    /* MID2 Medium */
-#define MID_2H         0x7C    /* MID2 High */
-#define MID_3L         0x80    /* MID3 Low */
-#define MID_3M         0x82    /* MID3 Medium */
-#define MID_3H         0x84    /* MID3 High */
-#define PHY_CC         0x88    /* PHY status change configuration register */
-#define PHY_ST         0x8A    /* PHY status register */
-#define MAC_SM         0xAC    /* MAC status machine */
-#define MAC_ID         0xBE    /* Identifier register */
-
-#define TX_DCNT                0x80    /* TX descriptor count */
-#define RX_DCNT                0x80    /* RX descriptor count */
-#define MAX_BUF_SIZE   0x600
-#define RX_DESC_SIZE   (RX_DCNT * sizeof(struct r6040_descriptor))
-#define TX_DESC_SIZE   (TX_DCNT * sizeof(struct r6040_descriptor))
-#define MBCR_DEFAULT   0x012A  /* MAC Bus Control Register: 
-                                  - wait 1 host clock until SDRAM bus request
-                                    becomes high priority
-                                  - RX FIFO: 32 byte
-                                  - TX FIFO: 64 byte
-                                  - FIFO transfer length: 16 byte */
-#define MCAST_MAX      4       /* Max number multicast addresses to filter */
-
-/* PHY settings */
-#define ICPLUS_PHY_ID  0x0243
-
-MODULE_AUTHOR("Sten Wang <sten.wang@rdc.com.tw>,"
-       "Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>,"
-       "Florian Fainelli <florian@openwrt.org>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver");
-
-/*! which rx interrupts do we allow */
-#define RX_INTS                        (RX_FIFO_FULL|RX_NO_DESC|RX_FINISH)
-/*! which tx interrupts do we allow */
-#define TX_INTS                        (TX_FINISH)
-#define INT_MASK                 (RX_INTS | TX_INTS)
-
-struct r6040_descriptor {
-       u16     status, len;            /* 0-3 */
-       __le32  buf;                    /* 4-7 */
-       __le32  ndesc;                  /* 8-B */
-       u32     rev1;                   /* C-F */
-       char    *vbufp;                 /* 10-13 */
-       struct r6040_descriptor *vndescp;       /* 14-17 */
-       struct sk_buff *skb_ptr;        /* 18-1B */
-       u32     rev2;                   /* 1C-1F */
-} __attribute__((aligned(32)));
-
-/*! defines for the status field in the r6040_descriptor */
-#define DESC_STATUS_OWNER_MAC       (1<<15) /*!< if set the MAC is the owner of this descriptor */
-#define DESC_STATUS_RX_OK           (1<<14) /*!< rx was successful */
-#define DESC_STATUS_RX_ERR          (1<<11) /*!< rx PHY error */
-#define DESC_STATUS_RX_ERR_DRIBBLE  (1<<10) /*!< rx dribble packet */
-#define DESC_STATUS_RX_ERR_BUFLEN   (1<< 9) /*!< rx length exceeded buffer size */
-#define DESC_STATUS_RX_ERR_LONG     (1<< 8) /*!< rx length > maximum packet length */
-#define DESC_STATUS_RX_ERR_RUNT     (1<< 7) /*!< rx: packet length < 64 byte */
-#define DESC_STATUS_RX_ERR_CRC      (1<< 6) /*!< rx: crc error */
-#define DESC_STATUS_RX_BROADCAST    (1<< 5) /*!< rx: broadcast (no error) */
-#define DESC_STATUS_RX_MULTICAST    (1<< 4) /*!< rx: multicast (no error) */
-#define DESC_STATUS_RX_MCH_HIT      (1<< 3) /*!< rx: multicast hit in hash table (no error) */
-#define DESC_STATUS_RX_MIDH_HIT     (1<< 2) /*!< rx: MID table hit (no error) */
-#define DESC_STATUS_RX_IDX_MID_MASK 3       /*!< rx: mask for the index of matched MIDx */
-
-struct r6040_private {
-       spinlock_t lock;                /* driver lock */
-       struct timer_list timer;
-       struct pci_dev *pdev;
-       struct r6040_descriptor *rx_insert_ptr;
-       struct r6040_descriptor *rx_remove_ptr;
-       struct r6040_descriptor *tx_insert_ptr;
-       struct r6040_descriptor *tx_remove_ptr;
-       struct r6040_descriptor *rx_ring;
-       struct r6040_descriptor *tx_ring;
-       dma_addr_t rx_ring_dma;
-       dma_addr_t tx_ring_dma;
-       u16     tx_free_desc, phy_addr, phy_mode;
-       u16     mcr0, mcr1;
-       u16     switch_sig;
-       struct net_device *dev;
-       struct mii_if_info mii_if;
-       struct napi_struct napi;
-       void __iomem *base;
-};
-
-static char *parent = "wlan0";
-module_param(parent, charp, 0444);
-MODULE_PARM_DESC(parent, "Parent network device name to get the MAC address from");
-
-static u8 mac_base[ETH_ALEN] = {0,0x50,0xfc,2,3,4};
-module_param_array(mac_base, byte, NULL, 0444);
-MODULE_PARM_DESC(mac_base, "Starting MAC address");
-
-static int reverse = 1;
-module_param(reverse, invbool, 0444);
-MODULE_PARM_DESC(reverse, "Reverse card indices");
-
-static char version[] __devinitdata = DRV_NAME
-       ": RDC R6040 NAPI net driver,"
-       "version "DRV_VERSION " (" DRV_RELDATE ")";
-
-static int phy_table[] = { PHY1_ADDR, PHY2_ADDR };
-
-/* forward declarations */
-void r6040_multicast_list(struct net_device *dev);
-
-/* jal2: comment out to get more symbols for debugging */
-//#define STATIC static
-#define STATIC
-
-#if DEBUG
-/*! hexdump an memory area into a string. delim is taken as the delimiter between two bytes.
-    It is omitted if delim == '\0' */
-STATIC char *hex2str(void *addr, char *buf, int nr_bytes, int delim)
-{
-       unsigned char *src = addr;
-       char *outb = buf;
-
-#define BIN2HEXDIGIT(x) ((x) < 10 ? '0'+(x) : 'A'-10+(x))
-
-       while (nr_bytes > 0) {
-               *outb++ = BIN2HEXDIGIT(*src>>4);
-               *outb++ = BIN2HEXDIGIT(*src&0xf);
-               if (delim)
-                       *outb++ = delim;
-               nr_bytes--;
-               src++;
-       }
-
-       if (delim)
-               outb--;
-       *outb = '\0';
-       return buf;
-}
-
-#endif /* #if DEBUG */
-
-/* Read a word data from PHY Chip */
-STATIC int phy_read(void __iomem *ioaddr, int phy_addr, int reg)
-{
-       int limit = 2048;
-       u16 cmd;
-       int rc;
-
-       iowrite16(MDIO_READ + reg + (phy_addr << 8), ioaddr + MMDIO);
-       /* Wait for the read bit to be cleared */
-       while (limit--) {
-               cmd = ioread16(ioaddr + MMDIO);
-               if (!(cmd & MDIO_READ))
-                       break;
-       }
-
-       if (limit <= 0)
-               err("phy addr x%x reg x%x timed out\n",
-                   phy_addr, reg);
-
-       rc=ioread16(ioaddr + MMRD);
-
-       dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, rc);
-       return rc;
-}
-
-/* Write a word data from PHY Chip */
-STATIC void phy_write(void __iomem *ioaddr, int phy_addr, int reg, u16 val)
-{
-       int limit = 2048;
-       u16 cmd;
-
-       dbg(DBG_PHY, "phy addr x%x reg x%x val x%x\n", phy_addr, reg, val);
-
-       iowrite16(val, ioaddr + MMWD);
-       /* Write the command to the MDIO bus */
-       iowrite16(MDIO_WRITE + reg + (phy_addr << 8), ioaddr + MMDIO);
-       /* Wait for the write bit to be cleared */
-       while (limit--) {
-               cmd = ioread16(ioaddr + MMDIO);
-               if (!(cmd & MDIO_WRITE))
-                       break;
-       }
-       if (limit <= 0)
-               err("phy addr x%x reg x%x val x%x timed out\n",
-                   phy_addr, reg, val);
-}
-
-STATIC int mdio_read(struct net_device *dev, int mii_id, int reg)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-
-       return (phy_read(ioaddr, lp->phy_addr, reg));
-}
-
-STATIC void mdio_write(struct net_device *dev, int mii_id, int reg, int val)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-
-       phy_write(ioaddr, lp->phy_addr, reg, val);
-}
-
-void r6040_free_txbufs(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       int i;
-
-       dbg(DBG_FREE_BUFS, "ENTER\n");
-       for (i = 0; i < TX_DCNT; i++) {
-               if (lp->tx_insert_ptr->skb_ptr) {
-                       pci_unmap_single(lp->pdev,
-                               le32_to_cpu(lp->tx_insert_ptr->buf),
-                               MAX_BUF_SIZE, PCI_DMA_TODEVICE);
-                       dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
-                       lp->tx_insert_ptr->skb_ptr = NULL;
-               }
-               lp->tx_insert_ptr = lp->tx_insert_ptr->vndescp;
-       }
-       dbg(DBG_FREE_BUFS, "EXIT\n");
-}
-
-/*! unmap and free all rx skb */
-void r6040_free_rxbufs(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       int i;
-
-       dbg(DBG_FREE_BUFS, "ENTER\n");
-       for (i = 0; i < RX_DCNT; i++) {
-               if (lp->rx_insert_ptr->skb_ptr) {
-                       pci_unmap_single(lp->pdev,
-                               le32_to_cpu(lp->rx_insert_ptr->buf),
-                               MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-                       dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
-                       lp->rx_insert_ptr->skb_ptr = NULL;
-               }
-               lp->rx_insert_ptr = lp->rx_insert_ptr->vndescp;
-       }
-       dbg(DBG_FREE_BUFS, "EXIT\n");
-
-}
-
-void r6040_init_ring_desc(struct r6040_descriptor *desc_ring,
-                                dma_addr_t desc_dma, int size)
-{
-       struct r6040_descriptor *desc = desc_ring;
-       dma_addr_t mapping = desc_dma;
-
-       dbg(DBG_RING, "desc_ring %p desc_dma %08x size x%x\n",
-           desc_ring, desc_dma, size);
-
-       
-       while (size-- > 0) {
-               mapping += sizeof(*desc);
-               memset(desc, 0, sizeof(*desc));
-               desc->ndesc = cpu_to_le32(mapping);
-               desc->vndescp = desc + 1;
-               desc++;
-       }
-
-       /* last descriptor points to first one to close the descriptor ring */
-       desc--;
-       desc->ndesc = cpu_to_le32(desc_dma);
-       desc->vndescp = desc_ring;
-}
-
-#if (DEBUG & DBG_TX_RING_DUMP)
-/*! dump the tx ring to syslog */
-STATIC void
-dump_tx_ring(struct r6040_private *lp)
-{
-       int i;
-       struct r6040_descriptor *ptr;
-
-       printk(KERN_INFO "%s: nr_desc x%x tx_ring %p tx_ring_dma %08x "
-              "tx_insert %p tx_remove %p\n",
-              DRV_NAME, TX_DCNT, lp->tx_ring, lp->tx_ring_dma,
-              lp->tx_insert_ptr, lp->tx_remove_ptr);
-
-       if (lp->tx_ring) {
-               for(i=0, ptr=lp->tx_ring; i < TX_DCNT; i++, ptr++) {
-                       printk(KERN_INFO "%s: %d. descr: status x%x len x%x "
-                              "ndesc %08x vbufp %p vndescp %p skb_ptr %p\n", 
-                              DRV_NAME, i, ptr->status, ptr->len,
-                              ptr->ndesc, ptr->vbufp, ptr->vndescp, ptr->skb_ptr);
-               }
-       }
-}
-#endif /* #if (DEBUG & DBG_TX_RING_DUMP) */
-
-void r6040_init_txbufs(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-
-       lp->tx_free_desc = TX_DCNT;
-
-       lp->tx_remove_ptr = lp->tx_insert_ptr = lp->tx_ring;
-       r6040_init_ring_desc(lp->tx_ring, lp->tx_ring_dma, TX_DCNT);
-
-#if (DEBUG & DBG_TX_RING_DUMP)
-       if (debug & DBG_TX_RING_DUMP) {
-               dump_tx_ring(lp);
-       }
-#endif
-}
-
-#if (DEBUG & DBG_RX_RING_DUMP)
-/*! dump the rx ring to syslog */
-STATIC void
-dump_rx_ring(struct r6040_private *lp)
-{
-       int i;
-       struct r6040_descriptor *ptr;
-
-       printk(KERN_INFO "%s: nr_desc x%x rx_ring %p rx_ring_dma %08x "
-              "rx_insert %p rx_remove %p\n",
-              DRV_NAME, RX_DCNT, lp->rx_ring, lp->rx_ring_dma,
-              lp->rx_insert_ptr, lp->rx_remove_ptr);
-
-       if (lp->rx_ring) {
-               for(i=0, ptr=lp->rx_ring; i < RX_DCNT; i++, ptr++) {
-                       printk(KERN_INFO "%s: %d. descr: status x%x len x%x "
-                              "ndesc %08x vbufp %p vndescp %p skb_ptr %p\n", 
-                              DRV_NAME, i, ptr->status, ptr->len,
-                              ptr->ndesc, ptr->vbufp, ptr->vndescp, ptr->skb_ptr);
-               }
-       }
-}
-#endif /* #if (DEBUG & DBG_TX_RING_DUMP) */
-
-int r6040_alloc_rxbufs(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       struct r6040_descriptor *desc;
-       struct sk_buff *skb;
-       int rc;
-
-       lp->rx_remove_ptr = lp->rx_insert_ptr = lp->rx_ring;
-       r6040_init_ring_desc(lp->rx_ring, lp->rx_ring_dma, RX_DCNT);
-
-       /* alloc skbs for the rx descriptors */
-       desc = lp->rx_ring;
-       do {
-               if (!(skb=netdev_alloc_skb(dev, MAX_BUF_SIZE))) {
-                       err("failed to alloc skb for rx\n");
-                       rc = -ENOMEM;
-                       goto err_exit;
-               }
-               desc->skb_ptr = skb;
-               desc->buf = cpu_to_le32(pci_map_single(lp->pdev,
-                                                      desc->skb_ptr->data,
-                                                      MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
-               desc->status = DESC_STATUS_OWNER_MAC;
-               desc = desc->vndescp;
-       } while (desc != lp->rx_ring);
-
-#if (DEBUG & DBG_RX_RING_DUMP)
-       if (debug & DBG_RX_RING_DUMP) {
-               dump_rx_ring(lp);
-       }
-#endif
-
-       return 0;
-
-err_exit:
-       /* dealloc all previously allocated skb */
-       r6040_free_rxbufs(dev);
-       return rc;
-}
-
-/*! reset MAC and set all registers */
-void r6040_init_mac_regs(struct r6040_private *lp)
-{
-       void __iomem *ioaddr = lp->base;
-       int limit;
-       char obuf[3*ETH_ALEN] __attribute__ ((unused));
-
-       /* Mask Off Interrupt */
-       iowrite16(MSK_INT, ioaddr + MIER);
-
-       /* reset MAC */
-       iowrite16(MAC_RST, ioaddr + MCR1);
-       udelay(100);
-       limit=2048;
-       while ((ioread16(ioaddr + MCR1) & MAC_RST) && limit-- > 0);
-
-       /* Reset internal state machine */
-       iowrite16(2, ioaddr + MAC_SM);
-       iowrite16(0, ioaddr + MAC_SM);
-       udelay(5000);
-
-       /* Restore MAC Addresses */
-       r6040_multicast_list(lp->dev);
-
-       /* TODO: restore multcast and hash table */
-
-       /* MAC Bus Control Register */
-       iowrite16(MBCR_DEFAULT, ioaddr + MBCR);
-
-       /* Buffer Size Register */
-       iowrite16(MAX_BUF_SIZE, ioaddr + MR_BSR);
-
-       /* write tx ring start address */
-       iowrite16(lp->tx_ring_dma, ioaddr + MTD_SA0);
-       iowrite16(lp->tx_ring_dma >> 16, ioaddr + MTD_SA1);
-
-       /* write rx ring start address */
-       iowrite16(lp->rx_ring_dma, ioaddr + MRD_SA0);
-       iowrite16(lp->rx_ring_dma >> 16, ioaddr + MRD_SA1);
-
-       /* set interrupt waiting time and packet numbers */
-       iowrite16(0, ioaddr + MT_ICR);
-       iowrite16(0, ioaddr + MR_ICR);
-
-       /* enable interrupts */
-       iowrite16(INT_MASK, ioaddr + MIER);
-
-       /* enable tx and rx */
-       iowrite16(lp->mcr0 | 0x0002, ioaddr);
-
-       /* let TX poll the descriptors - we may got called by r6040_tx_timeout which has left
-          some unsent tx buffers */
-       iowrite16(0x01, ioaddr + MTPR);
-}
-
-void r6040_tx_timeout(struct net_device *dev)
-{
-       struct r6040_private *priv = netdev_priv(dev);
-       void __iomem *ioaddr = priv->base;
-
-       /* we read MISR, which clears on read (i.e. we may loose an RX interupt,
-          but this is an error anyhow ... */
-       printk(KERN_WARNING "%s: transmit timed out, int enable %4.4x "
-              "status %4.4x, PHY status %4.4x\n",
-              dev->name, ioread16(ioaddr + MIER),
-              ioread16(ioaddr + MISR),
-              mdio_read(dev, priv->mii_if.phy_id, MII_BMSR));
-
-       dev->stats.tx_errors++;
-
-       /* Reset MAC and re-init all registers */
-       r6040_init_mac_regs(priv);
-}
-
-struct net_device_stats *r6040_get_stats(struct net_device *dev)
-{
-       struct r6040_private *priv = netdev_priv(dev);
-       void __iomem *ioaddr = priv->base;
-       unsigned long flags;
-
-       spin_lock_irqsave(&priv->lock, flags);
-       dev->stats.rx_crc_errors += ioread8(ioaddr + ME_CNT1);
-       dev->stats.multicast += ioread8(ioaddr + ME_CNT0);
-       spin_unlock_irqrestore(&priv->lock, flags);
-
-       return &dev->stats;
-}
-
-/* Stop RDC MAC and Free the allocated resource */
-void r6040_down(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       struct pci_dev *pdev = lp->pdev;
-       int limit = 2048;
-
-       dbg(DBG_EXIT, "ENTER\n");
-
-       /* Stop MAC */
-       iowrite16(MSK_INT, ioaddr + MIER);      /* Mask Off Interrupt */
-       iowrite16(MAC_RST, ioaddr + MCR1);      /* Reset RDC MAC */
-       udelay(100);
-       while ((ioread16(ioaddr+MCR1) & 1) && limit-- > 0);
-
-       if (limit <= 0)
-               err("timeout while waiting for reset done.\n");
-
-       free_irq(dev->irq, dev);
-
-       /* Free RX buffer */
-       r6040_free_rxbufs(dev);
-
-       /* Free TX buffer */
-       r6040_free_txbufs(dev);
-
-       /* Free Descriptor memory */
-       pci_free_consistent(pdev, RX_DESC_SIZE, lp->rx_ring, lp->rx_ring_dma);
-       pci_free_consistent(pdev, TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma);
-
-       dbg(DBG_EXIT, "EXIT\n");
-}
-
-int r6040_close(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-
-       dbg(DBG_EXIT, "ENTER\n");
-
-       /* deleted timer */
-       del_timer_sync(&lp->timer);
-       spin_lock_irq(&lp->lock);
-       napi_disable(&lp->napi);
-       netif_stop_queue(dev);
-       r6040_down(dev);
-       spin_unlock_irq(&lp->lock);
-
-       dbg(DBG_EXIT, "EXIT\n");
-       return 0;
-}
-
-/* Status of PHY CHIP. Returns 0x8000 for full duplex, 0 for half duplex */
-STATIC int phy_mode_chk(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       int phy_dat;
-
-       /* PHY Link Status Check */
-       phy_dat = phy_read(ioaddr, lp->phy_addr, 1);
-       if (!(phy_dat & 0x4))
-               phy_dat = 0x8000;       /* Link Failed, full duplex */
-
-       /* PHY Chip Auto-Negotiation Status */
-       phy_dat = phy_read(ioaddr, lp->phy_addr, 1);
-       if (phy_dat & 0x0020) {
-               /* Auto Negotiation Mode */
-               phy_dat = phy_read(ioaddr, lp->phy_addr, 5);
-               phy_dat &= phy_read(ioaddr, lp->phy_addr, 4);
-               if (phy_dat & 0x140)
-                       /* Force full duplex */
-                       phy_dat = 0x8000;
-               else
-                       phy_dat = 0;
-       } else {
-               /* Force Mode */
-               phy_dat = phy_read(ioaddr, lp->phy_addr, 0);
-               if (phy_dat & 0x100)
-                       phy_dat = 0x8000;
-               else
-                       phy_dat = 0x0000;
-       }
-
-       dbg(DBG_PHY, "RETURN x%x\n", phy_dat);
-       return phy_dat;
-};
-
-void r6040_set_carrier(struct mii_if_info *mii)
-{
-       if (phy_mode_chk(mii->dev)) {
-               /* autoneg is off: Link is always assumed to be up */
-               if (!netif_carrier_ok(mii->dev))
-                       netif_carrier_on(mii->dev);
-       } else
-               phy_mode_chk(mii->dev);
-}
-
-int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       struct mii_ioctl_data *data = if_mii(rq);
-       int rc;
-
-       if (!netif_running(dev))
-               return -EINVAL;
-       spin_lock_irq(&lp->lock);
-       rc = generic_mii_ioctl(&lp->mii_if, data, cmd, NULL);
-       spin_unlock_irq(&lp->lock);
-       r6040_set_carrier(&lp->mii_if);
-       return rc;
-}
-
-int r6040_rx(struct net_device *dev, int limit)
-{
-       struct r6040_private *priv = netdev_priv(dev);
-       int count=0;
-       struct r6040_descriptor *descptr = priv->rx_remove_ptr;
-       struct sk_buff *skb_ptr, *new_skb;
-       char obuf[2*32+1] __attribute__ ((unused)); /* for debugging */
-
-       while (count < limit && !(descptr->status & DESC_STATUS_OWNER_MAC)) {
-               /* limit not reached and the descriptor belongs to the CPU */
-
-               dbg(DBG_RX_DESCR, "descptr %p status x%x data len x%x\n",
-                   descptr, descptr->status, descptr->len);
-               
-               /* Check for errors */
-               if (descptr->status & DESC_STATUS_RX_ERR) {
-               
-                       dev->stats.rx_errors++;
-                       
-                       if (descptr->status & (DESC_STATUS_RX_ERR_DRIBBLE|
-                                              DESC_STATUS_RX_ERR_BUFLEN|
-                                              DESC_STATUS_RX_ERR_LONG|
-                                              DESC_STATUS_RX_ERR_RUNT)) {
-                               /* packet too long or too short*/
-                               dev->stats.rx_length_errors++;
-                       }
-
-                       if (descptr->status & DESC_STATUS_RX_ERR_CRC) {
-                               dev->stats.rx_crc_errors++;
-                       }
-                       goto next_descr;
-               }
-               
-               /* successful received packet */
-               
-               /* first try to allocate new skb. If this fails
-                  we drop the packet and leave the old skb there.*/
-               new_skb = netdev_alloc_skb(dev, MAX_BUF_SIZE);
-               if (!new_skb) {
-                       dev->stats.rx_dropped++;
-                       goto next_descr;
-               }
-               skb_ptr = descptr->skb_ptr;
-               skb_ptr->dev = priv->dev;
-               /* Do not count the CRC */
-               skb_put(skb_ptr, descptr->len - 4);
-               pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
-                                MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-               skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
-
-               dbg(DBG_RX_DATA, "rx len x%x: %s...\n",
-                   descptr->len, 
-                   hex2str(skb_ptr->data, obuf, sizeof(obuf)/2, '\0'));
-
-               /* Send to upper layer */
-               netif_receive_skb(skb_ptr);
-               dev->last_rx = jiffies;
-               dev->stats.rx_packets++;
-               dev->stats.rx_bytes += (descptr->len-4);
-
-               /* put new skb into descriptor */
-               descptr->skb_ptr = new_skb;
-               descptr->buf = cpu_to_le32(pci_map_single(priv->pdev,
-                       descptr->skb_ptr->data,
-                       MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
-
-next_descr:            
-               /* put the descriptor back to the MAC */
-               descptr->status = DESC_STATUS_OWNER_MAC;
-               descptr = descptr->vndescp;
-               count++; /* shall we count errors and dropped packets as well? */
-       } /* while (limit && !(descptr->status & DESC_STATUS_OWNER_MAC)) */
-
-       /* remember next descriptor to check for rx */
-       priv->rx_remove_ptr = descptr;
-
-       return count;
-}
-
-void r6040_tx(struct net_device *dev)
-{
-       struct r6040_private *priv = netdev_priv(dev);
-       struct r6040_descriptor *descptr;
-       void __iomem *ioaddr = priv->base;
-       struct sk_buff *skb_ptr;
-       u16 err;
-
-       spin_lock(&priv->lock);
-       descptr = priv->tx_remove_ptr;
-       while (priv->tx_free_desc < TX_DCNT) {
-               /* Check for errors */
-               err = ioread16(ioaddr + MLSR);
-
-               if (err & 0x0200)
-                       dev->stats.rx_fifo_errors++;
-               if (err & (0x2000 | 0x4000))
-                       dev->stats.tx_carrier_errors++;
-
-               dbg(DBG_TX_DONE, "descptr %p status x%x err x%x jiffies %lu\n",
-                   descptr, descptr->status, err, jiffies);
-
-               if (descptr->status & 0x8000)
-                       break; /* Not complete */
-               skb_ptr = descptr->skb_ptr;
-               pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
-                       skb_ptr->len, PCI_DMA_TODEVICE);
-               /* Free buffer */
-               dev_kfree_skb_irq(skb_ptr);
-               descptr->skb_ptr = NULL;
-               /* To next descriptor */
-               descptr = descptr->vndescp;
-               priv->tx_free_desc++;
-       }
-       priv->tx_remove_ptr = descptr;
-
-       if (priv->tx_free_desc)
-               netif_wake_queue(dev);
-       spin_unlock(&priv->lock);
-}
-
-int r6040_poll(struct napi_struct *napi, int budget)
-{
-       struct r6040_private *priv =
-               container_of(napi, struct r6040_private, napi);
-       struct net_device *dev = priv->dev;
-       void __iomem *ioaddr = priv->base;
-       int work_done;
-
-       work_done = r6040_rx(dev, budget);
-
-       dbg(DBG_POLL, "budget x%x done x%x\n", budget, work_done);
-
-       if (work_done < budget) {
-               netif_rx_complete(dev, napi);
-               /* Enable RX interrupt */
-               iowrite16(ioread16(ioaddr + MIER) | RX_INTS, ioaddr + MIER);
-       }
-       return work_done;
-}
-
-/* The RDC interrupt handler. */
-irqreturn_t r6040_interrupt(int irq, void *dev_id)
-{
-       struct net_device *dev = dev_id;
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       u16 status;
-
-       /* Read MISR status and clear */
-       status = ioread16(ioaddr + MISR);
-
-       dbg(DBG_IRQ, "status x%x jiffies %lu\n", status, jiffies);
-
-       if (status == 0x0000 || status == 0xffff)
-               return IRQ_NONE;
-
-       /* rx early / rx finish interrupt
-          or rx descriptor unavail. */
-       if (status & RX_INTS) {
-               if (status & RX_NO_DESC) {
-                       /* rx descriptor unavail. */
-                       dev->stats.rx_dropped++;
-                       dev->stats.rx_missed_errors++;
-               }
-               /* Mask off RX interrupts */
-               iowrite16(ioread16(ioaddr + MIER) & ~RX_INTS, ioaddr + MIER);
-               netif_rx_schedule(dev, &lp->napi);
-       }
-
-       /* rx FIFO full */
-       if (status & RX_FIFO_FULL) {
-               dev->stats.rx_fifo_errors++;
-       }
-       
-       /* TX interrupt request */
-       if (status & 0x10)
-               r6040_tx(dev);
-
-       return IRQ_HANDLED;
-}
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-void r6040_poll_controller(struct net_device *dev)
-{
-       disable_irq(dev->irq);
-       r6040_interrupt(dev->irq, dev);
-       enable_irq(dev->irq);
-}
-#endif
-
-/* Init RDC MAC */
-int r6040_up(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       int rc;
-
-       dbg(DBG_INIT, "ENTER\n");
-
-       /* Initialise and alloc RX/TX buffers */
-       r6040_init_txbufs(dev);
-       if ((rc=r6040_alloc_rxbufs(dev)))
-               return rc;
-
-       /* Read the PHY ID */
-       lp->switch_sig = phy_read(ioaddr, 0, 2);
-
-       if (lp->switch_sig  == ICPLUS_PHY_ID) {
-               phy_write(ioaddr, 29, 31, 0x175C); /* Enable registers */
-               lp->phy_mode = 0x8000;
-       } else {
-               /* PHY Mode Check */
-               phy_write(ioaddr, lp->phy_addr, 4, PHY_CAP);
-               phy_write(ioaddr, lp->phy_addr, 0, PHY_MODE);
-
-               if (PHY_MODE == 0x3100)
-                       lp->phy_mode = phy_mode_chk(dev);
-               else
-                       lp->phy_mode = (PHY_MODE & 0x0100) ? 0x8000:0x0;
-       }
-       
-/* configure duplex mode */
-       lp->mcr0 |= lp->phy_mode;
-
-       /* improve performance (by RDC guys) */
-       phy_write(ioaddr, 30, 17, (phy_read(ioaddr, 30, 17) | 0x4000));
-       phy_write(ioaddr, 30, 17, ~((~phy_read(ioaddr, 30, 17)) | 0x2000));
-       phy_write(ioaddr, 0, 19, 0x0000);
-       phy_write(ioaddr, 0, 30, 0x01F0);
-
-       /* Reset MAC and init all registers */
-       r6040_init_mac_regs(lp);
-
-       return 0;
-}
-
-/*
-  A periodic timer routine
-       Polling PHY Chip Link Status
-*/
-void r6040_timer(unsigned long data)
-{
-       struct net_device *dev = (struct net_device *)data;
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       u16 phy_mode;
-
-       /* Polling PHY Chip Status */
-       if (PHY_MODE == 0x3100)
-               phy_mode = phy_mode_chk(dev);
-       else
-               phy_mode = (PHY_MODE & 0x0100) ? 0x8000:0x0;
-
-       if (phy_mode != lp->phy_mode) {
-               lp->phy_mode = phy_mode;
-               lp->mcr0 = (lp->mcr0 & 0x7fff) | phy_mode;
-               iowrite16(lp->mcr0, ioaddr);
-               printk(KERN_INFO "Link Change x%x \n", ioread16(ioaddr));
-       }
-
-       /* Timer active again */
-       mod_timer(&lp->timer, jiffies + round_jiffies(HZ));
-}
-
-int r6040_open(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       int ret;
-
-       dbg(DBG_OPEN, "ENTER\n");
-       /* Request IRQ and Register interrupt handler */
-       ret = request_irq(dev->irq, &r6040_interrupt,
-               IRQF_SHARED, dev->name, dev);
-       if (ret)
-               return ret;
-
-       dbg(DBG_OPEN, "got irq %d\n", dev->irq);
-
-       /* Allocate Descriptor memory */
-       lp->rx_ring =
-               pci_alloc_consistent(lp->pdev, RX_DESC_SIZE, &lp->rx_ring_dma);
-       if (!lp->rx_ring)
-               return -ENOMEM;
-
-       dbg(DBG_OPEN, "allocated rx ring\n");
-
-       lp->tx_ring =
-               pci_alloc_consistent(lp->pdev, TX_DESC_SIZE, &lp->tx_ring_dma);
-       if (!lp->tx_ring) {
-               pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring,
-                                    lp->rx_ring_dma);
-               return -ENOMEM;
-       }
-
-       dbg(DBG_OPEN, "allocated tx ring\n");
-
-       if ((ret=r6040_up(dev))) {
-               pci_free_consistent(lp->pdev, TX_DESC_SIZE, lp->tx_ring,
-                                   lp->tx_ring_dma);
-               pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring,
-                                    lp->rx_ring_dma);
-               return ret;
-       }
-               
-       napi_enable(&lp->napi);
-       netif_start_queue(dev);
-
-       /* set and active a timer process */
-       setup_timer(&lp->timer, r6040_timer, (unsigned long) dev);
-       if (lp->switch_sig != ICPLUS_PHY_ID)
-               mod_timer(&lp->timer, jiffies + HZ);
-       return 0;
-}
-
-int r6040_start_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       struct r6040_descriptor *descptr;
-       void __iomem *ioaddr = lp->base;
-       unsigned long flags;
-       int ret = NETDEV_TX_OK;
-
-       /* Critical Section */
-       spin_lock_irqsave(&lp->lock, flags);
-
-       /* TX resource check */
-       if (!lp->tx_free_desc) {
-               spin_unlock_irqrestore(&lp->lock, flags);
-               netif_stop_queue(dev);
-               printk(KERN_ERR DRV_NAME ": no tx descriptor\n");
-               ret = NETDEV_TX_BUSY;
-               return ret;
-       }
-
-       /* Statistic Counter */
-       dev->stats.tx_packets++;
-       dev->stats.tx_bytes += skb->len;
-       /* Set TX descriptor & Transmit it */
-       lp->tx_free_desc--;
-       descptr = lp->tx_insert_ptr;
-       if (skb->len < MISR)
-               descptr->len = MISR;
-       else
-               descptr->len = skb->len;
-
-       descptr->skb_ptr = skb;
-       descptr->buf = cpu_to_le32(pci_map_single(lp->pdev,
-               skb->data, skb->len, PCI_DMA_TODEVICE));
-
-       dbg(DBG_TX_DESCR, "desc @ %p: len x%x buf %08x skb->data %p skb->len x%x jiffies %lu\n",
-           descptr, descptr->len, descptr->buf, skb->data, skb->len, jiffies);
-
-       {
-               char obuf[2*32+1];
-               dbg(DBG_TX_DATA, "tx len x%x: %s\n",
-                   descptr->len, hex2str(skb->data, obuf, sizeof(obuf)/2, '\0'));
-       }
-
-       descptr->status = 0x8000;
-       /* Trigger the MAC to check the TX descriptor */
-       iowrite16(0x01, ioaddr + MTPR);
-       lp->tx_insert_ptr = descptr->vndescp;
-
-       /* If no tx resource, stop */
-       if (!lp->tx_free_desc)
-               netif_stop_queue(dev);
-
-       dev->trans_start = jiffies;
-       spin_unlock_irqrestore(&lp->lock, flags);
-       return ret;
-}
-
-/*! set MAC addresses and promiscous mode */
-void r6040_multicast_list(struct net_device *dev)
-{
-       struct r6040_private *lp = netdev_priv(dev);
-       void __iomem *ioaddr = lp->base;
-       u16 *adrp;
-       u16 reg;
-       unsigned long flags;
-       struct dev_mc_list *dmi = dev->mc_list;
-       int i;
-       char obuf[3*ETH_ALEN] __attribute__ ((unused));
-
-       /* MAC Address */
-       adrp = (u16 *)dev->dev_addr;
-       iowrite16(adrp[0], ioaddr + MID_0L);
-       iowrite16(adrp[1], ioaddr + MID_0M);
-       iowrite16(adrp[2], ioaddr + MID_0H);
-
-       dbg(DBG_MAC_ADDR, "%s: set MAC addr %s\n", 
-           dev->name, hex2str(dev->dev_addr, obuf, ETH_ALEN, ':'));
-
-       /* Promiscous Mode */
-       spin_lock_irqsave(&lp->lock, flags);
-
-       /* Clear AMCP & PROM bits */
-       reg = ioread16(ioaddr) & ~0x0120;
-       if (dev->flags & IFF_PROMISC) {
-               reg |= 0x0020;
-               lp->mcr0 |= 0x0020;
-       }
-       /* Too many multicast addresses
-        * accept all traffic */
-       else if ((dev->mc_count > MCAST_MAX)
-               || (dev->flags & IFF_ALLMULTI))
-               reg |= 0x0020;
-
-       iowrite16(reg, ioaddr);
-       spin_unlock_irqrestore(&lp->lock, flags);
-
-       /* Build the hash table */
-       if (dev->mc_count > MCAST_MAX) {
-               u16 hash_table[4];
-               u32 crc;
-
-               for (i = 0; i < 4; i++)
-                       hash_table[i] = 0;
-
-               for (i = 0; i < dev->mc_count; i++) {
-                       char *addrs = dmi->dmi_addr;
-
-                       dmi = dmi->next;
-
-                       if (!(*addrs & 1))
-                               continue;
-
-                       crc = ether_crc_le(6, addrs);
-                       crc >>= 26;
-                       hash_table[crc >> 4] |= 1 << (15 - (crc & 0xf));
-               }
-               /* Write the index of the hash table */
-               for (i = 0; i < 4; i++)
-                       iowrite16(hash_table[i] << 14, ioaddr + MCR1);
-               /* Fill the MAC hash tables with their values */
-               iowrite16(hash_table[0], ioaddr + MAR0);
-               iowrite16(hash_table[1], ioaddr + MAR1);
-               iowrite16(hash_table[2], ioaddr + MAR2);
-               iowrite16(hash_table[3], ioaddr + MAR3);
-       }
-       /* Multicast Address 1~4 case */
-       for (i = 0, dmi; (i < dev->mc_count) && (i < MCAST_MAX); i++) {
-               adrp = (u16 *)dmi->dmi_addr;
-               iowrite16(adrp[0], ioaddr + MID_1L + 8*i);
-               iowrite16(adrp[1], ioaddr + MID_1M + 8*i);
-               iowrite16(adrp[2], ioaddr + MID_1H + 8*i);
-               dmi = dmi->next;
-       }
-       for (i = dev->mc_count; i < MCAST_MAX; i++) {
-               iowrite16(0xffff, ioaddr + MID_0L + 8*i);
-               iowrite16(0xffff, ioaddr + MID_0M + 8*i);
-               iowrite16(0xffff, ioaddr + MID_0H + 8*i);
-       }
-}
-
-STATIC void netdev_get_drvinfo(struct net_device *dev,
-                       struct ethtool_drvinfo *info)
-{
-       struct r6040_private *rp = netdev_priv(dev);
-
-       strcpy(info->driver, DRV_NAME);
-       strcpy(info->version, DRV_VERSION);
-       strcpy(info->bus_info, pci_name(rp->pdev));
-}
-
-STATIC int netdev_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct r6040_private *rp = netdev_priv(dev);
-       int rc;
-
-       spin_lock_irq(&rp->lock);
-       rc = mii_ethtool_gset(&rp->mii_if, cmd);
-       spin_unlock_irq(&rp->lock);
-
-       return rc;
-}
-
-STATIC int netdev_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct r6040_private *rp = netdev_priv(dev);
-       int rc;
-
-       spin_lock_irq(&rp->lock);
-       rc = mii_ethtool_sset(&rp->mii_if, cmd);
-       spin_unlock_irq(&rp->lock);
-       r6040_set_carrier(&rp->mii_if);
-
-       return rc;
-}
-
-STATIC u32 netdev_get_link(struct net_device *dev)
-{
-       struct r6040_private *rp = netdev_priv(dev);
-
-       return mii_link_ok(&rp->mii_if);
-}
-
-static struct ethtool_ops netdev_ethtool_ops = {
-       .get_drvinfo            = netdev_get_drvinfo,
-       .get_settings           = netdev_get_settings,
-       .set_settings           = netdev_set_settings,
-       .get_link               = netdev_get_link,
-};
-
-int __devinit r6040_init_one(struct pci_dev *pdev,
-                                        const struct pci_device_id *ent)
-{
-       struct net_device *dev, *parent_dev;
-       struct r6040_private *lp;
-       void __iomem *ioaddr;
-       int err, io_size = R6040_IO_SIZE;
-       static int card_idx = -1;
-       long pioaddr;
-
-       printk(KERN_INFO "%s\n", version);
-       printk(KERN_INFO DRV_NAME ": debug %x\n", debug);
-
-       err = pci_enable_device(pdev);
-       if (err)
-               return err;
-
-       /* this should always be supported */
-       if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
-               printk(KERN_ERR DRV_NAME "32-bit PCI DMA addresses"
-                               "not supported by the card\n");
-               return -ENODEV;
-       }
-       if (pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) {
-               printk(KERN_ERR DRV_NAME "32-bit PCI DMA addresses"
-                               "not supported by the card\n");
-               return -ENODEV;
-       }
-
-       /* IO Size check */
-       if (pci_resource_len(pdev, 0) < io_size) {
-               printk(KERN_ERR "Insufficient PCI resources, aborting\n");
-               return -EIO;
-       }
-
-       pioaddr = pci_resource_start(pdev, 0);  /* IO map base address */
-       pci_set_master(pdev);
-
-       dev = alloc_etherdev(sizeof(struct r6040_private));
-       if (!dev) {
-               printk(KERN_ERR "Failed to allocate etherdev\n");
-               return -ENOMEM;
-       }
-       SET_NETDEV_DEV(dev, &pdev->dev);
-       lp = netdev_priv(dev);
-
-       if (pci_request_regions(pdev, DRV_NAME)) {
-               printk(KERN_ERR DRV_NAME ": Failed to request PCI regions\n");
-               err = -ENODEV;
-               goto err_out_disable;
-       }
-
-       ioaddr = pci_iomap(pdev, 0, io_size);
-       if (!ioaddr) {
-               printk(KERN_ERR "ioremap failed for device %s\n",
-                       pci_name(pdev));
-               return -EIO;
-       }
-
-       /* Init system & device */
-       lp->base = ioaddr;
-       dev->irq = pdev->irq;
-
-       spin_lock_init(&lp->lock);
-       pci_set_drvdata(pdev, dev);
-
-       card_idx++;
-
-       /* Link new device into r6040_root_dev */
-       lp->pdev = pdev;
-
-       lp->dev = dev;
-
-       /* Init RDC private data */
-       lp->mcr0 = 0x1002;
-       lp->phy_addr = phy_table[card_idx];
-       lp->switch_sig = 0;
-
-       /* The RDC-specific entries in the device structure. */
-       dev->open = &r6040_open;
-       dev->hard_start_xmit = &r6040_start_xmit;
-       dev->stop = &r6040_close;
-       dev->get_stats = r6040_get_stats;
-       dev->set_multicast_list = &r6040_multicast_list;
-       dev->do_ioctl = &r6040_ioctl;
-       dev->ethtool_ops = &netdev_ethtool_ops;
-       dev->tx_timeout = &r6040_tx_timeout;
-       dev->watchdog_timeo = TX_TIMEOUT;
-
-       /*
-       You must specify a netdevice with a "parent=" parameter, whose address
-       is copied, or an array of bytes comprising a literal address; otherwise
-       the (default) address of the Sitecom WL-153 bootloader is used.
-       */
-       memcpy(dev->dev_addr, mac_base, ETH_ALEN);
-       if (parent) {
-               parent_dev = __dev_get_by_name(&init_net, parent);
-               if (parent_dev)
-                       memcpy(dev->dev_addr, parent_dev->dev_addr, ETH_ALEN);
-       }
-       dev->dev_addr[ETH_ALEN-1] += card_idx ^ reverse; /* + 0 or 1 */
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller = r6040_poll_controller;
-#endif
-       netif_napi_add(dev, &lp->napi, r6040_poll, 64);
-       lp->mii_if.dev = dev;
-       lp->mii_if.mdio_read = mdio_read;
-       lp->mii_if.mdio_write = mdio_write;
-       lp->mii_if.phy_id = lp->phy_addr;
-       lp->mii_if.phy_id_mask = 0x1f;
-       lp->mii_if.reg_num_mask = 0x1f;
-
-       if (reverse && ((card_idx & 1) == 0) && (dev_alloc_name(dev, dev->name)
-                       >= 0))
-               for (err = strlen(dev->name); err; err--) {
-                       if (dev->name[err - 1]++ != '9')
-                               break;
-                       dev->name[err - 1] = '0';
-               }
-
-       /* Register net device. After this dev->name assign */
-       err = register_netdev(dev);
-       if (err) {
-               printk(KERN_ERR DRV_NAME ": Failed to register net device\n");
-               goto err_out_res;
-       }
-
-       dbg(DBG_INIT, "%s successfully registered\n", dev->name);
-       return 0;
-
-err_out_res:
-       pci_release_regions(pdev);
-err_out_disable:
-       pci_disable_device(pdev);
-       pci_set_drvdata(pdev, NULL);
-       free_netdev(dev);
-
-       return err;
-}
-
-void __devexit r6040_remove_one(struct pci_dev *pdev)
-{
-       struct net_device *dev = pci_get_drvdata(pdev);
-
-       unregister_netdev(dev);
-       pci_release_regions(pdev);
-       free_netdev(dev);
-       pci_disable_device(pdev);
-       pci_set_drvdata(pdev, NULL);
-}
-
-
-static struct pci_device_id r6040_pci_tbl[] = {
-       { PCI_DEVICE(PCI_VENDOR_ID_RDC, 0x6040) },
-       { 0 }
-};
-MODULE_DEVICE_TABLE(pci, r6040_pci_tbl);
-
-static struct pci_driver r6040_driver = {
-       .name           = DRV_NAME,
-       .id_table       = r6040_pci_tbl,
-       .probe          = r6040_init_one,
-       .remove         = __devexit_p(r6040_remove_one),
-};
-
-
-static int __init r6040_init(void)
-{
-       return pci_register_driver(&r6040_driver);
-}
-
-
-static void __exit r6040_cleanup(void)
-{
-       pci_unregister_driver(&r6040_driver);
-}
-
-module_init(r6040_init);
-module_exit(r6040_cleanup);
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/gpio.h
deleted file mode 100644 (file)
index ff87fca..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_I386_GPIO_H
-#define _ASM_I386_GPIO_H
-
-#include <gpio.h>
-
-#endif /* _ASM_I386_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-generic/gpio.h
deleted file mode 100644 (file)
index 5305dcb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __ASM_MACH_GENERIC_GPIO_H
-#define __ASM_MACH_GENERIC_GPIO_H
-
-int gpio_request(unsigned gpio, const char *label);
-void gpio_free(unsigned gpio);
-int gpio_direction_input(unsigned gpio);
-int gpio_direction_output(unsigned gpio, int value);
-int gpio_get_value(unsigned gpio);
-void gpio_set_value(unsigned gpio, int value);
-int gpio_to_irq(unsigned gpio);
-int irq_to_gpio(unsigned irq);
-
-#include <asm-generic/gpio.h>           /* cansleep wrappers */
-
-#endif /* __ASM_MACH_GENERIC_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/gpio.h
deleted file mode 100644 (file)
index 2368bd7..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _RDC_GPIO_H
-#define _RDC_GPIO_H
-
-extern int rdc_gpio_get_value(unsigned gpio);
-extern void rdc_gpio_set_value(unsigned gpio, int value);
-extern int rdc_gpio_direction_input(unsigned gpio);
-extern int rdc_gpio_direction_output(unsigned gpio, int value);
-
-
-/* Wrappers for the arch-neutral GPIO API */
-
-static inline int gpio_request(unsigned gpio, const char *label)
-{
-        /* Not yet implemented */
-        return 0;
-}
-
-static inline void gpio_free(unsigned gpio)
-{
-        /* Not yet implemented */
-}
-
-static inline int gpio_direction_input(unsigned gpio)
-{
-        return rdc_gpio_direction_input(gpio);
-}
-
-static inline int gpio_direction_output(unsigned gpio, int value)
-{
-        return rdc_gpio_direction_output(gpio, value);
-}
-
-static inline int gpio_get_value(unsigned gpio)
-{
-        return rdc_gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-        rdc_gpio_set_value(gpio, value);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-        return gpio;
-}
-
-static inline int irq_to_gpio(unsigned irq)
-{
-        return irq;
-}
-
-/* For cansleep */
-#include <asm-generic/gpio.h>
-
-#endif /* _RDC_GPIO_H_ */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h b/target/linux/rdc/files-2.6.24/include/asm-i386/mach-rdc/rdc321x_defs.h
deleted file mode 100644 (file)
index 838ba8f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define PFX    "rdc321x: "
-
-/* General purpose configuration and data registers */
-#define RDC3210_CFGREG_ADDR     0x0CF8
-#define RDC3210_CFGREG_DATA     0x0CFC
-#define RDC_MAX_GPIO           0x3A
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/gpio.h
deleted file mode 100644 (file)
index ff87fca..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_I386_GPIO_H
-#define _ASM_I386_GPIO_H
-
-#include <gpio.h>
-
-#endif /* _ASM_I386_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-generic/gpio.h
deleted file mode 100644 (file)
index 5305dcb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __ASM_MACH_GENERIC_GPIO_H
-#define __ASM_MACH_GENERIC_GPIO_H
-
-int gpio_request(unsigned gpio, const char *label);
-void gpio_free(unsigned gpio);
-int gpio_direction_input(unsigned gpio);
-int gpio_direction_output(unsigned gpio, int value);
-int gpio_get_value(unsigned gpio);
-void gpio_set_value(unsigned gpio, int value);
-int gpio_to_irq(unsigned gpio);
-int irq_to_gpio(unsigned irq);
-
-#include <asm-generic/gpio.h>           /* cansleep wrappers */
-
-#endif /* __ASM_MACH_GENERIC_GPIO_H */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/gpio.h
deleted file mode 100644 (file)
index 2368bd7..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _RDC_GPIO_H
-#define _RDC_GPIO_H
-
-extern int rdc_gpio_get_value(unsigned gpio);
-extern void rdc_gpio_set_value(unsigned gpio, int value);
-extern int rdc_gpio_direction_input(unsigned gpio);
-extern int rdc_gpio_direction_output(unsigned gpio, int value);
-
-
-/* Wrappers for the arch-neutral GPIO API */
-
-static inline int gpio_request(unsigned gpio, const char *label)
-{
-        /* Not yet implemented */
-        return 0;
-}
-
-static inline void gpio_free(unsigned gpio)
-{
-        /* Not yet implemented */
-}
-
-static inline int gpio_direction_input(unsigned gpio)
-{
-        return rdc_gpio_direction_input(gpio);
-}
-
-static inline int gpio_direction_output(unsigned gpio, int value)
-{
-        return rdc_gpio_direction_output(gpio, value);
-}
-
-static inline int gpio_get_value(unsigned gpio)
-{
-        return rdc_gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-        rdc_gpio_set_value(gpio, value);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-        return gpio;
-}
-
-static inline int irq_to_gpio(unsigned irq)
-{
-        return irq;
-}
-
-/* For cansleep */
-#include <asm-generic/gpio.h>
-
-#endif /* _RDC_GPIO_H_ */
diff --git a/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h b/target/linux/rdc/files-2.6.24/include/asm-x86/mach-rdc/rdc321x_defs.h
deleted file mode 100644 (file)
index 838ba8f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define PFX    "rdc321x: "
-
-/* General purpose configuration and data registers */
-#define RDC3210_CFGREG_ADDR     0x0CF8
-#define RDC3210_CFGREG_DATA     0x0CFC
-#define RDC_MAX_GPIO           0x3A
diff --git a/target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.24/001-rdc3210_flash_map.patch
deleted file mode 100644 (file)
index 6da095d..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -117,6 +117,50 @@ config MTD_PNC2000
-         PNC-2000 is the name of Network Camera product from PHOTRON
-         Ltd. in Japan. It uses CFI-compliant flash.
-+config MTD_RDC3210
-+      tristate "CFI Flash device mapped on RDC3210"
-+      depends on X86 && MTD_CFI && MTD_PARTITIONS
-+      help
-+        RDC-3210 is the flash device we find on Ralink reference board.
-+
-+config MTD_RDC3210_STATIC_MAP
-+      bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
-+      select MTD_RDC3210_FACTORY_PRESENT
-+      help
-+        The mapping driver will use the static partition map for the
-+        RDC-3210 flash device.
-+
-+config MTD_RDC3210_FACTORY_PRESENT
-+      bool "Reserve a partition on RDC3210 for factory presets"
-+      depends on MTD_RDC3210
-+      default y
-+      help
-+        The mapping driver will reserve a partition on the RDC-3210 flash
-+        device for resetting flash contents to factory defaults.
-+
-+config MTD_RDC3210_ALLOW_JFFS2
-+      bool "JFFS2 filesystem usable in a partition on RDC3210"
-+      depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
-+      help
-+        The mapping driver will align a partition on the RDC-3210 flash
-+        device to an erase-block boundary so that a JFFS2 filesystem may
-+        reside on it.
-+
-+config MTD_RDC3210_SIZE
-+      hex "Amount of flash memory on RDC3210"
-+      depends on MTD_RDC3210
-+      default "0x400000"
-+      help
-+        Total size in bytes of the RDC-3210 flash device
-+
-+config MTD_RDC3210_BUSWIDTH
-+      int "Width of CFI Flash device mapped on RDC3210"
-+      depends on MTD_RDC3210
-+      default "2"
-+      help
-+        Number of bytes addressed on the RDC-3210 flash device before
-+        addressing the same chip again
-+
- config MTD_SC520CDP
-       tristate "CFI Flash device mapped on AMD SC520 CDP"
-       depends on X86 && MTD_CFI && MTD_CONCAT
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -30,6 +30,7 @@ obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcms
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
- obj-$(CONFIG_MTD_PNC2000)     += pnc2000.o
- obj-$(CONFIG_MTD_PCMCIA)      += pcmciamtd.o
-+obj-$(CONFIG_MTD_RDC3210)     += rdc3210.o
- obj-$(CONFIG_MTD_RPXLITE)     += rpxlite.o
- obj-$(CONFIG_MTD_TQM8XXL)     += tqm8xxl.o
- obj-$(CONFIG_MTD_SA1100)      += sa1100-flash.o
diff --git a/target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch b/target/linux/rdc/patches-2.6.24/001-x86_generic_gpio.patch
deleted file mode 100644 (file)
index 11c894b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -81,6 +81,10 @@ config GENERIC_BUG
-       default y
-       depends on BUG
-+config GENERIC_GPIO
-+       bool
-+       default n
-+
- config GENERIC_HWEIGHT
-       bool
-       default y
diff --git a/target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch b/target/linux/rdc/patches-2.6.24/002-r6040_ethernet.patch
deleted file mode 100644 (file)
index 97d6e7d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -1449,6 +1449,24 @@ config APRICOT
-         To compile this driver as a module, choose M here. The module
-         will be called apricot.
-+config R6040
-+      tristate "RDC Fast-Ethernet support (EXPERIMENTAL)"
-+      depends on NET_PCI && EXPERIMENTAL
-+      select MII
-+      help
-+        If you have a network (Ethernet) controller of this type, say Y and
-+        read the Ethernet-HOWTO, available from
-+          <http://www.tldp.org/docs.html#howto>.
-+
-+          To compile this driver as a module, choose M here and read
-+          <file:Documentation/networking/net-modules.txt>.  The module will be
-+          called r6040.
-+
-+
-+config R6040_NAPI
-+      bool "NAPI support for R6040"
-+      depends on R6040
-+      default y
- config B44
-       tristate "Broadcom 440x/47xx ethernet support"
-       depends on SSB_POSSIBLE
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -116,6 +116,7 @@ obj-$(CONFIG_LNE390) += lne390.o 8390.o
- obj-$(CONFIG_NE3210) += ne3210.o 8390.o
- obj-$(CONFIG_SB1250_MAC) += sb1250-mac.o
- obj-$(CONFIG_B44) += b44.o
-+obj-$(CONFIG_R6040) += r6040.o
- obj-$(CONFIG_FORCEDETH) += forcedeth.o
- obj-$(CONFIG_NE_H8300) += ne-h8300.o
- obj-$(CONFIG_AX88796) += ax88796.o
diff --git a/target/linux/rdc/patches-2.6.24/003-rootfstype.patch b/target/linux/rdc/patches-2.6.24/003-rootfstype.patch
deleted file mode 100644 (file)
index 3ad9047..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -256,6 +256,8 @@ static void __init get_fs_names(char *pa
- {
-       char *s = page;
-+      if (!root_fs_names)
-+              root_fs_names = "squashfs,jffs2";
-       if (root_fs_names) {
-               strcpy(page, root_fs_names);
-               while (*s++) {
diff --git a/target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch b/target/linux/rdc/patches-2.6.24/004-rdc_fixes.patch
deleted file mode 100644 (file)
index a42e540..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -304,6 +304,17 @@ config X86_VSMP
-         supposed to run on these EM64T-based machines.  Only choose this option
-         if you have one of these machines.
-+config X86_RDC
-+      bool "Support for RDC 3211 boards"
-+      select GENERIC_GPIO
-+      select LEDS_GPIO
-+      select LEDS_CLASS
-+      help
-+          Support for RDC 3211 systems. Say 'Y' here if the kernel is
-+          supposed to run on an IA-32 RDC R3211 system.
-+          Only choose this option if you have such as system, otherwise you
-+          should say N here.
-+
- endchoice
- config SCHED_NO_NO_OMIT_FRAME_POINTER
---- a/arch/x86/kernel/reboot_fixups_32.c
-+++ b/arch/x86/kernel/reboot_fixups_32.c
-@@ -30,6 +30,17 @@ static void cs5536_warm_reset(struct pci
-       udelay(50); /* shouldn't get here but be safe and spin a while */
- }
-+static void r8610_reset(struct pci_dev *dev)
-+{
-+       int i;
-+
-+       outl(0x80003840,0xCF8);
-+       i=inl(0xCFC);
-+       i |= 0x1600;
-+       outl(i,0xCFC);
-+       outb(1,0x92);
-+}
-+
- struct device_fixup {
-       unsigned int vendor;
-       unsigned int device;
-@@ -40,6 +51,7 @@ static struct device_fixup fixups_table[
- { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset },
- { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset },
- { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset },
-+{ PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, r8610_reset },
- };
- /*
---- a/arch/x86/Makefile_32
-+++ b/arch/x86/Makefile_32
-@@ -99,6 +99,11 @@ mflags-$(CONFIG_X86_ES7000) := -Iinclude
- mcore-$(CONFIG_X86_ES7000)    := arch/x86/mach-default
- core-$(CONFIG_X86_ES7000)     := arch/x86/mach-es7000/
-+# RDC subarch support
-+mflags-$(CONFIG_X86_RDC)       := -Iinclude/asm-x86/mach-rdc
-+mcore-$(CONFIG_X86_RDC)        := arch/x86/mach-default
-+core-$(CONFIG_X86_RDC)         += arch/x86/mach-rdc/
-+
- # Xen paravirtualization support
- core-$(CONFIG_XEN)            += arch/x86/xen/
---- a/include/asm-x86/timex.h
-+++ b/include/asm-x86/timex.h
-@@ -7,6 +7,8 @@
- #ifdef CONFIG_X86_ELAN
- #  define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */
-+#elif defined(CONFIG_X86_RDC)
-+#  define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */
- #else
- #  define PIT_TICK_RATE 1193182 /* Underlying HZ */
- #endif
diff --git a/target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.24/004-yenta_mystery.patch
deleted file mode 100644 (file)
index 7f202c6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/drivers/pcmcia/yenta_socket.c
-+++ b/drivers/pcmcia/yenta_socket.c
-@@ -1171,6 +1171,17 @@ static int __devinit yenta_probe (struct
-       /* We must finish initialization here */
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+      config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+      config_writel(socket, 35*4, 0x00000022);
-+      config_writel(socket, 36*4, 0x60200000);
-+      config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
-       if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
-               /* No IRQ or request_irq failed. Poll */
-               socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch b/target/linux/rdc/patches-2.6.24/005-cmdline_setup.patch
deleted file mode 100644 (file)
index 934d36d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/x86/kernel/setup_32.c
-+++ b/arch/x86/kernel/setup_32.c
-@@ -609,6 +609,7 @@ void __init setup_arch(char **cmdline_p)
-               print_memory_map("user");
-       }
-+      strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
-       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-       *cmdline_p = command_line;
diff --git a/target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.24/005-fix_amit_breakage.patch
deleted file mode 100644 (file)
index 5be29df..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/arch/x86/boot/boot.h
-+++ b/arch/x86/boot/boot.h
-@@ -60,7 +60,7 @@ static inline void outl(u32 v, u16 port)
- {
-       asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
-       u32 v;
-       asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
---- a/arch/x86/boot/pm.c
-+++ b/arch/x86/boot/pm.c
-@@ -16,6 +16,9 @@
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@ void go_to_protected_mode(void)
-               die();
-       }
-+#ifdef CONFIG_X86_RDC
-+      {
-+              u32 bootctl;
-+
-+              outl(0x80003840, RDC3210_CFGREG_ADDR);
-+              bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+              outl(bootctl, RDC3210_CFGREG_DATA);
-+      }
-+#endif
-+
-       /* Reset coprocessor (IGNNE#) */
-       reset_coprocessor();
diff --git a/target/linux/rdc/patches-2.6.24/006-pci_ids.patch b/target/linux/rdc/patches-2.6.24/006-pci_ids.patch
deleted file mode 100644 (file)
index 96ab2b1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/include/linux/pci_ids.h
-+++ b/include/linux/pci_ids.h
-@@ -2106,6 +2106,13 @@
- #define PCI_DEVICE_ID_HERC_WIN                0x5732
- #define PCI_DEVICE_ID_HERC_UNI                0x5832
-+#define PCI_VENDOR_ID_RDC             0x17f3
-+#define PCI_DEVICE_ID_RDC_R6020               0x6020
-+#define PCI_DEVICE_ID_RDC_R6030               0x6030
-+#define PCI_DEVICE_ID_RDC_R6040               0x6040
-+#define PCI_DEVICE_ID_RDC_R6060               0x6060
-+#define PCI_DEVICE_ID_RDC_R6061               0x6061
-+
- #define PCI_VENDOR_ID_SITECOM         0x182d
- #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069
diff --git a/target/linux/rdc/patches-2.6.24/600-x86_lzma.patch b/target/linux/rdc/patches-2.6.24/600-x86_lzma.patch
deleted file mode 100644 (file)
index 9d94950..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -166,4 +166,9 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS)
- quiet_cmd_gzip = GZIP    $@
- cmd_gzip = gzip -f -9 < $< > $@
--
-+# LZMA
-+#
-+quiet_cmd_lzma = LZMA $@
-+cmd_lzma = bash -e scripts/lzma_kern $< $@ -lc7 -lp0 -pb0
-+# to use lzmacomp,
-+# cmd_lzma = lzmacomp $< 700 > $@
---- /dev/null
-+++ b/scripts/lzma_kern
-@@ -0,0 +1,4 @@
-+get-size() { echo "$5" ;}
-+printf -v len '%.8x' "$(get-size $(ls -l "$1"))"
-+lzma e "$@"
-+echo -ne "\x$(echo $len | cut -c 7,8)\x$(echo $len | cut -c 5,6)\x$(echo $len | cut -c 3,4)\x$(echo $len | cut -c 1,2)" >> "$2"
---- a/arch/x86/boot/compressed/Makefile_32
-+++ b/arch/x86/boot/compressed/Makefile_32
-@@ -4,8 +4,8 @@
- # create a compressed vmlinux image from the original vmlinux
- #
--targets               := vmlinux vmlinux.bin vmlinux.bin.gz head_32.o misc_32.o piggy.o \
--                      vmlinux.bin.all vmlinux.relocs
-+targets               := vmlinux vmlinux.bin vmlinux.bin.lzma head_32.o piggy.o \
-+                      vmlinux.bin.all vmlinux.relocs lzma_misc.o
- EXTRA_AFLAGS  := -traditional
- LDFLAGS_vmlinux := -T
-@@ -17,7 +17,7 @@ KBUILD_CFLAGS  := -m32 -D__KERNEL__ $(LI
-          $(call cc-option,-fno-stack-protector)
- LDFLAGS := -m elf_i386
--$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/misc_32.o $(obj)/piggy.o FORCE
-+$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
-       $(call if_changed,ld)
-       @:
-@@ -37,14 +37,14 @@ $(obj)/vmlinux.bin.all: $(vmlinux.bin.al
-       $(call if_changed,relocbin)
- ifdef CONFIG_RELOCATABLE
--$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
--      $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE
-+      $(call if_changed,lzma)
- else
--$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
--      $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
-+      $(call if_changed,lzma)
- endif
- LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
--$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.lzma FORCE
-       $(call if_changed,ld)
diff --git a/target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.25/001-rdc3210_flash_map.patch
deleted file mode 100644 (file)
index 4c12471..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -110,6 +110,50 @@
-         Sun Microsystems boardsets.  This driver will require CFI support
-         in the kernel, so if you did not enable CFI previously, do that now.
-+config MTD_RDC3210
-+      tristate "CFI Flash device mapped on RDC3210"
-+      depends on X86 && MTD_CFI && MTD_PARTITIONS
-+      help
-+        RDC-3210 is the flash device we find on Ralink reference board.
-+
-+config MTD_RDC3210_STATIC_MAP
-+      bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
-+      select MTD_RDC3210_FACTORY_PRESENT
-+      help
-+        The mapping driver will use the static partition map for the
-+        RDC-3210 flash device.
-+
-+config MTD_RDC3210_FACTORY_PRESENT
-+      bool "Reserve a partition on RDC3210 for factory presets"
-+      depends on MTD_RDC3210
-+      default y
-+      help
-+        The mapping driver will reserve a partition on the RDC-3210 flash
-+        device for resetting flash contents to factory defaults.
-+
-+config MTD_RDC3210_ALLOW_JFFS2
-+      bool "JFFS2 filesystem usable in a partition on RDC3210"
-+      depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
-+      help
-+        The mapping driver will align a partition on the RDC-3210 flash
-+        device to an erase-block boundary so that a JFFS2 filesystem may
-+        reside on it.
-+
-+config MTD_RDC3210_SIZE
-+      hex "Amount of flash memory on RDC3210"
-+      depends on MTD_RDC3210
-+      default "0x400000"
-+      help
-+        Total size in bytes of the RDC-3210 flash device
-+
-+config MTD_RDC3210_BUSWIDTH
-+      int "Width of CFI Flash device mapped on RDC3210"
-+      depends on MTD_RDC3210
-+      default "2"
-+      help
-+        Number of bytes addressed on the RDC-3210 flash device before
-+        addressing the same chip again
-+
- config MTD_SC520CDP
-       tristate "CFI Flash device mapped on AMD SC520 CDP"
-       depends on X86 && MTD_CFI && MTD_CONCAT
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -29,6 +29,7 @@
- obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
- obj-$(CONFIG_MTD_PCMCIA)      += pcmciamtd.o
-+obj-$(CONFIG_MTD_RDC3210)     += rdc3210.o
- obj-$(CONFIG_MTD_RPXLITE)     += rpxlite.o
- obj-$(CONFIG_MTD_TQM8XXL)     += tqm8xxl.o
- obj-$(CONFIG_MTD_SA1100)      += sa1100-flash.o
diff --git a/target/linux/rdc/patches-2.6.25/003-rootfstype.patch b/target/linux/rdc/patches-2.6.25/003-rootfstype.patch
deleted file mode 100644 (file)
index 55a4cd4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -163,6 +163,8 @@
- {
-       char *s = page;
-+      if (!root_fs_names)
-+              root_fs_names = "squashfs,jffs2";
-       if (root_fs_names) {
-               strcpy(page, root_fs_names);
-               while (*s++) {
diff --git a/target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.25/004-yenta_mystery.patch
deleted file mode 100644 (file)
index 7faabdf..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c  2008-10-26 08:30:07.000000000 -0700
-+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c       2008-10-26 08:54:27.000000000 -0700
-@@ -1171,6 +1171,17 @@
-       /* We must finish initialization here */
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+      config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+      config_writel(socket, 35*4, 0x00000022);
-+      config_writel(socket, 36*4, 0x60200000);
-+      config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
-       if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
-               /* No IRQ or request_irq failed. Poll */
-               socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.25/005-fix_amit_breakage.patch
deleted file mode 100644 (file)
index eabfd04..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
---- linux-2.6.24.7.orig/arch/x86/boot/boot.h   2008-10-26 20:18:14.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/boot.h        2008-10-26 20:18:36.000000000 -0700
-@@ -60,7 +60,7 @@
- {
-       asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
-       u32 v;
-       asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
---- linux-2.6.24.7.orig/arch/x86/boot/pm.c     2008-10-26 19:55:50.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/pm.c  2008-10-26 21:38:12.000000000 -0700
-@@ -16,6 +16,9 @@
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@
-               die();
-       }
-+#ifdef CONFIG_X86_RDC
-+      {
-+              u32 bootctl;
-+
-+              outl(0x80003840, RDC3210_CFGREG_ADDR);
-+              bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+              outl(bootctl, RDC3210_CFGREG_DATA);
-+      }
-+#endif
-+
-       /* Reset coprocessor (IGNNE#) */
-       reset_coprocessor();
diff --git a/target/linux/rdc/patches-2.6.25/600-x86_lzma.patch b/target/linux/rdc/patches-2.6.25/600-x86_lzma.patch
deleted file mode 100644 (file)
index 5e0c8d7..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -172,4 +172,9 @@
- quiet_cmd_gzip = GZIP    $@
- cmd_gzip = gzip -f -9 < $< > $@
--
-+# LZMA
-+#
-+quiet_cmd_lzma = LZMA $@
-+cmd_lzma = bash -e scripts/lzma_kern $< $@ -lc7 -lp0 -pb0
-+# to use lzmacomp,
-+# cmd_lzma = lzmacomp $< 700 > $@
---- /dev/null
-+++ b/scripts/lzma_kern
-@@ -0,0 +1,4 @@
-+get-size() { echo "$5" ;}
-+printf -v len '%.8x' "$(get-size $(ls -l "$1"))"
-+lzma e "$@"
-+echo -ne "\x$(echo $len | cut -c 7,8)\x$(echo $len | cut -c 5,6)\x$(echo $len | cut -c 3,4)\x$(echo $len | cut -c 1,2)" >> "$2"
---- a/arch/x86/boot/compressed/Makefile
-+++ b/arch/x86/boot/compressed/Makefile
-@@ -4,7 +4,7 @@
- # create a compressed vmlinux image from the original vmlinux
- #
--targets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc.o piggy.o
-+targets := vmlinux vmlinux.bin vmlinux.bin.lzma head_$(BITS).o lzma_misc.o piggy.o
- KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
- KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
-@@ -18,7 +18,7 @@
- LDFLAGS := -m elf_$(UTS_MACHINE)
- LDFLAGS_vmlinux := -T
--$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE
-+$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
-       $(call if_changed,ld)
-       @:
-@@ -44,11 +44,11 @@
-       $(call if_changed,relocbin)
- ifdef CONFIG_RELOCATABLE
--$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
--      $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE
-+      $(call if_changed,lzma)
- else
--$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
--      $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
-+      $(call if_changed,lzma)
- endif
- LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
-@@ -60,5 +60,5 @@
- endif
--$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.lzma FORCE
-       $(call if_changed,ld)
diff --git a/target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch b/target/linux/rdc/patches-2.6.27/001-rdc3210_flash_map.patch
deleted file mode 100644 (file)
index 4c12471..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -110,6 +110,50 @@
-         Sun Microsystems boardsets.  This driver will require CFI support
-         in the kernel, so if you did not enable CFI previously, do that now.
-+config MTD_RDC3210
-+      tristate "CFI Flash device mapped on RDC3210"
-+      depends on X86 && MTD_CFI && MTD_PARTITIONS
-+      help
-+        RDC-3210 is the flash device we find on Ralink reference board.
-+
-+config MTD_RDC3210_STATIC_MAP
-+      bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
-+      select MTD_RDC3210_FACTORY_PRESENT
-+      help
-+        The mapping driver will use the static partition map for the
-+        RDC-3210 flash device.
-+
-+config MTD_RDC3210_FACTORY_PRESENT
-+      bool "Reserve a partition on RDC3210 for factory presets"
-+      depends on MTD_RDC3210
-+      default y
-+      help
-+        The mapping driver will reserve a partition on the RDC-3210 flash
-+        device for resetting flash contents to factory defaults.
-+
-+config MTD_RDC3210_ALLOW_JFFS2
-+      bool "JFFS2 filesystem usable in a partition on RDC3210"
-+      depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
-+      help
-+        The mapping driver will align a partition on the RDC-3210 flash
-+        device to an erase-block boundary so that a JFFS2 filesystem may
-+        reside on it.
-+
-+config MTD_RDC3210_SIZE
-+      hex "Amount of flash memory on RDC3210"
-+      depends on MTD_RDC3210
-+      default "0x400000"
-+      help
-+        Total size in bytes of the RDC-3210 flash device
-+
-+config MTD_RDC3210_BUSWIDTH
-+      int "Width of CFI Flash device mapped on RDC3210"
-+      depends on MTD_RDC3210
-+      default "2"
-+      help
-+        Number of bytes addressed on the RDC-3210 flash device before
-+        addressing the same chip again
-+
- config MTD_SC520CDP
-       tristate "CFI Flash device mapped on AMD SC520 CDP"
-       depends on X86 && MTD_CFI && MTD_CONCAT
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -29,6 +29,7 @@
- obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
- obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
- obj-$(CONFIG_MTD_PCMCIA)      += pcmciamtd.o
-+obj-$(CONFIG_MTD_RDC3210)     += rdc3210.o
- obj-$(CONFIG_MTD_RPXLITE)     += rpxlite.o
- obj-$(CONFIG_MTD_TQM8XXL)     += tqm8xxl.o
- obj-$(CONFIG_MTD_SA1100)      += sa1100-flash.o
diff --git a/target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch b/target/linux/rdc/patches-2.6.27/002-cmdline_setup.patch
deleted file mode 100644 (file)
index ee36576..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/x86/kernel/setup.c  2009-04-24 11:37:41.000000000 +0200
-+++ b/arch/x86/kernel/setup.c  2009-04-24 11:38:43.000000000 +0200
-@@ -701,6 +701,7 @@
-       bss_resource.start = virt_to_phys(&__bss_start);
-       bss_resource.end = virt_to_phys(&__bss_stop)-1;
-+      strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
-       strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
-       *cmdline_p = command_line;
diff --git a/target/linux/rdc/patches-2.6.27/003-rootfstype.patch b/target/linux/rdc/patches-2.6.27/003-rootfstype.patch
deleted file mode 100644 (file)
index 55a4cd4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -163,6 +163,8 @@
- {
-       char *s = page;
-+      if (!root_fs_names)
-+              root_fs_names = "squashfs,jffs2";
-       if (root_fs_names) {
-               strcpy(page, root_fs_names);
-               while (*s++) {
diff --git a/target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch b/target/linux/rdc/patches-2.6.27/004-yenta_mystery.patch
deleted file mode 100644 (file)
index 7faabdf..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c  2008-10-26 08:30:07.000000000 -0700
-+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c       2008-10-26 08:54:27.000000000 -0700
-@@ -1171,6 +1171,17 @@
-       /* We must finish initialization here */
-+#ifdef CONFIG_X86_RDC
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
-+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
-+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
-+
-+      config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
-+      config_writel(socket, 35*4, 0x00000022);
-+      config_writel(socket, 36*4, 0x60200000);
-+      config_writel(socket, 40*4, 0x7e020000);
-+#endif
-+
-       if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
-               /* No IRQ or request_irq failed. Poll */
-               socket->cb_irq = 0; /* But zero is a valid IRQ number. */
diff --git a/target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch b/target/linux/rdc/patches-2.6.27/005-fix_amit_breakage.patch
deleted file mode 100644 (file)
index eabfd04..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
---- linux-2.6.24.7.orig/arch/x86/boot/boot.h   2008-10-26 20:18:14.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/boot.h        2008-10-26 20:18:36.000000000 -0700
-@@ -60,7 +60,7 @@
- {
-       asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
- }
--static inline u32 inl(u32 port)
-+static inline u32 inl(u16 port)
- {
-       u32 v;
-       asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
-diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
---- linux-2.6.24.7.orig/arch/x86/boot/pm.c     2008-10-26 19:55:50.000000000 -0700
-+++ linux-2.6.24.7/arch/x86/boot/pm.c  2008-10-26 21:38:12.000000000 -0700
-@@ -16,6 +16,9 @@
- #include "boot.h"
- #include <asm/segment.h>
-+#ifdef CONFIG_X86_RDC
-+#include <asm/mach-rdc/rdc321x_defs.h>
-+#endif
- /*
-  * Invoke the realmode switch hook if present; otherwise
-@@ -160,6 +163,16 @@
-               die();
-       }
-+#ifdef CONFIG_X86_RDC
-+      {
-+              u32 bootctl;
-+
-+              outl(0x80003840, RDC3210_CFGREG_ADDR);
-+              bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
-+              outl(bootctl, RDC3210_CFGREG_DATA);
-+      }
-+#endif
-+
-       /* Reset coprocessor (IGNNE#) */
-       reset_coprocessor();
diff --git a/target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch b/target/linux/rdc/patches-2.6.27/006-bzip2_lzma_x86.patch
deleted file mode 100644 (file)
index f11693f..0000000
+++ /dev/null
@@ -1,3139 +0,0 @@
-diff -purN linux-2.6.27.6/arch/arm/boot/compressed/Makefile linux-2.6.27.6udpcast/arch/arm/boot/compressed/Makefile
---- linux-2.6.27.6/arch/arm/boot/compressed/Makefile   2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/arm/boot/compressed/Makefile    2008-11-16 23:02:55.000000000 +0100
-@@ -67,8 +67,15 @@ endif
- SEDFLAGS      = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
--targets       := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \
--               head.o misc.o $(OBJS)
-+suffix_$(CONFIG_KERNEL_GZIP)  = gz
-+suffix_$(CONFIG_KERNEL_BZIP2) = bz2
-+suffix_$(CONFIG_KERNEL_LZMA)  = lzma
-+
-+targets       := vmlinux vmlinux.lds \
-+               piggy.gz piggy.gz.o \
-+               piggy.bz2 piggy.bz2.o \
-+               piggy.lzma piggy.lzma.o \
-+               font.o font.c head.o misc.o $(OBJS)
- ifeq ($(CONFIG_FTRACE),y)
- ORIG_CFLAGS := $(KBUILD_CFLAGS)
-@@ -95,7 +102,7 @@ LDFLAGS_vmlinux += -p --no-undefined -X 
- # would otherwise mess up our GOT table
- CFLAGS_misc.o := -Dstatic=
--$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
-+$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
-               $(addprefix $(obj)/, $(OBJS)) FORCE
-       $(call if_changed,ld)
-       @:
-@@ -103,7 +110,17 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj
- $(obj)/piggy.gz: $(obj)/../Image FORCE
-       $(call if_changed,gzip)
--$(obj)/piggy.o:  $(obj)/piggy.gz FORCE
-+$(obj)/piggy.bz2: $(obj)/../Image FORCE
-+      $(call if_changed,bzip2)
-+
-+$(obj)/piggy.lzma: $(obj)/../Image FORCE
-+      $(call if_changed,lzma)
-+
-+$(obj)/piggy.gz.o:  $(obj)/piggy.gz FORCE
-+
-+$(obj)/piggy.bz2.o:  $(obj)/piggy.bz2 FORCE
-+
-+$(obj)/piggy.lzma.o:  $(obj)/piggy.lzma FORCE
- CFLAGS_font.o := -Dstatic=
-diff -purN linux-2.6.27.6/arch/arm/boot/compressed/misc.c linux-2.6.27.6udpcast/arch/arm/boot/compressed/misc.c
---- linux-2.6.27.6/arch/arm/boot/compressed/misc.c     2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/arm/boot/compressed/misc.c      2008-11-16 23:02:55.000000000 +0100
-@@ -169,116 +169,34 @@ static inline __ptr_t memcpy(__ptr_t __d
- /*
-  * gzip delarations
-  */
--#define OF(args)  args
- #define STATIC static
--typedef unsigned char  uch;
--typedef unsigned short ush;
- typedef unsigned long  ulg;
--#define WSIZE 0x8000          /* Window size must be at least 32k, */
--                              /* and a power of two */
--
--static uch *inbuf;            /* input buffer */
--static uch window[WSIZE];     /* Sliding window buffer */
--
--static unsigned insize;               /* valid bytes in inbuf */
--static unsigned inptr;                /* index of next byte to be processed in inbuf */
--static unsigned outcnt;               /* bytes in output buffer */
--
--/* gzip flag byte */
--#define ASCII_FLAG   0x01 /* bit 0 set: file probably ascii text */
--#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */
--#define EXTRA_FIELD  0x04 /* bit 2 set: extra field present */
--#define ORIG_NAME    0x08 /* bit 3 set: original file name present */
--#define COMMENT      0x10 /* bit 4 set: file comment present */
--#define ENCRYPTED    0x20 /* bit 5 set: file is encrypted */
--#define RESERVED     0xC0 /* bit 6,7:   reserved */
--
--#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
--
--/* Diagnostic functions */
--#ifdef DEBUG
--#  define Assert(cond,msg) {if(!(cond)) error(msg);}
--#  define Trace(x) fprintf x
--#  define Tracev(x) {if (verbose) fprintf x ;}
--#  define Tracevv(x) {if (verbose>1) fprintf x ;}
--#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
--#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
--#else
--#  define Assert(cond,msg)
--#  define Trace(x)
--#  define Tracev(x)
--#  define Tracevv(x)
--#  define Tracec(c,x)
--#  define Tracecv(c,x)
--#endif
--
--static int  fill_inbuf(void);
--static void flush_window(void);
--static void error(char *m);
--
- extern char input_data[];
- extern char input_data_end[];
--static uch *output_data;
--static ulg output_ptr;
--static ulg bytes_out;
--
- static void error(char *m);
--static void putstr(const char *);
--
--extern int end;
- static ulg free_mem_ptr;
- static ulg free_mem_end_ptr;
--#ifdef STANDALONE_DEBUG
--#define NO_INFLATE_MALLOC
--#endif
--
- #define ARCH_HAS_DECOMP_WDOG
-+#define NEW_CODE
-+#ifdef CONFIG_KERNEL_GZIP
- #include "../../../../lib/inflate.c"
-+#endif
--/* ===========================================================================
-- * Fill the input buffer. This is called only when the buffer is empty
-- * and at least one byte is really needed.
-- */
--int fill_inbuf(void)
--{
--      if (insize != 0)
--              error("ran out of input data");
-+#ifdef CONFIG_KERNEL_BZIP2
-+#include "../../../../lib/decompress_bunzip2.c"
-+#endif
--      inbuf = input_data;
--      insize = &input_data_end[0] - &input_data[0];
-+#ifdef CONFIG_KERNEL_LZMA
-+#include "../../../../lib/decompress_unlzma.c"
-+#endif
--      inptr = 1;
--      return inbuf[0];
--}
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--void flush_window(void)
--{
--      ulg c = crc;
--      unsigned n;
--      uch *in, *out, ch;
--
--      in = window;
--      out = &output_data[output_ptr];
--      for (n = 0; n < outcnt; n++) {
--              ch = *out++ = *in++;
--              c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--      }
--      crc = c;
--      bytes_out += (ulg)outcnt;
--      output_ptr += (ulg)outcnt;
--      outcnt = 0;
--      putstr(".");
--}
- #ifndef arch_error
- #define arch_error(x)
-@@ -301,16 +219,24 @@ ulg
- decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p,
-                 int arch_id)
- {
--      output_data             = (uch *)output_start;  /* Points to kernel start */
--      free_mem_ptr            = free_mem_ptr_p;
--      free_mem_end_ptr        = free_mem_ptr_end_p;
-+      ulg output_ptr;
-+      ulg *ptr;
-+      size_t input_len        = input_data_end - input_data;
-+      size_t pos              = 0;
-+
-       __machine_arch_type     = arch_id;
-       arch_decomp_setup();
--      makecrc();
--      putstr("Uncompressing Linux...");
--      gunzip();
-+      ptr = (ulg *) (((long)input_data_end) - 4);
-+      output_ptr = output_start +  *ptr;
-+
-+      free_mem_ptr            = output_ptr;
-+      free_mem_end_ptr        = output_ptr + 0x4000000;
-+
-+      putstr("Decompressing Linux...");
-+      decompress(input_data, input_len,
-+                 NULL, NULL, (unsigned char *) output_start, &pos, error);
-       putstr(" done, booting the kernel.\n");
-       return output_ptr;
- }
-@@ -320,11 +246,8 @@ char output_buffer[1500*1024];
- int main()
- {
--      output_data = output_buffer;
--
--      makecrc();
-       putstr("Uncompressing Linux...");
--      gunzip();
-+      decompress(input_data, input_len, NULL, output_buffer, NULL);
-       putstr("done.\n");
-       return 0;
- }
-diff -purN linux-2.6.27.6/arch/x86/boot/compressed/Makefile linux-2.6.27.6udpcast/arch/x86/boot/compressed/Makefile
---- linux-2.6.27.6/arch/x86/boot/compressed/Makefile   2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/x86/boot/compressed/Makefile    2008-11-16 23:42:51.000000000 +0100
-@@ -4,7 +4,7 @@
- # create a compressed vmlinux image from the original vmlinux
- #
--targets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc.o piggy.o
-+targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head_$(BITS).o misc.o piggy.o
- KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
- KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
-@@ -46,9 +46,17 @@ $(obj)/vmlinux.bin.all: $(vmlinux.bin.al
- ifdef CONFIG_RELOCATABLE
- $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
-       $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin.all FORCE
-+      $(call if_changed,bzip2)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE
-+      $(call if_changed,lzma)
- else
- $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
-       $(call if_changed,gzip)
-+$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
-+      $(call if_changed,bzip2)
-+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
-+      $(call if_changed,lzma)
- endif
- LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
-@@ -59,6 +67,9 @@ $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bi
- LDFLAGS_piggy.o := -r --format binary --oformat elf64-x86-64 -T
- endif
-+suffix_$(CONFIG_KERNEL_GZIP)  = gz
-+suffix_$(CONFIG_KERNEL_BZIP2) = bz2
-+suffix_$(CONFIG_KERNEL_LZMA)  = lzma
--$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
-+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE
-       $(call if_changed,ld)
-diff -purN linux-2.6.27.6/arch/x86/boot/compressed/misc.c linux-2.6.27.6udpcast/arch/x86/boot/compressed/misc.c
---- linux-2.6.27.6/arch/x86/boot/compressed/misc.c     2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/arch/x86/boot/compressed/misc.c      2008-11-16 23:02:55.000000000 +0100
-@@ -116,71 +116,13 @@
- /*
-  * gzip declarations
-  */
--
--#define OF(args)      args
- #define STATIC                static
- #undef memset
- #undef memcpy
- #define memzero(s, n) memset((s), 0, (n))
--typedef unsigned char uch;
--typedef unsigned short        ush;
--typedef unsigned long ulg;
--
--/*
-- * Window size must be at least 32k, and a power of two.
-- * We don't actually have a window just a huge output buffer,
-- * so we report a 2G window size, as that should always be
-- * larger than our output buffer:
-- */
--#define WSIZE         0x80000000
--/* Input buffer: */
--static unsigned char  *inbuf;
--
--/* Sliding window buffer (and final output buffer): */
--static unsigned char  *window;
--
--/* Valid bytes in inbuf: */
--static unsigned               insize;
--
--/* Index of next byte to be processed in inbuf: */
--static unsigned               inptr;
--
--/* Bytes in output buffer: */
--static unsigned               outcnt;
--
--/* gzip flag byte */
--#define ASCII_FLAG    0x01 /* bit 0 set: file probably ASCII text */
--#define CONTINUATION  0x02 /* bit 1 set: continuation of multi-part gz file */
--#define EXTRA_FIELD   0x04 /* bit 2 set: extra field present */
--#define ORIG_NAM      0x08 /* bit 3 set: original file name present */
--#define COMMENT               0x10 /* bit 4 set: file comment present */
--#define ENCRYPTED     0x20 /* bit 5 set: file is encrypted */
--#define RESERVED      0xC0 /* bit 6, 7:  reserved */
--
--#define get_byte()    (inptr < insize ? inbuf[inptr++] : fill_inbuf())
--
--/* Diagnostic functions */
--#ifdef DEBUG
--#  define Assert(cond, msg) do { if (!(cond)) error(msg); } while (0)
--#  define Trace(x)    do { fprintf x; } while (0)
--#  define Tracev(x)   do { if (verbose) fprintf x ; } while (0)
--#  define Tracevv(x)  do { if (verbose > 1) fprintf x ; } while (0)
--#  define Tracec(c, x)        do { if (verbose && (c)) fprintf x ; } while (0)
--#  define Tracecv(c, x)       do { if (verbose > 1 && (c)) fprintf x ; } while (0)
--#else
--#  define Assert(cond, msg)
--#  define Trace(x)
--#  define Tracev(x)
--#  define Tracevv(x)
--#  define Tracec(c, x)
--#  define Tracecv(c, x)
--#endif
--
--static int  fill_inbuf(void);
--static void flush_window(void);
- static void error(char *m);
- /*
-@@ -189,11 +131,6 @@ static void error(char *m);
- static struct boot_params *real_mode;         /* Pointer to real-mode data */
- static int quiet;
--extern unsigned char input_data[];
--extern int input_len;
--
--static long bytes_out;
--
- static void *memset(void *s, int c, unsigned n);
- static void *memcpy(void *dest, const void *src, unsigned n);
-@@ -213,7 +150,19 @@ static char *vidmem;
- static int vidport;
- static int lines, cols;
-+#define NEW_CODE
-+
-+#ifdef CONFIG_KERNEL_GZIP
- #include "../../../../lib/inflate.c"
-+#endif
-+
-+#ifdef CONFIG_KERNEL_BZIP2
-+#include "../../../../lib/decompress_bunzip2.c"
-+#endif
-+
-+#ifdef CONFIG_KERNEL_LZMA
-+#include "../../../../lib/decompress_unlzma.c"
-+#endif
- static void scroll(void)
- {
-@@ -291,38 +240,6 @@ static void *memcpy(void *dest, const vo
-       return dest;
- }
--/* ===========================================================================
-- * Fill the input buffer. This is called only when the buffer is empty
-- * and at least one byte is really needed.
-- */
--static int fill_inbuf(void)
--{
--      error("ran out of input data");
--      return 0;
--}
--
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void flush_window(void)
--{
--      /* With my window equal to my output buffer
--       * I only need to compute the crc here.
--       */
--      unsigned long c = crc;         /* temporary variable */
--      unsigned n;
--      unsigned char *in, ch;
--
--      in = window;
--      for (n = 0; n < outcnt; n++) {
--              ch = *in++;
--              c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--      }
--      crc = c;
--      bytes_out += (unsigned long)outcnt;
--      outcnt = 0;
--}
- static void error(char *x)
- {
-@@ -405,12 +322,8 @@ asmlinkage void decompress_kernel(void *
-       lines = real_mode->screen_info.orig_video_lines;
-       cols = real_mode->screen_info.orig_video_cols;
--      window = output;                /* Output buffer (Normally at 1M) */
-       free_mem_ptr     = heap;        /* Heap */
-       free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
--      inbuf  = input_data;            /* Input buffer */
--      insize = input_len;
--      inptr  = 0;
- #ifdef CONFIG_X86_64
-       if ((unsigned long)output & (__KERNEL_ALIGN - 1))
-@@ -428,10 +341,9 @@ asmlinkage void decompress_kernel(void *
- #endif
- #endif
--      makecrc();
-       if (!quiet)
-               putstr("\nDecompressing Linux... ");
--      gunzip();
-+      decompress(input_data, input_len, NULL, NULL, output, NULL, error);
-       parse_elf(output);
-       if (!quiet)
-               putstr("done.\nBooting the kernel.\n");
-diff -purN linux-2.6.27.6/drivers/block/Kconfig linux-2.6.27.6udpcast/drivers/block/Kconfig
---- linux-2.6.27.6/drivers/block/Kconfig       2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/drivers/block/Kconfig        2008-11-16 23:02:55.000000000 +0100
-@@ -357,6 +357,30 @@ config BLK_DEV_XIP
-         will prevent RAM block device backing store memory from being
-         allocated from highmem (only a problem for highmem systems).
-+config RD_BZIP2
-+      bool "Initial ramdisk compressed using bzip2"
-+      default n
-+      depends on BLK_DEV_INITRD=y
-+      help
-+        Support loading of a bzip2 encoded initial ramdisk or cpio buffer
-+        If unsure, say N.
-+
-+config RD_LZMA
-+      bool "Initial ramdisk compressed using lzma"
-+      default n
-+      depends on BLK_DEV_INITRD=y
-+      help
-+        Support loading of a lzma encoded initial ramdisk or cpio buffer
-+        If unsure, say N.
-+
-+config RD_GZIP
-+      bool "Initial ramdisk compressed using gzip"
-+      default y
-+      depends on BLK_DEV_INITRD=y
-+      help
-+        Support loading of a gzip encoded initial ramdisk or cpio buffer.
-+        If unsure, say Y.
-+
- config CDROM_PKTCDVD
-       tristate "Packet writing on CD/DVD media"
-       depends on !UML
-diff -purN linux-2.6.27.6/include/asm-x86/boot.h linux-2.6.27.6udpcast/include/asm-x86/boot.h
---- linux-2.6.27.6/include/asm-x86/boot.h      2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/asm-x86/boot.h       2008-11-16 23:02:55.000000000 +0100
-@@ -17,11 +17,21 @@
-                               + (CONFIG_PHYSICAL_ALIGN - 1)) \
-                               & ~(CONFIG_PHYSICAL_ALIGN - 1))
-+#if (defined CONFIG_KERNEL_BZIP2)
-+#define BOOT_HEAP_SIZE             0x400000
-+#else
-+
- #ifdef CONFIG_X86_64
- #define BOOT_HEAP_SIZE        0x7000
--#define BOOT_STACK_SIZE       0x4000
- #else
- #define BOOT_HEAP_SIZE        0x4000
-+#endif
-+
-+#endif
-+
-+#ifdef CONFIG_X86_64
-+#define BOOT_STACK_SIZE       0x4000
-+#else
- #define BOOT_STACK_SIZE       0x1000
- #endif
-diff -purN linux-2.6.27.6/include/linux/decompress/bunzip2.h linux-2.6.27.6udpcast/include/linux/decompress/bunzip2.h
---- linux-2.6.27.6/include/linux/decompress/bunzip2.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/bunzip2.h   2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,10 @@
-+#ifndef DECOMPRESS_BUNZIP2_H
-+#define DECOMPRESS_BUNZIP2_H
-+
-+int bunzip2(unsigned char *inbuf, int len,
-+          int(*fill)(void*, unsigned int),
-+          int(*flush)(void*, unsigned int),
-+          unsigned char *output,
-+          int *pos,
-+          void(*error)(char *x));
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/generic.h linux-2.6.27.6udpcast/include/linux/decompress/generic.h
---- linux-2.6.27.6/include/linux/decompress/generic.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/generic.h   2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,30 @@
-+#ifndef DECOMPRESS_GENERIC_H
-+#define DECOMPRESS_GENERIC_H
-+
-+/* Minimal chunksize to be read.
-+ *Bzip2 prefers at least 4096
-+ *Lzma prefers 0x10000 */
-+#define COMPR_IOBUF_SIZE      4096
-+
-+typedef int (*decompress_fn) (unsigned char *inbuf, int len,
-+                            int(*fill)(void*, unsigned int),
-+                            int(*writebb)(void*, unsigned int),
-+                            unsigned char *output,
-+                            int *posp,
-+                            void(*error)(char *x));
-+
-+/* inbuf   - input buffer
-+ *len     - len of pre-read data in inbuf
-+ *fill    - function to fill inbuf if empty
-+ *writebb - function to write out outbug
-+ *posp    - if non-null, input position (number of bytes read) will be
-+ *      returned here
-+ *
-+ *If len != 0, the inbuf is initialized (with as much data), and fill
-+ *should not be called
-+ *If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE
-+ *fill should be called (repeatedly...) to read data, at most IOBUF_SIZE
-+ */
-+
-+
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/inflate.h linux-2.6.27.6udpcast/include/linux/decompress/inflate.h
---- linux-2.6.27.6/include/linux/decompress/inflate.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/inflate.h   2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,13 @@
-+#ifndef INFLATE_H
-+#define INFLATE_H
-+
-+/* Other housekeeping constants */
-+#define INBUFSIZ 4096
-+
-+int gunzip(unsigned char *inbuf, int len,
-+         int(*fill)(void*, unsigned int),
-+         int(*flush)(void*, unsigned int),
-+         unsigned char *output,
-+         int *pos,
-+         void(*error_fn)(char *x));
-+#endif
-diff -purN linux-2.6.27.6/include/linux/decompress/mm.h linux-2.6.27.6udpcast/include/linux/decompress/mm.h
---- linux-2.6.27.6/include/linux/decompress/mm.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/mm.h        2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,89 @@
-+/*
-+ * linux/compr_mm.h
-+ *
-+ * Memory management for pre-boot and ramdisk uncompressors
-+ *
-+ * Authors: Alain Knaff <alain@knaff.lu>
-+ *
-+ */
-+
-+#ifndef DECOMPR_MM_H
-+#define DECOMPR_MM_H
-+
-+#ifdef STATIC
-+
-+/* Code active when included from pre-boot environment: */
-+
-+/* A trivial malloc implementation, adapted from
-+ *  malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
-+ */
-+static unsigned long malloc_ptr;
-+static int malloc_count;
-+
-+static void *malloc(int size)
-+{
-+      void *p;
-+
-+      if (size < 0)
-+              error("Malloc error");
-+      if (!malloc_ptr)
-+              malloc_ptr = free_mem_ptr;
-+
-+      malloc_ptr = (malloc_ptr + 3) & ~3;     /* Align */
-+
-+      p = (void *)malloc_ptr;
-+      malloc_ptr += size;
-+
-+      if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
-+              error("Out of memory");
-+
-+      malloc_count++;
-+      return p;
-+}
-+
-+static void free(void *where)
-+{
-+      malloc_count--;
-+      if (!malloc_count)
-+              malloc_ptr = free_mem_ptr;
-+}
-+
-+#define large_malloc(a) malloc(a)
-+#define large_free(a) free(a)
-+
-+#define set_error_fn(x)
-+#define panic error
-+
-+#define INIT
-+
-+#else /* STATIC */
-+
-+/* Code active when compiled standalone for use when loading ramdisk: */
-+
-+#include <linux/kernel.h>
-+#include <linux/fs.h>
-+#include <linux/string.h>
-+#include <linux/vmalloc.h>
-+
-+/* Use defines rather than static inline in order to avoid spurious
-+ * warnings when not needed (indeed large_malloc / large_free are not
-+ * needed by inflate */
-+
-+#define malloc(a) kmalloc(a, GFP_KERNEL)
-+#define free(a) kfree(a)
-+
-+#define large_malloc(a) vmalloc(a)
-+#define large_free(a) vfree(a)
-+
-+static void(*error)(char *m);
-+#define set_error_fn(x) error = x;
-+#define NEW_CODE
-+
-+#define INIT __init
-+#define STATIC
-+
-+#include <linux/init.h>
-+
-+#endif /* STATIC */
-+
-+#endif /* DECOMPR_MM_H */
-diff -purN linux-2.6.27.6/include/linux/decompress/unlzma.h linux-2.6.27.6udpcast/include/linux/decompress/unlzma.h
---- linux-2.6.27.6/include/linux/decompress/unlzma.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/include/linux/decompress/unlzma.h    2008-11-16 23:34:15.000000000 +0100
-@@ -0,0 +1,12 @@
-+#ifndef DECOMPRESS_UNLZMA_H
-+#define DECOMPRESS_UNLZMA_H
-+
-+int unlzma(unsigned char *, int,
-+         int(*fill)(void*, unsigned int),
-+         int(*flush)(void*, unsigned int),
-+         unsigned char *output,
-+         int *posp,
-+         void(*error)(char *x)
-+      );
-+
-+#endif
-diff -purN linux-2.6.27.6/init/do_mounts_rd.c linux-2.6.27.6udpcast/init/do_mounts_rd.c
---- linux-2.6.27.6/init/do_mounts_rd.c 2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/do_mounts_rd.c  2008-11-16 23:02:55.000000000 +0100
-@@ -10,6 +10,12 @@
- #include "do_mounts.h"
-+#include <linux/decompress/generic.h>
-+
-+#include <linux/decompress/bunzip2.h>
-+#include <linux/decompress/unlzma.h>
-+#include <linux/decompress/inflate.h>
-+
- int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
- static int __init prompt_ramdisk(char *str)
-@@ -28,7 +34,7 @@ static int __init ramdisk_start_setup(ch
- }
- __setup("ramdisk_start=", ramdisk_start_setup);
--static int __init crd_load(int in_fd, int out_fd);
-+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco);
- /*
-  * This routine tries to find a RAM disk image to load, and returns the
-@@ -44,7 +50,7 @@ static int __init crd_load(int in_fd, in
-  *    gzip
-  */
- static int __init 
--identify_ramdisk_image(int fd, int start_block)
-+identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
- {
-       const int size = 512;
-       struct minix_super_block *minixsb;
-@@ -70,6 +76,7 @@ identify_ramdisk_image(int fd, int start
-       sys_lseek(fd, start_block * BLOCK_SIZE, 0);
-       sys_read(fd, buf, size);
-+#ifdef CONFIG_RD_GZIP
-       /*
-        * If it matches the gzip magic numbers, return -1
-        */
-@@ -77,9 +84,39 @@ identify_ramdisk_image(int fd, int start
-               printk(KERN_NOTICE
-                      "RAMDISK: Compressed image found at block %d\n",
-                      start_block);
-+              *decompressor = gunzip;
-+              nblocks = 0;
-+              goto done;
-+      }
-+#endif
-+
-+#ifdef CONFIG_RD_BZIP2
-+      /*
-+       * If it matches the bzip2 magic numbers, return -1
-+       */
-+      if (buf[0] == 0x42 && (buf[1] == 0x5a)) {
-+              printk(KERN_NOTICE
-+                     "RAMDISK: Bzipped image found at block %d\n",
-+                     start_block);
-+              *decompressor = bunzip2;
-               nblocks = 0;
-               goto done;
-       }
-+#endif
-+
-+#ifdef CONFIG_RD_LZMA
-+      /*
-+       * If it matches the lzma magic numbers, return -1
-+       */
-+      if (buf[0] == 0x5d && (buf[1] == 0x00)) {
-+              printk(KERN_NOTICE
-+                     "RAMDISK: Lzma image found at block %d\n",
-+                     start_block);
-+              *decompressor = unlzma;
-+              nblocks = 0;
-+              goto done;
-+      }
-+#endif
-       /* romfs is at block zero too */
-       if (romfsb->word0 == ROMSB_WORD0 &&
-@@ -143,6 +180,7 @@ int __init rd_load_image(char *from)
-       int nblocks, i, disk;
-       char *buf = NULL;
-       unsigned short rotate = 0;
-+      decompress_fn decompressor = NULL;
- #if !defined(CONFIG_S390) && !defined(CONFIG_PPC_ISERIES)
-       char rotator[4] = { '|' , '/' , '-' , '\\' };
- #endif
-@@ -155,12 +193,12 @@ int __init rd_load_image(char *from)
-       if (in_fd < 0)
-               goto noclose_input;
--      nblocks = identify_ramdisk_image(in_fd, rd_image_start);
-+      nblocks = identify_ramdisk_image(in_fd, rd_image_start, &decompressor);
-       if (nblocks < 0)
-               goto done;
-       if (nblocks == 0) {
--              if (crd_load(in_fd, out_fd) == 0)
-+              if (crd_load(in_fd, out_fd, decompressor) == 0)
-                       goto successful_load;
-               goto done;
-       }
-@@ -259,138 +297,48 @@ int __init rd_load_disk(int n)
-       return rd_load_image("/dev/root");
- }
--/*
-- * gzip declarations
-- */
--
--#define OF(args)  args
--
--#ifndef memzero
--#define memzero(s, n)     memset ((s), 0, (n))
--#endif
--
--typedef unsigned char  uch;
--typedef unsigned short ush;
--typedef unsigned long  ulg;
--
--#define INBUFSIZ 4096
--#define WSIZE 0x8000    /* window size--must be a power of two, and */
--                      /*  at least 32K for zip's deflate method */
--
--static uch *inbuf;
--static uch *window;
--
--static unsigned insize;  /* valid bytes in inbuf */
--static unsigned inptr;   /* index of next byte to be processed in inbuf */
--static unsigned outcnt;  /* bytes in output buffer */
- static int exit_code;
--static int unzip_error;
--static long bytes_out;
-+static int decompress_error;
- static int crd_infd, crd_outfd;
--#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
--              
--/* Diagnostic functions (stubbed out) */
--#define Assert(cond,msg)
--#define Trace(x)
--#define Tracev(x)
--#define Tracevv(x)
--#define Tracec(c,x)
--#define Tracecv(c,x)
--
--#define STATIC static
--#define INIT __init
--
--static int  __init fill_inbuf(void);
--static void __init flush_window(void);
--static void __init error(char *m);
--
--#define NO_INFLATE_MALLOC
--
--#include "../lib/inflate.c"
--
--/* ===========================================================================
-- * Fill the input buffer. This is called only when the buffer is empty
-- * and at least one byte is really needed.
-- * Returning -1 does not guarantee that gunzip() will ever return.
-- */
--static int __init fill_inbuf(void)
-+static int __init compr_fill(void *buf, unsigned int len)
- {
--      if (exit_code) return -1;
--      
--      insize = sys_read(crd_infd, inbuf, INBUFSIZ);
--      if (insize == 0) {
--              error("RAMDISK: ran out of compressed data");
--              return -1;
--      }
--
--      inptr = 1;
--
--      return inbuf[0];
-+      int r = sys_read(crd_infd, buf, len);
-+      if (r < 0)
-+              printk(KERN_ERR "RAMDISK: error while reading compressed data");
-+      else if (r == 0)
-+              printk(KERN_ERR "RAMDISK: EOF while reading compressed data");
-+      return r;
- }
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void __init flush_window(void)
-+static int __init compr_flush(void *window, unsigned int outcnt)
- {
--    ulg c = crc;         /* temporary variable */
--    unsigned n, written;
--    uch *in, ch;
--    
--    written = sys_write(crd_outfd, window, outcnt);
--    if (written != outcnt && unzip_error == 0) {
--      printk(KERN_ERR "RAMDISK: incomplete write (%d != %d) %ld\n",
--             written, outcnt, bytes_out);
--      unzip_error = 1;
--    }
--    in = window;
--    for (n = 0; n < outcnt; n++) {
--          ch = *in++;
--          c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--    }
--    crc = c;
--    bytes_out += (ulg)outcnt;
--    outcnt = 0;
-+      int written = sys_write(crd_outfd, window, outcnt);
-+      if (written != outcnt) {
-+              if (decompress_error == 0)
-+                      printk(KERN_ERR
-+                             "RAMDISK: incomplete write (%d != %d)\n",
-+                             written, outcnt);
-+              decompress_error = 1;
-+              return -1;
-+      }
-+      return outcnt;
- }
- static void __init error(char *x)
- {
-       printk(KERN_ERR "%s\n", x);
-       exit_code = 1;
--      unzip_error = 1;
-+      decompress_error = 1;
- }
--static int __init crd_load(int in_fd, int out_fd)
-+static int __init crd_load(int in_fd, int out_fd, decompress_fn deco)
- {
-       int result;
--
--      insize = 0;             /* valid bytes in inbuf */
--      inptr = 0;              /* index of next byte to be processed in inbuf */
--      outcnt = 0;             /* bytes in output buffer */
--      exit_code = 0;
--      bytes_out = 0;
--      crc = (ulg)0xffffffffL; /* shift register contents */
--
-       crd_infd = in_fd;
-       crd_outfd = out_fd;
--      inbuf = kmalloc(INBUFSIZ, GFP_KERNEL);
--      if (!inbuf) {
--              printk(KERN_ERR "RAMDISK: Couldn't allocate gzip buffer\n");
--              return -1;
--      }
--      window = kmalloc(WSIZE, GFP_KERNEL);
--      if (!window) {
--              printk(KERN_ERR "RAMDISK: Couldn't allocate gzip window\n");
--              kfree(inbuf);
--              return -1;
--      }
--      makecrc();
--      result = gunzip();
--      if (unzip_error)
-+      result = deco(NULL, 0, compr_fill, compr_flush, NULL, NULL, error);
-+      if (decompress_error)
-               result = 1;
--      kfree(inbuf);
--      kfree(window);
-       return result;
- }
-diff -purN linux-2.6.27.6/init/initramfs.c linux-2.6.27.6udpcast/init/initramfs.c
---- linux-2.6.27.6/init/initramfs.c    2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/initramfs.c     2008-11-16 23:02:55.000000000 +0100
-@@ -337,11 +337,14 @@ static int __init write_buffer(char *buf
-       return len - count;
- }
--static void __init flush_buffer(char *buf, unsigned len)
-+
-+static int __init flush_buffer(void *bufv, unsigned len)
- {
-+      char *buf = (char *) bufv;
-       int written;
-+      int origLen = len;
-       if (message)
--              return;
-+              return -1;
-       while ((written = write_buffer(buf, len)) < len && !message) {
-               char c = buf[written];
-               if (c == '0') {
-@@ -355,73 +358,14 @@ static void __init flush_buffer(char *bu
-               } else
-                       error("junk in compressed archive");
-       }
-+      return origLen;
- }
--/*
-- * gzip declarations
-- */
--
--#define OF(args)  args
--
--#ifndef memzero
--#define memzero(s, n)     memset ((s), 0, (n))
--#endif
-+static unsigned my_inptr;   /* index of next byte to be processed in inbuf */
--typedef unsigned char  uch;
--typedef unsigned short ush;
--typedef unsigned long  ulg;
--
--#define WSIZE 0x8000    /* window size--must be a power of two, and */
--                      /*  at least 32K for zip's deflate method */
--
--static uch *inbuf;
--static uch *window;
--
--static unsigned insize;  /* valid bytes in inbuf */
--static unsigned inptr;   /* index of next byte to be processed in inbuf */
--static unsigned outcnt;  /* bytes in output buffer */
--static long bytes_out;
--
--#define get_byte()  (inptr < insize ? inbuf[inptr++] : -1)
--              
--/* Diagnostic functions (stubbed out) */
--#define Assert(cond,msg)
--#define Trace(x)
--#define Tracev(x)
--#define Tracevv(x)
--#define Tracec(c,x)
--#define Tracecv(c,x)
--
--#define STATIC static
--#define INIT __init
--
--static void __init flush_window(void);
--static void __init error(char *m);
--
--#define NO_INFLATE_MALLOC
--
--#include "../lib/inflate.c"
--
--/* ===========================================================================
-- * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-- * (Used for the decompressed data only.)
-- */
--static void __init flush_window(void)
--{
--      ulg c = crc;         /* temporary variable */
--      unsigned n;
--      uch *in, ch;
--
--      flush_buffer(window, outcnt);
--      in = window;
--      for (n = 0; n < outcnt; n++) {
--              ch = *in++;
--              c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
--      }
--      crc = c;
--      bytes_out += (ulg)outcnt;
--      outcnt = 0;
--}
-+#include <linux/decompress/bunzip2.h>
-+#include <linux/decompress/unlzma.h>
-+#include <linux/decompress/inflate.h>
- static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
- {
-@@ -430,9 +374,10 @@ static char * __init unpack_to_rootfs(ch
-       header_buf = kmalloc(110, GFP_KERNEL);
-       symlink_buf = kmalloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1, GFP_KERNEL);
-       name_buf = kmalloc(N_ALIGN(PATH_MAX), GFP_KERNEL);
--      window = kmalloc(WSIZE, GFP_KERNEL);
--      if (!window || !header_buf || !symlink_buf || !name_buf)
-+
-+      if (!header_buf || !symlink_buf || !name_buf)
-               panic("can't allocate buffers");
-+
-       state = Start;
-       this_header = 0;
-       message = NULL;
-@@ -452,21 +397,39 @@ static char * __init unpack_to_rootfs(ch
-                       continue;
-               }
-               this_header = 0;
--              insize = len;
--              inbuf = buf;
--              inptr = 0;
--              outcnt = 0;             /* bytes in output buffer */
--              bytes_out = 0;
--              crc = (ulg)0xffffffffL; /* shift register contents */
--              makecrc();
--              gunzip();
-+              if (!gunzip(buf, len, NULL, flush_buffer, NULL,
-+                          &my_inptr, error) &&
-+                  message == NULL)
-+                      goto ok;
-+
-+#ifdef CONFIG_RD_BZIP2
-+              message = NULL; /* Zero out message, or else cpio will
-+                                 think an error has already occured */
-+              if (!bunzip2(buf, len, NULL, flush_buffer, NULL,
-+                           &my_inptr, error) < 0
-+                  &&
-+                  message == NULL) {
-+                      goto ok;
-+              }
-+#endif
-+
-+#ifdef CONFIG_RD_LZMA
-+              message = NULL; /* Zero out message, or else cpio will
-+                                 think an error has already occured */
-+              if (!unlzma(buf, len, NULL, flush_buffer, NULL,
-+                          &my_inptr, error) < 0
-+                  &&
-+                  message == NULL) {
-+                      goto ok;
-+              }
-+#endif
-+ok:
-               if (state != Reset)
--                      error("junk in gzipped archive");
--              this_header = saved_offset + inptr;
--              buf += inptr;
--              len -= inptr;
-+                      error("junk in compressed archive");
-+              this_header = saved_offset + my_inptr;
-+              buf += my_inptr;
-+              len -= my_inptr;
-       }
--      kfree(window);
-       kfree(name_buf);
-       kfree(symlink_buf);
-       kfree(header_buf);
-diff -purN linux-2.6.27.6/init/Kconfig linux-2.6.27.6udpcast/init/Kconfig
---- linux-2.6.27.6/init/Kconfig        2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/init/Kconfig 2008-11-16 23:02:55.000000000 +0100
-@@ -101,6 +101,56 @@ config LOCALVERSION_AUTO
-         which is done within the script "scripts/setlocalversion".)
-+choice
-+        prompt "Kernel compression mode"
-+        default KERNEL_GZIP
-+        help
-+        The linux kernel is a kind of self-extracting executable.
-+        Several compression algorithms are available, which differ
-+        in efficiency, compression and decompression speed.
-+        Compression speed is only relevant when building a kernel.
-+        Decompression speed is relevant at each boot.
-+
-+        If you have any problems with bzip2 or lzma compressed
-+        kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
-+        version of this functionality (bzip2 only), for 2.4, was
-+        supplied by Christian Ludwig)
-+
-+        High compression options are mostly useful for users, who
-+        are low on disk space (embedded systems), but for whom ram
-+        size matters less.
-+
-+        If in doubt, select 'gzip'
-+
-+config KERNEL_GZIP
-+       bool "Gzip"
-+       help
-+         The old and tried gzip compression. Its compression ratio is
-+       the poorest among the 3 choices; however its speed (both
-+       compression and decompression) is the fastest.
-+
-+config KERNEL_BZIP2
-+      bool "Bzip2"
-+      help
-+        Its compression ratio and speed is intermediate.
-+        Decompression speed is slowest among the 3.
-+        The kernel size is about 10 per cent smaller with bzip2,
-+        in comparison to gzip.
-+        Bzip2 uses a large amount of memory. For modern kernels
-+        you will need at least 8MB RAM or more for booting.
-+
-+config KERNEL_LZMA
-+       bool "LZMA"
-+       help
-+         The most recent compression algorithm.
-+       Its ratio is best, decompression speed is between the other
-+       2. Compression is slowest.
-+       The kernel size is about 33 per cent smaller with lzma,
-+       in comparison to gzip.
-+
-+endchoice
-+
-+
- config SWAP
-       bool "Support for paging of anonymous memory (swap)"
-       depends on MMU && BLOCK
-diff -purN linux-2.6.27.6/lib/decompress_bunzip2.c linux-2.6.27.6udpcast/lib/decompress_bunzip2.c
---- linux-2.6.27.6/lib/decompress_bunzip2.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/decompress_bunzip2.c     2008-11-16 23:40:21.000000000 +0100
-@@ -0,0 +1,735 @@
-+/* vi: set sw = 4 ts = 4: */
-+/*    Small bzip2 deflate implementation, by Rob Landley (rob@landley.net).
-+
-+      Based on bzip2 decompression code by Julian R Seward (jseward@acm.org),
-+      which also acknowledges contributions by Mike Burrows, David Wheeler,
-+      Peter Fenwick, Alistair Moffat, Radford Neal, Ian H. Witten,
-+      Robert Sedgewick, and Jon L. Bentley.
-+
-+      This code is licensed under the LGPLv2:
-+              LGPL (http://www.gnu.org/copyleft/lgpl.html
-+*/
-+
-+/*
-+      Size and speed optimizations by Manuel Novoa III  (mjn3@codepoet.org).
-+
-+      More efficient reading of Huffman codes, a streamlined read_bunzip()
-+      function, and various other tweaks.  In (limited) tests, approximately
-+      20% faster than bzcat on x86 and about 10% faster on arm.
-+
-+      Note that about 2/3 of the time is spent in read_unzip() reversing
-+      the Burrows-Wheeler transformation.  Much of that time is delay
-+      resulting from cache misses.
-+
-+      I would ask that anyone benefiting from this work, especially those
-+      using it in commercial products, consider making a donation to my local
-+      non-profit hospice organization in the name of the woman I loved, who
-+      passed away Feb. 12, 2003.
-+
-+              In memory of Toni W. Hagan
-+
-+              Hospice of Acadiana, Inc.
-+              2600 Johnston St., Suite 200
-+              Lafayette, LA 70503-3240
-+
-+              Phone (337) 232-1234 or 1-800-738-2226
-+              Fax   (337) 232-1297
-+
-+              http://www.hospiceacadiana.com/
-+
-+      Manuel
-+ */
-+
-+/*
-+      Made it fit for running in Linux Kernel by Alain Knaff (alain@knaff.lu)
-+*/
-+
-+
-+#ifndef STATIC
-+#include <linux/decompress/bunzip2.h>
-+#endif /* !STATIC */
-+
-+#include <linux/decompress/mm.h>
-+
-+#ifndef INT_MAX
-+#define INT_MAX 0x7fffffff
-+#endif
-+
-+/* Constants for Huffman coding */
-+#define MAX_GROUPS            6
-+#define GROUP_SIZE            50      /* 64 would have been more efficient */
-+#define MAX_HUFCODE_BITS      20      /* Longest Huffman code allowed */
-+#define MAX_SYMBOLS           258     /* 256 literals + RUNA + RUNB */
-+#define SYMBOL_RUNA           0
-+#define SYMBOL_RUNB           1
-+
-+/* Status return values */
-+#define RETVAL_OK                     0
-+#define RETVAL_LAST_BLOCK             (-1)
-+#define RETVAL_NOT_BZIP_DATA          (-2)
-+#define RETVAL_UNEXPECTED_INPUT_EOF   (-3)
-+#define RETVAL_UNEXPECTED_OUTPUT_EOF  (-4)
-+#define RETVAL_DATA_ERROR             (-5)
-+#define RETVAL_OUT_OF_MEMORY          (-6)
-+#define RETVAL_OBSOLETE_INPUT         (-7)
-+
-+/* Other housekeeping constants */
-+#define BZIP2_IOBUF_SIZE              4096
-+
-+/* This is what we know about each Huffman coding group */
-+struct group_data {
-+      /* We have an extra slot at the end of limit[] for a sentinal value. */
-+      int limit[MAX_HUFCODE_BITS+1];
-+      int base[MAX_HUFCODE_BITS];
-+      int permute[MAX_SYMBOLS];
-+      int minLen, maxLen;
-+};
-+
-+/* Structure holding all the housekeeping data, including IO buffers and
-+   memory that persists between calls to bunzip */
-+struct bunzip_data {
-+      /* State for interrupting output loop */
-+      int writeCopies, writePos, writeRunCountdown, writeCount, writeCurrent;
-+      /* I/O tracking data (file handles, buffers, positions, etc.) */
-+      int (*fill)(void*, unsigned int);
-+      int inbufCount, inbufPos /*, outbufPos*/;
-+      unsigned char *inbuf /*,*outbuf*/;
-+      unsigned int inbufBitCount, inbufBits;
-+      /* The CRC values stored in the block header and calculated from the
-+      data */
-+      unsigned int crc32Table[256], headerCRC, totalCRC, writeCRC;
-+      /* Intermediate buffer and its size (in bytes) */
-+      unsigned int *dbuf, dbufSize;
-+      /* These things are a bit too big to go on the stack */
-+      unsigned char selectors[32768];         /* nSelectors = 15 bits */
-+      struct group_data groups[MAX_GROUPS];   /* Huffman coding tables */
-+      int io_error;                   /* non-zero if we have IO error */
-+};
-+
-+
-+/* Return the next nnn bits of input.  All reads from the compressed input
-+   are done through this function.  All reads are big endian */
-+static unsigned int INIT get_bits(struct bunzip_data *bd, char bits_wanted)
-+{
-+      unsigned int bits = 0;
-+
-+      /* If we need to get more data from the byte buffer, do so.
-+         (Loop getting one byte at a time to enforce endianness and avoid
-+         unaligned access.) */
-+      while (bd->inbufBitCount < bits_wanted) {
-+              /* If we need to read more data from file into byte buffer, do
-+                 so */
-+              if (bd->inbufPos == bd->inbufCount) {
-+                      if (bd->io_error)
-+                              return 0;
-+                      bd->inbufCount = bd->fill(bd->inbuf, BZIP2_IOBUF_SIZE);
-+                      if (bd->inbufCount <= 0) {
-+                              bd->io_error = RETVAL_UNEXPECTED_INPUT_EOF;
-+                              return 0;
-+                      }
-+                      bd->inbufPos = 0;
-+              }
-+              /* Avoid 32-bit overflow (dump bit buffer to top of output) */
-+              if (bd->inbufBitCount >= 24) {
-+                      bits = bd->inbufBits&((1 << bd->inbufBitCount)-1);
-+                      bits_wanted -= bd->inbufBitCount;
-+                      bits <<= bits_wanted;
-+                      bd->inbufBitCount = 0;
-+              }
-+              /* Grab next 8 bits of input from buffer. */
-+              bd->inbufBits = (bd->inbufBits << 8)|bd->inbuf[bd->inbufPos++];
-+              bd->inbufBitCount += 8;
-+      }
-+      /* Calculate result */
-+      bd->inbufBitCount -= bits_wanted;
-+      bits |= (bd->inbufBits >> bd->inbufBitCount)&((1 << bits_wanted)-1);
-+
-+      return bits;
-+}
-+
-+/* Unpacks the next block and sets up for the inverse burrows-wheeler step. */
-+
-+static int INIT get_next_block(struct bunzip_data *bd)
-+{
-+      struct group_data *hufGroup = NULL;
-+      int *base = NULL;
-+      int *limit = NULL;
-+      int dbufCount, nextSym, dbufSize, groupCount, selector,
-+              i, j, k, t, runPos, symCount, symTotal, nSelectors,
-+              byteCount[256];
-+      unsigned char uc, symToByte[256], mtfSymbol[256], *selectors;
-+      unsigned int *dbuf, origPtr;
-+
-+      dbuf = bd->dbuf;
-+      dbufSize = bd->dbufSize;
-+      selectors = bd->selectors;
-+
-+      /* Read in header signature and CRC, then validate signature.
-+         (last block signature means CRC is for whole file, return now) */
-+      i = get_bits(bd, 24);
-+      j = get_bits(bd, 24);
-+      bd->headerCRC = get_bits(bd, 32);
-+      if ((i == 0x177245) && (j == 0x385090))
-+              return RETVAL_LAST_BLOCK;
-+      if ((i != 0x314159) || (j != 0x265359))
-+              return RETVAL_NOT_BZIP_DATA;
-+      /* We can add support for blockRandomised if anybody complains.
-+         There was some code for this in busybox 1.0.0-pre3, but nobody ever
-+         noticed that it didn't actually work. */
-+      if (get_bits(bd, 1))
-+              return RETVAL_OBSOLETE_INPUT;
-+      origPtr = get_bits(bd, 24);
-+      if (origPtr > dbufSize)
-+              return RETVAL_DATA_ERROR;
-+      /* mapping table: if some byte values are never used (encoding things
-+         like ascii text), the compression code removes the gaps to have fewer
-+         symbols to deal with, and writes a sparse bitfield indicating which
-+         values were present.  We make a translation table to convert the
-+         symbols back to the corresponding bytes. */
-+      t = get_bits(bd, 16);
-+      symTotal = 0;
-+      for (i = 0; i < 16; i++) {
-+              if (t&(1 << (15-i))) {
-+                      k = get_bits(bd, 16);
-+                      for (j = 0; j < 16; j++)
-+                              if (k&(1 << (15-j)))
-+                                      symToByte[symTotal++] = (16*i)+j;
-+              }
-+      }
-+      /* How many different Huffman coding groups does this block use? */
-+      groupCount = get_bits(bd, 3);
-+      if (groupCount < 2 || groupCount > MAX_GROUPS)
-+              return RETVAL_DATA_ERROR;
-+      /* nSelectors: Every GROUP_SIZE many symbols we select a new
-+         Huffman coding group.  Read in the group selector list,
-+         which is stored as MTF encoded bit runs.  (MTF = Move To
-+         Front, as each value is used it's moved to the start of the
-+         list.) */
-+      nSelectors = get_bits(bd, 15);
-+      if (!nSelectors)
-+              return RETVAL_DATA_ERROR;
-+      for (i = 0; i < groupCount; i++)
-+              mtfSymbol[i] = i;
-+      for (i = 0; i < nSelectors; i++) {
-+              /* Get next value */
-+              for (j = 0; get_bits(bd, 1); j++)
-+                      if (j >= groupCount)
-+                              return RETVAL_DATA_ERROR;
-+              /* Decode MTF to get the next selector */
-+              uc = mtfSymbol[j];
-+              for (; j; j--)
-+                      mtfSymbol[j] = mtfSymbol[j-1];
-+              mtfSymbol[0] = selectors[i] = uc;
-+      }
-+      /* Read the Huffman coding tables for each group, which code
-+         for symTotal literal symbols, plus two run symbols (RUNA,
-+         RUNB) */
-+      symCount = symTotal+2;
-+      for (j = 0; j < groupCount; j++) {
-+              unsigned char length[MAX_SYMBOLS], temp[MAX_HUFCODE_BITS+1];
-+              int     minLen, maxLen, pp;
-+              /* Read Huffman code lengths for each symbol.  They're
-+                 stored in a way similar to mtf; record a starting
-+                 value for the first symbol, and an offset from the
-+                 previous value for everys symbol after that.
-+                 (Subtracting 1 before the loop and then adding it
-+                 back at the end is an optimization that makes the
-+                 test inside the loop simpler: symbol length 0
-+                 becomes negative, so an unsigned inequality catches
-+                 it.) */
-+              t = get_bits(bd, 5)-1;
-+              for (i = 0; i < symCount; i++) {
-+                      for (;;) {
-+                              if (((unsigned)t) > (MAX_HUFCODE_BITS-1))
-+                                      return RETVAL_DATA_ERROR;
-+
-+                              /* If first bit is 0, stop.  Else
-+                                 second bit indicates whether to
-+                                 increment or decrement the value.
-+                                 Optimization: grab 2 bits and unget
-+                                 the second if the first was 0. */
-+
-+                              k = get_bits(bd, 2);
-+                              if (k < 2) {
-+                                      bd->inbufBitCount++;
-+                                      break;
-+                              }
-+                              /* Add one if second bit 1, else
-+                               * subtract 1.  Avoids if/else */
-+                              t += (((k+1)&2)-1);
-+                      }
-+                      /* Correct for the initial -1, to get the
-+                       * final symbol length */
-+                      length[i] = t+1;
-+              }
-+              /* Find largest and smallest lengths in this group */
-+              minLen = maxLen = length[0];
-+
-+              for (i = 1; i < symCount; i++) {
-+                      if (length[i] > maxLen)
-+                              maxLen = length[i];
-+                      else if (length[i] < minLen)
-+                              minLen = length[i];
-+              }
-+
-+              /* Calculate permute[], base[], and limit[] tables from
-+               * length[].
-+               *
-+               * permute[] is the lookup table for converting
-+               * Huffman coded symbols into decoded symbols.  base[]
-+               * is the amount to subtract from the value of a
-+               * Huffman symbol of a given length when using
-+               * permute[].
-+               *
-+               * limit[] indicates the largest numerical value a
-+               * symbol with a given number of bits can have.  This
-+               * is how the Huffman codes can vary in length: each
-+               * code with a value > limit[length] needs another
-+               * bit.
-+               */
-+              hufGroup = bd->groups+j;
-+              hufGroup->minLen = minLen;
-+              hufGroup->maxLen = maxLen;
-+              /* Note that minLen can't be smaller than 1, so we
-+                 adjust the base and limit array pointers so we're
-+                 not always wasting the first entry.  We do this
-+                 again when using them (during symbol decoding).*/
-+              base = hufGroup->base-1;
-+              limit = hufGroup->limit-1;
-+              /* Calculate permute[].  Concurently, initialize
-+               * temp[] and limit[]. */
-+              pp = 0;
-+              for (i = minLen; i <= maxLen; i++) {
-+                      temp[i] = limit[i] = 0;
-+                      for (t = 0; t < symCount; t++)
-+                              if (length[t] == i)
-+                                      hufGroup->permute[pp++] = t;
-+              }
-+              /* Count symbols coded for at each bit length */
-+              for (i = 0; i < symCount; i++)
-+                      temp[length[i]]++;
-+              /* Calculate limit[] (the largest symbol-coding value
-+               *at each bit length, which is (previous limit <<
-+               *1)+symbols at this level), and base[] (number of
-+               *symbols to ignore at each bit length, which is limit
-+               *minus the cumulative count of symbols coded for
-+               *already). */
-+              pp = t = 0;
-+              for (i = minLen; i < maxLen; i++) {
-+                      pp += temp[i];
-+                      /* We read the largest possible symbol size
-+                         and then unget bits after determining how
-+                         many we need, and those extra bits could be
-+                         set to anything.  (They're noise from
-+                         future symbols.)  At each level we're
-+                         really only interested in the first few
-+                         bits, so here we set all the trailing
-+                         to-be-ignored bits to 1 so they don't
-+                         affect the value > limit[length]
-+                         comparison. */
-+                      limit[i] = (pp << (maxLen - i)) - 1;
-+                      pp <<= 1;
-+                      base[i+1] = pp-(t += temp[i]);
-+              }
-+              limit[maxLen+1] = INT_MAX; /* Sentinal value for
-+                                          * reading next sym. */
-+              limit[maxLen] = pp+temp[maxLen]-1;
-+              base[minLen] = 0;
-+      }
-+      /* We've finished reading and digesting the block header.  Now
-+         read this block's Huffman coded symbols from the file and
-+         undo the Huffman coding and run length encoding, saving the
-+         result into dbuf[dbufCount++] = uc */
-+
-+      /* Initialize symbol occurrence counters and symbol Move To
-+       * Front table */
-+      for (i = 0; i < 256; i++) {
-+              byteCount[i] = 0;
-+              mtfSymbol[i] = (unsigned char)i;
-+      }
-+      /* Loop through compressed symbols. */
-+      runPos = dbufCount = symCount = selector = 0;
-+      for (;;) {
-+              /* Determine which Huffman coding group to use. */
-+              if (!(symCount--)) {
-+                      symCount = GROUP_SIZE-1;
-+                      if (selector >= nSelectors)
-+                              return RETVAL_DATA_ERROR;
-+                      hufGroup = bd->groups+selectors[selector++];
-+                      base = hufGroup->base-1;
-+                      limit = hufGroup->limit-1;
-+              }
-+              /* Read next Huffman-coded symbol. */
-+              /* Note: It is far cheaper to read maxLen bits and
-+                 back up than it is to read minLen bits and then an
-+                 additional bit at a time, testing as we go.
-+                 Because there is a trailing last block (with file
-+                 CRC), there is no danger of the overread causing an
-+                 unexpected EOF for a valid compressed file.  As a
-+                 further optimization, we do the read inline
-+                 (falling back to a call to get_bits if the buffer
-+                 runs dry).  The following (up to got_huff_bits:) is
-+                 equivalent to j = get_bits(bd, hufGroup->maxLen);
-+               */
-+              while (bd->inbufBitCount < hufGroup->maxLen) {
-+                      if (bd->inbufPos == bd->inbufCount) {
-+                              j = get_bits(bd, hufGroup->maxLen);
-+                              goto got_huff_bits;
-+                      }
-+                      bd->inbufBits =
-+                              (bd->inbufBits << 8)|bd->inbuf[bd->inbufPos++];
-+                      bd->inbufBitCount += 8;
-+              };
-+              bd->inbufBitCount -= hufGroup->maxLen;
-+              j = (bd->inbufBits >> bd->inbufBitCount)&
-+                      ((1 << hufGroup->maxLen)-1);
-+got_huff_bits:
-+              /* Figure how how many bits are in next symbol and
-+               * unget extras */
-+              i = hufGroup->minLen;
-+              while (j > limit[i])
-+                      ++i;
-+              bd->inbufBitCount += (hufGroup->maxLen - i);
-+              /* Huffman decode value to get nextSym (with bounds checking) */
-+              if ((i > hufGroup->maxLen)
-+                      || (((unsigned)(j = (j>>(hufGroup->maxLen-i))-base[i]))
-+                              >= MAX_SYMBOLS))
-+                      return RETVAL_DATA_ERROR;
-+              nextSym = hufGroup->permute[j];
-+              /* We have now decoded the symbol, which indicates
-+                 either a new literal byte, or a repeated run of the
-+                 most recent literal byte.  First, check if nextSym
-+                 indicates a repeated run, and if so loop collecting
-+                 how many times to repeat the last literal. */
-+              if (((unsigned)nextSym) <= SYMBOL_RUNB) { /* RUNA or RUNB */
-+                      /* If this is the start of a new run, zero out
-+                       * counter */
-+                      if (!runPos) {
-+                              runPos = 1;
-+                              t = 0;
-+                      }
-+                      /* Neat trick that saves 1 symbol: instead of
-+                         or-ing 0 or 1 at each bit position, add 1
-+                         or 2 instead.  For example, 1011 is 1 << 0
-+                         + 1 << 1 + 2 << 2.  1010 is 2 << 0 + 2 << 1
-+                         + 1 << 2.  You can make any bit pattern
-+                         that way using 1 less symbol than the basic
-+                         or 0/1 method (except all bits 0, which
-+                         would use no symbols, but a run of length 0
-+                         doesn't mean anything in this context).
-+                         Thus space is saved. */
-+                      t += (runPos << nextSym);
-+                      /* +runPos if RUNA; +2*runPos if RUNB */
-+
-+                      runPos <<= 1;
-+                      continue;
-+              }
-+              /* When we hit the first non-run symbol after a run,
-+                 we now know how many times to repeat the last
-+                 literal, so append that many copies to our buffer
-+                 of decoded symbols (dbuf) now.  (The last literal
-+                 used is the one at the head of the mtfSymbol
-+                 array.) */
-+              if (runPos) {
-+                      runPos = 0;
-+                      if (dbufCount+t >= dbufSize)
-+                              return RETVAL_DATA_ERROR;
-+
-+                      uc = symToByte[mtfSymbol[0]];
-+                      byteCount[uc] += t;
-+                      while (t--)
-+                              dbuf[dbufCount++] = uc;
-+              }
-+              /* Is this the terminating symbol? */
-+              if (nextSym > symTotal)
-+                      break;
-+              /* At this point, nextSym indicates a new literal
-+                 character.  Subtract one to get the position in the
-+                 MTF array at which this literal is currently to be
-+                 found.  (Note that the result can't be -1 or 0,
-+                 because 0 and 1 are RUNA and RUNB.  But another
-+                 instance of the first symbol in the mtf array,
-+                 position 0, would have been handled as part of a
-+                 run above.  Therefore 1 unused mtf position minus 2
-+                 non-literal nextSym values equals -1.) */
-+              if (dbufCount >= dbufSize)
-+                      return RETVAL_DATA_ERROR;
-+              i = nextSym - 1;
-+              uc = mtfSymbol[i];
-+              /* Adjust the MTF array.  Since we typically expect to
-+               *move only a small number of symbols, and are bound
-+               *by 256 in any case, using memmove here would
-+               *typically be bigger and slower due to function call
-+               *overhead and other assorted setup costs. */
-+              do {
-+                      mtfSymbol[i] = mtfSymbol[i-1];
-+              } while (--i);
-+              mtfSymbol[0] = uc;
-+              uc = symToByte[uc];
-+              /* We have our literal byte.  Save it into dbuf. */
-+              byteCount[uc]++;
-+              dbuf[dbufCount++] = (unsigned int)uc;
-+      }
-+      /* At this point, we've read all the Huffman-coded symbols
-+         (and repeated runs) for this block from the input stream,
-+         and decoded them into the intermediate buffer.  There are
-+         dbufCount many decoded bytes in dbuf[].  Now undo the
-+         Burrows-Wheeler transform on dbuf.  See
-+         http://dogma.net/markn/articles/bwt/bwt.htm
-+       */
-+      /* Turn byteCount into cumulative occurrence counts of 0 to n-1. */
-+      j = 0;
-+      for (i = 0; i < 256; i++) {
-+              k = j+byteCount[i];
-+              byteCount[i] = j;
-+              j = k;
-+      }
-+      /* Figure out what order dbuf would be in if we sorted it. */
-+      for (i = 0; i < dbufCount; i++) {
-+              uc = (unsigned char)(dbuf[i] & 0xff);
-+              dbuf[byteCount[uc]] |= (i << 8);
-+              byteCount[uc]++;
-+      }
-+      /* Decode first byte by hand to initialize "previous" byte.
-+         Note that it doesn't get output, and if the first three
-+         characters are identical it doesn't qualify as a run (hence
-+         writeRunCountdown = 5). */
-+      if (dbufCount) {
-+              if (origPtr >= dbufCount)
-+                      return RETVAL_DATA_ERROR;
-+              bd->writePos = dbuf[origPtr];
-+              bd->writeCurrent = (unsigned char)(bd->writePos&0xff);
-+              bd->writePos >>= 8;
-+              bd->writeRunCountdown = 5;
-+      }
-+      bd->writeCount = dbufCount;
-+
-+      return RETVAL_OK;
-+}
-+
-+/* Undo burrows-wheeler transform on intermediate buffer to produce output.
-+   If start_bunzip was initialized with out_fd =-1, then up to len bytes of
-+   data are written to outbuf.  Return value is number of bytes written or
-+   error (all errors are negative numbers).  If out_fd!=-1, outbuf and len
-+   are ignored, data is written to out_fd and return is RETVAL_OK or error.
-+*/
-+
-+static int INIT read_bunzip(struct bunzip_data *bd, char *outbuf, int len)
-+{
-+      const unsigned int *dbuf;
-+      int pos, xcurrent, previous, gotcount;
-+
-+      /* If last read was short due to end of file, return last block now */
-+      if (bd->writeCount < 0)
-+              return bd->writeCount;
-+
-+      gotcount = 0;
-+      dbuf = bd->dbuf;
-+      pos = bd->writePos;
-+      xcurrent = bd->writeCurrent;
-+
-+      /* We will always have pending decoded data to write into the output
-+         buffer unless this is the very first call (in which case we haven't
-+         Huffman-decoded a block into the intermediate buffer yet). */
-+
-+      if (bd->writeCopies) {
-+              /* Inside the loop, writeCopies means extra copies (beyond 1) */
-+              --bd->writeCopies;
-+              /* Loop outputting bytes */
-+              for (;;) {
-+                      /* If the output buffer is full, snapshot
-+                       * state and return */
-+                      if (gotcount >= len) {
-+                              bd->writePos = pos;
-+                              bd->writeCurrent = xcurrent;
-+                              bd->writeCopies++;
-+                              return len;
-+                      }
-+                      /* Write next byte into output buffer, updating CRC */
-+                      outbuf[gotcount++] = xcurrent;
-+                      bd->writeCRC = (((bd->writeCRC) << 8)
-+                              ^bd->crc32Table[((bd->writeCRC) >> 24)
-+                              ^xcurrent]);
-+                      /* Loop now if we're outputting multiple
-+                       * copies of this byte */
-+                      if (bd->writeCopies) {
-+                              --bd->writeCopies;
-+                              continue;
-+                      }
-+decode_next_byte:
-+                      if (!bd->writeCount--)
-+                              break;
-+                      /* Follow sequence vector to undo
-+                       * Burrows-Wheeler transform */
-+                      previous = xcurrent;
-+                      pos = dbuf[pos];
-+                      xcurrent = pos&0xff;
-+                      pos >>= 8;
-+                      /* After 3 consecutive copies of the same
-+                         byte, the 4th is a repeat count.  We count
-+                         down from 4 instead *of counting up because
-+                         testing for non-zero is faster */
-+                      if (--bd->writeRunCountdown) {
-+                              if (xcurrent != previous)
-+                                      bd->writeRunCountdown = 4;
-+                      } else {
-+                              /* We have a repeated run, this byte
-+                               * indicates the count */
-+                              bd->writeCopies = xcurrent;
-+                              xcurrent = previous;
-+                              bd->writeRunCountdown = 5;
-+                              /* Sometimes there are just 3 bytes
-+                               * (run length 0) */
-+                              if (!bd->writeCopies)
-+                                      goto decode_next_byte;
-+                              /* Subtract the 1 copy we'd output
-+                               * anyway to get extras */
-+                              --bd->writeCopies;
-+                      }
-+              }
-+              /* Decompression of this block completed successfully */
-+              bd->writeCRC = ~bd->writeCRC;
-+              bd->totalCRC = ((bd->totalCRC << 1) |
-+                              (bd->totalCRC >> 31)) ^ bd->writeCRC;
-+              /* If this block had a CRC error, force file level CRC error. */
-+              if (bd->writeCRC != bd->headerCRC) {
-+                      bd->totalCRC = bd->headerCRC+1;
-+                      return RETVAL_LAST_BLOCK;
-+              }
-+      }
-+
-+      /* Refill the intermediate buffer by Huffman-decoding next
-+       * block of input */
-+      /* (previous is just a convenient unused temp variable here) */
-+      previous = get_next_block(bd);
-+      if (previous) {
-+              bd->writeCount = previous;
-+              return (previous != RETVAL_LAST_BLOCK) ? previous : gotcount;
-+      }
-+      bd->writeCRC = 0xffffffffUL;
-+      pos = bd->writePos;
-+      xcurrent = bd->writeCurrent;
-+      goto decode_next_byte;
-+}
-+
-+static int INIT nofill(void *buf, unsigned int len)
-+{
-+      return -1;
-+}
-+
-+/* Allocate the structure, read file header.  If in_fd ==-1, inbuf must contain
-+   a complete bunzip file (len bytes long).  If in_fd!=-1, inbuf and len are
-+   ignored, and data is read from file handle into temporary buffer. */
-+static int INIT start_bunzip(struct bunzip_data **bdp, void *inbuf, int len,
-+                           int (*fill)(void*, unsigned int))
-+{
-+      struct bunzip_data *bd;
-+      unsigned int i, j, c;
-+      const unsigned int BZh0 =
-+              (((unsigned int)'B') << 24)+(((unsigned int)'Z') << 16)
-+              +(((unsigned int)'h') << 8)+(unsigned int)'0';
-+
-+      /* Figure out how much data to allocate */
-+      i = sizeof(struct bunzip_data);
-+
-+      /* Allocate bunzip_data.  Most fields initialize to zero. */
-+      bd = *bdp = malloc(i);
-+      memset(bd, 0, sizeof(struct bunzip_data));
-+      /* Setup input buffer */
-+      bd->inbuf = inbuf;
-+      bd->inbufCount = len;
-+      if (fill != NULL)
-+              bd->fill = fill;
-+      else
-+              bd->fill = nofill;
-+
-+      /* Init the CRC32 table (big endian) */
-+      for (i = 0; i < 256; i++) {
-+              c = i << 24;
-+              for (j = 8; j; j--)
-+                      c = c&0x80000000 ? (c << 1)^0x04c11db7 : (c << 1);
-+              bd->crc32Table[i] = c;
-+      }
-+
-+      /* Ensure that file starts with "BZh['1'-'9']." */
-+      i = get_bits(bd, 32);
-+      if (((unsigned int)(i-BZh0-1)) >= 9)
-+              return RETVAL_NOT_BZIP_DATA;
-+
-+      /* Fourth byte (ascii '1'-'9'), indicates block size in units of 100k of
-+         uncompressed data.  Allocate intermediate buffer for block. */
-+      bd->dbufSize = 100000*(i-BZh0);
-+
-+      bd->dbuf = large_malloc(bd->dbufSize * sizeof(int));
-+      return RETVAL_OK;
-+}
-+
-+/* Example usage: decompress src_fd to dst_fd.  (Stops at end of bzip2 data,
-+   not end of file.) */
-+STATIC int INIT bunzip2(unsigned char *buf, int len,
-+                      int(*fill)(void*, unsigned int),
-+                      int(*flush)(void*, unsigned int),
-+                      unsigned char *outbuf,
-+                      int *pos,
-+                      void(*error_fn)(char *x))
-+{
-+      struct bunzip_data *bd;
-+      int i = -1;
-+      unsigned char *inbuf;
-+
-+      set_error_fn(error_fn);
-+      if (flush)
-+              outbuf = malloc(BZIP2_IOBUF_SIZE);
-+      else
-+              len -= 4; /* Uncompressed size hack active in pre-boot
-+                           environment */
-+      if (!outbuf) {
-+              error("Could not allocate output bufer");
-+              return -1;
-+      }
-+      if (buf)
-+              inbuf = buf;
-+      else
-+              inbuf = malloc(BZIP2_IOBUF_SIZE);
-+      if (!inbuf) {
-+              error("Could not allocate input bufer");
-+              goto exit_0;
-+      }
-+      i = start_bunzip(&bd, inbuf, len, fill);
-+      if (!i) {
-+              for (;;) {
-+                      i = read_bunzip(bd, outbuf, BZIP2_IOBUF_SIZE);
-+                      if (i <= 0)
-+                              break;
-+                      if (!flush)
-+                              outbuf += i;
-+                      else
-+                              if (i != flush(outbuf, i)) {
-+                                      i = RETVAL_UNEXPECTED_OUTPUT_EOF;
-+                                      break;
-+                              }
-+              }
-+      }
-+      /* Check CRC and release memory */
-+      if (i == RETVAL_LAST_BLOCK) {
-+              if (bd->headerCRC != bd->totalCRC)
-+                      error("Data integrity error when decompressing.");
-+              else
-+                      i = RETVAL_OK;
-+      } else if (i == RETVAL_UNEXPECTED_OUTPUT_EOF) {
-+              error("Compressed file ends unexpectedly");
-+      }
-+      if (bd->dbuf)
-+              large_free(bd->dbuf);
-+      if (pos)
-+              *pos = bd->inbufPos;
-+      free(bd);
-+      if (!buf)
-+              free(inbuf);
-+exit_0:
-+      if (flush)
-+              free(outbuf);
-+      return i;
-+}
-+
-+#define decompress bunzip2
-diff -purN linux-2.6.27.6/lib/decompress_unlzma.c linux-2.6.27.6udpcast/lib/decompress_unlzma.c
---- linux-2.6.27.6/lib/decompress_unlzma.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/decompress_unlzma.c      2008-11-16 23:40:21.000000000 +0100
-@@ -0,0 +1,647 @@
-+/* Lzma decompressor for Linux kernel. Shamelessly snarfed
-+ *from busybox 1.1.1
-+ *
-+ *Linux kernel adaptation
-+ *Copyright (C) 2006  Alain < alain@knaff.lu >
-+ *
-+ *Based on small lzma deflate implementation/Small range coder
-+ *implementation for lzma.
-+ *Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ *Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ *Copyright (C) 1999-2005  Igor Pavlov
-+ *
-+ *Copyrights of the parts, see headers below.
-+ *
-+ *
-+ *This program is free software; you can redistribute it and/or
-+ *modify it under the terms of the GNU Lesser General Public
-+ *License as published by the Free Software Foundation; either
-+ *version 2.1 of the License, or (at your option) any later version.
-+ *
-+ *This program is distributed in the hope that it will be useful,
-+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ *Lesser General Public License for more details.
-+ *
-+ *You should have received a copy of the GNU Lesser General Public
-+ *License along with this library; if not, write to the Free Software
-+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-+ */
-+
-+#ifndef STATIC
-+#include <linux/decompress/unlzma.h>
-+#endif /* STATIC */
-+
-+#include <linux/decompress/mm.h>
-+
-+#define       MIN(a, b) (((a) < (b)) ? (a) : (b))
-+
-+static long long INIT read_int(unsigned char *ptr, int size)
-+{
-+      int i;
-+      long long ret = 0;
-+
-+      for (i = 0; i < size; i++)
-+              ret = (ret << 8) | ptr[size-i-1];
-+      return ret;
-+}
-+
-+#define ENDIAN_CONVERT(x) \
-+  x = (typeof(x))read_int((unsigned char *)&x, sizeof(x))
-+
-+
-+/* Small range coder implementation for lzma.
-+ *Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ *Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ *Copyright (c) 1999-2005  Igor Pavlov
-+ */
-+
-+#include <linux/compiler.h>
-+
-+#define LZMA_IOBUF_SIZE       0x10000
-+
-+struct rc {
-+      int (*fill)(void*, unsigned int);
-+      uint8_t *ptr;
-+      uint8_t *buffer;
-+      uint8_t *buffer_end;
-+      int buffer_size;
-+      uint32_t code;
-+      uint32_t range;
-+      uint32_t bound;
-+};
-+
-+
-+#define RC_TOP_BITS 24
-+#define RC_MOVE_BITS 5
-+#define RC_MODEL_TOTAL_BITS 11
-+
-+
-+/* Called twice: once at startup and once in rc_normalize() */
-+static void INIT rc_read(struct rc *rc)
-+{
-+      rc->buffer_size = rc->fill((char *)rc->buffer, LZMA_IOBUF_SIZE);
-+      if (rc->buffer_size <= 0)
-+              error("unexpected EOF");
-+      rc->ptr = rc->buffer;
-+      rc->buffer_end = rc->buffer + rc->buffer_size;
-+}
-+
-+/* Called once */
-+static inline void INIT rc_init(struct rc *rc,
-+                                     int (*fill)(void*, unsigned int),
-+                                     char *buffer, int buffer_size)
-+{
-+      rc->fill = fill;
-+      rc->buffer = (uint8_t *)buffer;
-+      rc->buffer_size = buffer_size;
-+      rc->buffer_end = rc->buffer + rc->buffer_size;
-+      rc->ptr = rc->buffer;
-+
-+      rc->code = 0;
-+      rc->range = 0xFFFFFFFF;
-+}
-+
-+static inline void INIT rc_init_code(struct rc *rc)
-+{
-+      int i;
-+
-+      for (i = 0; i < 5; i++) {
-+              if (rc->ptr >= rc->buffer_end)
-+                      rc_read(rc);
-+              rc->code = (rc->code << 8) | *rc->ptr++;
-+      }
-+}
-+
-+
-+/* Called once. TODO: bb_maybe_free() */
-+static inline void INIT rc_free(struct rc *rc)
-+{
-+      free(rc->buffer);
-+}
-+
-+/* Called twice, but one callsite is in inline'd rc_is_bit_0_helper() */
-+static void INIT rc_do_normalize(struct rc *rc)
-+{
-+      if (rc->ptr >= rc->buffer_end)
-+              rc_read(rc);
-+      rc->range <<= 8;
-+      rc->code = (rc->code << 8) | *rc->ptr++;
-+}
-+static inline void INIT rc_normalize(struct rc *rc)
-+{
-+      if (rc->range < (1 << RC_TOP_BITS))
-+              rc_do_normalize(rc);
-+}
-+
-+/* Called 9 times */
-+/* Why rc_is_bit_0_helper exists?
-+ *Because we want to always expose (rc->code < rc->bound) to optimizer
-+ */
-+static inline uint32_t INIT rc_is_bit_0_helper(struct rc *rc, uint16_t *p)
-+{
-+      rc_normalize(rc);
-+      rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS);
-+      return rc->bound;
-+}
-+static inline int INIT rc_is_bit_0(struct rc *rc, uint16_t *p)
-+{
-+      uint32_t t = rc_is_bit_0_helper(rc, p);
-+      return rc->code < t;
-+}
-+
-+/* Called ~10 times, but very small, thus inlined */
-+static inline void INIT rc_update_bit_0(struct rc *rc, uint16_t *p)
-+{
-+      rc->range = rc->bound;
-+      *p += ((1 << RC_MODEL_TOTAL_BITS) - *p) >> RC_MOVE_BITS;
-+}
-+static inline void rc_update_bit_1(struct rc *rc, uint16_t *p)
-+{
-+      rc->range -= rc->bound;
-+      rc->code -= rc->bound;
-+      *p -= *p >> RC_MOVE_BITS;
-+}
-+
-+/* Called 4 times in unlzma loop */
-+static int INIT rc_get_bit(struct rc *rc, uint16_t *p, int *symbol)
-+{
-+      if (rc_is_bit_0(rc, p)) {
-+              rc_update_bit_0(rc, p);
-+              *symbol *= 2;
-+              return 0;
-+      } else {
-+              rc_update_bit_1(rc, p);
-+              *symbol = *symbol * 2 + 1;
-+              return 1;
-+      }
-+}
-+
-+/* Called once */
-+static inline int INIT rc_direct_bit(struct rc *rc)
-+{
-+      rc_normalize(rc);
-+      rc->range >>= 1;
-+      if (rc->code >= rc->range) {
-+              rc->code -= rc->range;
-+              return 1;
-+      }
-+      return 0;
-+}
-+
-+/* Called twice */
-+static inline void INIT
-+rc_bit_tree_decode(struct rc *rc, uint16_t *p, int num_levels, int *symbol)
-+{
-+      int i = num_levels;
-+
-+      *symbol = 1;
-+      while (i--)
-+              rc_get_bit(rc, p + *symbol, symbol);
-+      *symbol -= 1 << num_levels;
-+}
-+
-+
-+/*
-+ * Small lzma deflate implementation.
-+ * Copyright (C) 2006  Aurelien Jacobs < aurel@gnuage.org >
-+ *
-+ * Based on LzmaDecode.c from the LZMA SDK 4.22 (http://www.7-zip.org/)
-+ * Copyright (C) 1999-2005  Igor Pavlov
-+ */
-+
-+
-+struct lzma_header {
-+      uint8_t pos;
-+      uint32_t dict_size;
-+      uint64_t dst_size;
-+} __attribute__ ((packed)) ;
-+
-+
-+#define LZMA_BASE_SIZE 1846
-+#define LZMA_LIT_SIZE 768
-+
-+#define LZMA_NUM_POS_BITS_MAX 4
-+
-+#define LZMA_LEN_NUM_LOW_BITS 3
-+#define LZMA_LEN_NUM_MID_BITS 3
-+#define LZMA_LEN_NUM_HIGH_BITS 8
-+
-+#define LZMA_LEN_CHOICE 0
-+#define LZMA_LEN_CHOICE_2 (LZMA_LEN_CHOICE + 1)
-+#define LZMA_LEN_LOW (LZMA_LEN_CHOICE_2 + 1)
-+#define LZMA_LEN_MID (LZMA_LEN_LOW \
-+                    + (1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_LOW_BITS)))
-+#define LZMA_LEN_HIGH (LZMA_LEN_MID \
-+                     +(1 << (LZMA_NUM_POS_BITS_MAX + LZMA_LEN_NUM_MID_BITS)))
-+#define LZMA_NUM_LEN_PROBS (LZMA_LEN_HIGH + (1 << LZMA_LEN_NUM_HIGH_BITS))
-+
-+#define LZMA_NUM_STATES 12
-+#define LZMA_NUM_LIT_STATES 7
-+
-+#define LZMA_START_POS_MODEL_INDEX 4
-+#define LZMA_END_POS_MODEL_INDEX 14
-+#define LZMA_NUM_FULL_DISTANCES (1 << (LZMA_END_POS_MODEL_INDEX >> 1))
-+
-+#define LZMA_NUM_POS_SLOT_BITS 6
-+#define LZMA_NUM_LEN_TO_POS_STATES 4
-+
-+#define LZMA_NUM_ALIGN_BITS 4
-+
-+#define LZMA_MATCH_MIN_LEN 2
-+
-+#define LZMA_IS_MATCH 0
-+#define LZMA_IS_REP (LZMA_IS_MATCH + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX))
-+#define LZMA_IS_REP_G0 (LZMA_IS_REP + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_G1 (LZMA_IS_REP_G0 + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_G2 (LZMA_IS_REP_G1 + LZMA_NUM_STATES)
-+#define LZMA_IS_REP_0_LONG (LZMA_IS_REP_G2 + LZMA_NUM_STATES)
-+#define LZMA_POS_SLOT (LZMA_IS_REP_0_LONG \
-+                     + (LZMA_NUM_STATES << LZMA_NUM_POS_BITS_MAX))
-+#define LZMA_SPEC_POS (LZMA_POS_SLOT \
-+                     +(LZMA_NUM_LEN_TO_POS_STATES << LZMA_NUM_POS_SLOT_BITS))
-+#define LZMA_ALIGN (LZMA_SPEC_POS \
-+                  + LZMA_NUM_FULL_DISTANCES - LZMA_END_POS_MODEL_INDEX)
-+#define LZMA_LEN_CODER (LZMA_ALIGN + (1 << LZMA_NUM_ALIGN_BITS))
-+#define LZMA_REP_LEN_CODER (LZMA_LEN_CODER + LZMA_NUM_LEN_PROBS)
-+#define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS)
-+
-+
-+struct writer {
-+      uint8_t *buffer;
-+      uint8_t previous_byte;
-+      size_t buffer_pos;
-+      int bufsize;
-+      size_t global_pos;
-+      int(*flush)(void*, unsigned int);
-+      struct lzma_header *header;
-+};
-+
-+struct cstate {
-+      int state;
-+      uint32_t rep0, rep1, rep2, rep3;
-+};
-+
-+static inline size_t INIT get_pos(struct writer *wr)
-+{
-+      return
-+              wr->global_pos + wr->buffer_pos;
-+}
-+
-+static inline uint8_t INIT peek_old_byte(struct writer *wr,
-+                                              uint32_t offs)
-+{
-+      if (!wr->flush) {
-+              int32_t pos;
-+              while (offs > wr->header->dict_size)
-+                      offs -= wr->header->dict_size;
-+              pos = wr->buffer_pos - offs;
-+              return wr->buffer[pos];
-+      } else {
-+              uint32_t pos = wr->buffer_pos - offs;
-+              while (pos >= wr->header->dict_size)
-+                      pos += wr->header->dict_size;
-+              return wr->buffer[pos];
-+      }
-+
-+}
-+
-+static inline void INIT write_byte(struct writer *wr, uint8_t byte)
-+{
-+      wr->buffer[wr->buffer_pos++] = wr->previous_byte = byte;
-+      if (wr->flush && wr->buffer_pos == wr->header->dict_size) {
-+              wr->buffer_pos = 0;
-+              wr->global_pos += wr->header->dict_size;
-+              wr->flush((char *)wr->buffer, wr->header->dict_size);
-+      }
-+}
-+
-+
-+static inline void INIT copy_byte(struct writer *wr, uint32_t offs)
-+{
-+      write_byte(wr, peek_old_byte(wr, offs));
-+}
-+
-+static inline void INIT copy_bytes(struct writer *wr,
-+                                       uint32_t rep0, int len)
-+{
-+      do {
-+              copy_byte(wr, rep0);
-+              len--;
-+      } while (len != 0 && wr->buffer_pos < wr->header->dst_size);
-+}
-+
-+static inline void INIT process_bit0(struct writer *wr, struct rc *rc,
-+                                   struct cstate *cst, uint16_t *p,
-+                                   int pos_state, uint16_t *prob,
-+                                   int lc, uint32_t literal_pos_mask) {
-+      int mi = 1;
-+      rc_update_bit_0(rc, prob);
-+      prob = (p + LZMA_LITERAL +
-+              (LZMA_LIT_SIZE
-+               * (((get_pos(wr) & literal_pos_mask) << lc)
-+                  + (wr->previous_byte >> (8 - lc))))
-+              );
-+
-+      if (cst->state >= LZMA_NUM_LIT_STATES) {
-+              int match_byte = peek_old_byte(wr, cst->rep0);
-+              do {
-+                      int bit;
-+                      uint16_t *prob_lit;
-+
-+                      match_byte <<= 1;
-+                      bit = match_byte & 0x100;
-+                      prob_lit = prob + 0x100 + bit + mi;
-+                      if (rc_get_bit(rc, prob_lit, &mi)) {
-+                              if (!bit)
-+                                      break;
-+                      } else {
-+                              if (bit)
-+                                      break;
-+                      }
-+              } while (mi < 0x100);
-+      }
-+      while (mi < 0x100) {
-+              uint16_t *prob_lit = prob + mi;
-+              rc_get_bit(rc, prob_lit, &mi);
-+      }
-+      write_byte(wr, mi);
-+      if (cst->state < 4)
-+              cst->state = 0;
-+      else if (cst->state < 10)
-+              cst->state -= 3;
-+      else
-+              cst->state -= 6;
-+}
-+
-+static inline void INIT process_bit1(struct writer *wr, struct rc *rc,
-+                                          struct cstate *cst, uint16_t *p,
-+                                          int pos_state, uint16_t *prob) {
-+  int offset;
-+      uint16_t *prob_len;
-+      int num_bits;
-+      int len;
-+
-+      rc_update_bit_1(rc, prob);
-+      prob = p + LZMA_IS_REP + cst->state;
-+      if (rc_is_bit_0(rc, prob)) {
-+              rc_update_bit_0(rc, prob);
-+              cst->rep3 = cst->rep2;
-+              cst->rep2 = cst->rep1;
-+              cst->rep1 = cst->rep0;
-+              cst->state = cst->state < LZMA_NUM_LIT_STATES ? 0 : 3;
-+              prob = p + LZMA_LEN_CODER;
-+      } else {
-+              rc_update_bit_1(rc, prob);
-+              prob = p + LZMA_IS_REP_G0 + cst->state;
-+              if (rc_is_bit_0(rc, prob)) {
-+                      rc_update_bit_0(rc, prob);
-+                      prob = (p + LZMA_IS_REP_0_LONG
-+                              + (cst->state <<
-+                                 LZMA_NUM_POS_BITS_MAX) +
-+                              pos_state);
-+                      if (rc_is_bit_0(rc, prob)) {
-+                              rc_update_bit_0(rc, prob);
-+
-+                              cst->state = cst->state < LZMA_NUM_LIT_STATES ?
-+                                      9 : 11;
-+                              copy_byte(wr, cst->rep0);
-+                              return;
-+                      } else {
-+                              rc_update_bit_1(rc, prob);
-+                      }
-+              } else {
-+                      uint32_t distance;
-+
-+                      rc_update_bit_1(rc, prob);
-+                      prob = p + LZMA_IS_REP_G1 + cst->state;
-+                      if (rc_is_bit_0(rc, prob)) {
-+                              rc_update_bit_0(rc, prob);
-+                              distance = cst->rep1;
-+                      } else {
-+                              rc_update_bit_1(rc, prob);
-+                              prob = p + LZMA_IS_REP_G2 + cst->state;
-+                              if (rc_is_bit_0(rc, prob)) {
-+                                      rc_update_bit_0(rc, prob);
-+                                      distance = cst->rep2;
-+                              } else {
-+                                      rc_update_bit_1(rc, prob);
-+                                      distance = cst->rep3;
-+                                      cst->rep3 = cst->rep2;
-+                              }
-+                              cst->rep2 = cst->rep1;
-+                      }
-+                      cst->rep1 = cst->rep0;
-+                      cst->rep0 = distance;
-+              }
-+              cst->state = cst->state < LZMA_NUM_LIT_STATES ? 8 : 11;
-+              prob = p + LZMA_REP_LEN_CODER;
-+      }
-+
-+      prob_len = prob + LZMA_LEN_CHOICE;
-+      if (rc_is_bit_0(rc, prob_len)) {
-+              rc_update_bit_0(rc, prob_len);
-+              prob_len = (prob + LZMA_LEN_LOW
-+                          + (pos_state <<
-+                             LZMA_LEN_NUM_LOW_BITS));
-+              offset = 0;
-+              num_bits = LZMA_LEN_NUM_LOW_BITS;
-+      } else {
-+              rc_update_bit_1(rc, prob_len);
-+              prob_len = prob + LZMA_LEN_CHOICE_2;
-+              if (rc_is_bit_0(rc, prob_len)) {
-+                      rc_update_bit_0(rc, prob_len);
-+                      prob_len = (prob + LZMA_LEN_MID
-+                                  + (pos_state <<
-+                                     LZMA_LEN_NUM_MID_BITS));
-+                      offset = 1 << LZMA_LEN_NUM_LOW_BITS;
-+                      num_bits = LZMA_LEN_NUM_MID_BITS;
-+              } else {
-+                      rc_update_bit_1(rc, prob_len);
-+                      prob_len = prob + LZMA_LEN_HIGH;
-+                      offset = ((1 << LZMA_LEN_NUM_LOW_BITS)
-+                                + (1 << LZMA_LEN_NUM_MID_BITS));
-+                      num_bits = LZMA_LEN_NUM_HIGH_BITS;
-+              }
-+      }
-+
-+      rc_bit_tree_decode(rc, prob_len, num_bits, &len);
-+      len += offset;
-+
-+      if (cst->state < 4) {
-+              int pos_slot;
-+
-+              cst->state += LZMA_NUM_LIT_STATES;
-+              prob =
-+                      p + LZMA_POS_SLOT +
-+                      ((len <
-+                        LZMA_NUM_LEN_TO_POS_STATES ? len :
-+                        LZMA_NUM_LEN_TO_POS_STATES - 1)
-+                       << LZMA_NUM_POS_SLOT_BITS);
-+              rc_bit_tree_decode(rc, prob,
-+                                 LZMA_NUM_POS_SLOT_BITS,
-+                                 &pos_slot);
-+              if (pos_slot >= LZMA_START_POS_MODEL_INDEX) {
-+                      int i, mi;
-+                      num_bits = (pos_slot >> 1) - 1;
-+                      cst->rep0 = 2 | (pos_slot & 1);
-+                      if (pos_slot < LZMA_END_POS_MODEL_INDEX) {
-+                              cst->rep0 <<= num_bits;
-+                              prob = p + LZMA_SPEC_POS +
-+                                      cst->rep0 - pos_slot - 1;
-+                      } else {
-+                              num_bits -= LZMA_NUM_ALIGN_BITS;
-+                              while (num_bits--)
-+                                      cst->rep0 = (cst->rep0 << 1) |
-+                                              rc_direct_bit(rc);
-+                              prob = p + LZMA_ALIGN;
-+                              cst->rep0 <<= LZMA_NUM_ALIGN_BITS;
-+                              num_bits = LZMA_NUM_ALIGN_BITS;
-+                      }
-+                      i = 1;
-+                      mi = 1;
-+                      while (num_bits--) {
-+                              if (rc_get_bit(rc, prob + mi, &mi))
-+                                      cst->rep0 |= i;
-+                              i <<= 1;
-+                      }
-+              } else
-+                      cst->rep0 = pos_slot;
-+              if (++(cst->rep0) == 0)
-+                      return;
-+      }
-+
-+      len += LZMA_MATCH_MIN_LEN;
-+
-+      copy_bytes(wr, cst->rep0, len);
-+}
-+
-+
-+
-+STATIC inline int INIT unlzma(unsigned char *buf, int in_len,
-+                            int(*fill)(void*, unsigned int),
-+                            int(*flush)(void*, unsigned int),
-+                            unsigned char *output,
-+                            int *posp,
-+                            void(*error_fn)(char *x)
-+      )
-+{
-+      struct lzma_header header;
-+      int lc, pb, lp;
-+      uint32_t pos_state_mask;
-+      uint32_t literal_pos_mask;
-+      uint16_t *p;
-+      int num_probs;
-+      struct rc rc;
-+      int i, mi;
-+      struct writer wr;
-+      struct cstate cst;
-+      unsigned char *inbuf;
-+      int ret = -1;
-+
-+      set_error_fn(error_fn);
-+      if (!flush)
-+              in_len -= 4; /* Uncompressed size hack active in pre-boot
-+                              environment */
-+      if (buf)
-+              inbuf = buf;
-+      else
-+              inbuf = malloc(LZMA_IOBUF_SIZE);
-+      if (!inbuf) {
-+              error("Could not allocate input bufer");
-+              goto exit_0;
-+      }
-+
-+      cst.state = 0;
-+      cst.rep0 = cst.rep1 = cst.rep2 = cst.rep3 = 1;
-+
-+      wr.header = &header;
-+      wr.flush = flush;
-+      wr.global_pos = 0;
-+      wr.previous_byte = 0;
-+      wr.buffer_pos = 0;
-+
-+      rc_init(&rc, fill, inbuf, in_len);
-+
-+      for (i = 0; i < sizeof(header); i++) {
-+              if (rc.ptr >= rc.buffer_end)
-+                      rc_read(&rc);
-+              ((unsigned char *)&header)[i] = *rc.ptr++;
-+      }
-+
-+      if (header.pos >= (9 * 5 * 5))
-+              error("bad header");
-+
-+      mi = 0;
-+      lc = header.pos;
-+      while (lc >= 9) {
-+              mi++;
-+              lc -= 9;
-+      }
-+      pb = 0;
-+      lp = mi;
-+      while (lp >= 5) {
-+              pb++;
-+              lp -= 5;
-+      }
-+      pos_state_mask = (1 << pb) - 1;
-+      literal_pos_mask = (1 << lp) - 1;
-+
-+      ENDIAN_CONVERT(header.dict_size);
-+      ENDIAN_CONVERT(header.dst_size);
-+
-+      if (header.dict_size == 0)
-+              header.dict_size = 1;
-+
-+      if (output)
-+              wr.buffer = output;
-+      else {
-+              wr.bufsize = MIN(header.dst_size, header.dict_size);
-+              wr.buffer = large_malloc(wr.bufsize);
-+      }
-+      if (wr.buffer == NULL)
-+              goto exit_1;
-+
-+      num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp));
-+      p = (uint16_t *) large_malloc(num_probs * sizeof(*p));
-+      if (p == 0)
-+              goto exit_2;
-+      num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp));
-+      for (i = 0; i < num_probs; i++)
-+              p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1;
-+
-+      rc_init_code(&rc);
-+
-+      while (get_pos(&wr) < header.dst_size) {
-+              int pos_state = get_pos(&wr) & pos_state_mask;
-+              uint16_t *prob = p + LZMA_IS_MATCH +
-+                      (cst.state << LZMA_NUM_POS_BITS_MAX) + pos_state;
-+              if (rc_is_bit_0(&rc, prob))
-+                      process_bit0(&wr, &rc, &cst, p, pos_state, prob,
-+                                   lc, literal_pos_mask);
-+              else {
-+                      process_bit1(&wr, &rc, &cst, p, pos_state, prob);
-+                      if (cst.rep0 == 0)
-+                              break;
-+              }
-+      }
-+
-+      if (posp)
-+              *posp = rc.ptr-rc.buffer;
-+      if (wr.flush)
-+              wr.flush(wr.buffer, wr.buffer_pos);
-+      ret = 0;
-+      large_free(p);
-+exit_2:
-+      if (!output)
-+              large_free(wr.buffer);
-+exit_1:
-+      if (!buf)
-+              free(inbuf);
-+exit_0:
-+      return ret;
-+}
-+
-+#define decompress unlzma
-diff -purN linux-2.6.27.6/lib/inflate.c linux-2.6.27.6udpcast/lib/inflate.c
---- linux-2.6.27.6/lib/inflate.c       2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/inflate.c        2008-11-16 23:02:55.000000000 +0100
-@@ -109,20 +109,78 @@ static char rcsid[] = "#Id: inflate.c,v 
- #endif
- #ifndef STATIC
-+#include <linux/decompress/inflate.h>
-+#endif /* ! STATIC */
--#if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H)
--#  include <sys/types.h>
--#  include <stdlib.h>
-+#include <linux/decompress/mm.h>
-+
-+#include <linux/string.h>
-+
-+#ifdef NEW_CODE
-+static int(*flush_cb)(void*, unsigned int);
-+static int(*fill_cb)(void*, unsigned int);
-+
-+/* Begin stuff copied from initramfs */
-+/*
-+ * gzip declarations
-+ */
-+
-+#define OF(args)  args
-+
-+#ifndef memzero
-+#define memzero(s, n)     memset((s), 0, (n))
- #endif
--#include "gzip.h"
--#define STATIC
--#endif /* !STATIC */
-+#define INBUFSIZ 4096
-+
-+#define WSIZE 0x8000    /* window size--must be a power of two, and */
-+                      /*  at least 32K for zip's deflate method */
-+
-+static uint8_t *inbuf;
-+static uint8_t *window;
-+
-+static unsigned insize;  /* valid bytes in inbuf */
-+static unsigned outcnt;  /* bytes in output buffer */
-+static long bytes_out;
-+
-+/* --- */
-+
-+static unsigned inptr;   /* index of next byte to be processed in inbuf */
-+
-+/* --- */
-+
-+/* ===========================================================================
-+ * Fill the input buffer. This is called only when the buffer is empty
-+ * and at least one byte is really needed.
-+ * Returning -1 does not guarantee that gunzip() will ever return.
-+ */
-+static int INIT fill_inbuf(void)
-+{
-+      insize = fill_cb(inbuf, INBUFSIZ);
-+      if (insize <= 0) {
-+              error("RAMDISK: ran out of compressed data");
-+              return -1;
-+      }
-+
-+      inptr = 1;
-+
-+      return inbuf[0];
-+}
-+
-+#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
-+
-+/* Diagnostic functions (stubbed out) */
-+#define Assert(cond, msg)
-+#define Trace(x)
-+#define Tracev(x)
-+#define Tracevv(x)
-+#define Tracec(c, x)
-+#define Tracecv(c, x)
--#ifndef INIT
--#define INIT
-+static void flush_window(void);
-+/* End stuff copied from initramfs */
- #endif
--      
-+
- #define slide window
- /* Huffman code lookup table entry--this entry is four bytes for machines
-@@ -133,10 +191,10 @@ static char rcsid[] = "#Id: inflate.c,v 
-    an unused code.  If a code with e == 99 is looked up, this implies an
-    error in the data. */
- struct huft {
--  uch e;                /* number of extra bits or operation */
--  uch b;                /* number of bits in this code or subcode */
-+  uint8_t e;                /* number of extra bits or operation */
-+  uint8_t b;                /* number of bits in this code or subcode */
-   union {
--    ush n;              /* literal, length base, or distance base */
-+    uint16_t n;              /* literal, length base, or distance base */
-     struct huft *t;     /* pointer to next level of table */
-   } v;
- };
-@@ -144,7 +202,7 @@ struct huft {
- /* Function prototypes */
- STATIC int INIT huft_build OF((unsigned *, unsigned, unsigned, 
--              const ush *, const ush *, struct huft **, int *));
-+              const uint16_t *, const uint16_t *, struct huft **, int *));
- STATIC int INIT huft_free OF((struct huft *));
- STATIC int INIT inflate_codes OF((struct huft *, struct huft *, int, int));
- STATIC int INIT inflate_stored OF((void));
-@@ -159,28 +217,28 @@ STATIC int INIT inflate OF((void));
-    circular buffer.  The index is updated simply by incrementing and then
-    ANDing with 0x7fff (32K-1). */
- /* It is left to other modules to supply the 32 K area.  It is assumed
--   to be usable as if it were declared "uch slide[32768];" or as just
--   "uch *slide;" and then malloc'ed in the latter case.  The definition
-+   to be usable as if it were declared "uint8_t slide[32768];" or as just
-+   "uint8_t *slide;" and then malloc'ed in the latter case.  The definition
-    must be in unzip.h, included above. */
- /* unsigned wp;             current position in slide */
- #define wp outcnt
- #define flush_output(w) (wp=(w),flush_window())
- /* Tables for deflate from PKZIP's appnote.txt. */
--static const unsigned border[] = {    /* Order of the bit length code lengths */
-+static const unsigned border[] = {   /* Order of the bit length code lengths */
-         16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
--static const ush cplens[] = {         /* Copy lengths for literal codes 257..285 */
-+static const uint16_t cplens[] = { /* Copy lengths for literal codes 257..285 */
-         3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
-         /* note: see note #13 above about the 258 in this list. */
--static const ush cplext[] = {         /* Extra bits for literal codes 257..285 */
-+static const uint16_t cplext[] = {   /* Extra bits for literal codes 257..285 */
-         0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
-         3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */
--static const ush cpdist[] = {         /* Copy offsets for distance codes 0..29 */
-+static const uint16_t cpdist[] = {   /* Copy offsets for distance codes 0..29 */
-         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-         8193, 12289, 16385, 24577};
--static const ush cpdext[] = {         /* Extra bits for distance codes */
-+static const uint16_t cpdext[] = {   /* Extra bits for distance codes */
-         0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
-         7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
-         12, 12, 13, 13};
-@@ -217,59 +275,21 @@ static const ush cpdext[] = {         /*
-    the stream.
-  */
--STATIC ulg bb;                         /* bit buffer */
-+STATIC uint32_t bb;                         /* bit buffer */
- STATIC unsigned bk;                    /* bits in bit buffer */
--STATIC const ush mask_bits[] = {
-+STATIC const uint16_t mask_bits[] = {
-     0x0000,
-     0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
-     0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
- };
--#define NEXTBYTE()  ({ int v = get_byte(); if (v < 0) goto underrun; (uch)v; })
--#define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}
-+#define NEXTBYTE()  ({ int v = get_byte(); if (v < 0) goto underrun; \
-+                      (uint8_t)v; })
-+#define NEEDBITS(n) {while (k < (n)) \
-+                      {b |= ((uint32_t)NEXTBYTE())<<k; k += 8; } }
- #define DUMPBITS(n) {b>>=(n);k-=(n);}
--#ifndef NO_INFLATE_MALLOC
--/* A trivial malloc implementation, adapted from
-- *  malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
-- */
--
--static unsigned long malloc_ptr;
--static int malloc_count;
--
--static void *malloc(int size)
--{
--       void *p;
--
--       if (size < 0)
--              error("Malloc error");
--       if (!malloc_ptr)
--              malloc_ptr = free_mem_ptr;
--
--       malloc_ptr = (malloc_ptr + 3) & ~3;     /* Align */
--
--       p = (void *)malloc_ptr;
--       malloc_ptr += size;
--
--       if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
--              error("Out of memory");
--
--       malloc_count++;
--       return p;
--}
--
--static void free(void *where)
--{
--       malloc_count--;
--       if (!malloc_count)
--              malloc_ptr = free_mem_ptr;
--}
--#else
--#define malloc(a) kmalloc(a, GFP_KERNEL)
--#define free(a) kfree(a)
--#endif
--
- /*
-    Huffman code decoding is performed using a multi-level table lookup.
-    The fastest way to decode is to simply build a lookup table whose
-@@ -307,7 +327,7 @@ STATIC const int lbits = 9;          /* 
- STATIC const int dbits = 6;          /* bits in base distance lookup table */
--/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
-+/* If BMAX needs to be larger than 16, then h and x[] should be uint32_t. */
- #define BMAX 16         /* maximum bit length of any code (16 for explode) */
- #define N_MAX 288       /* maximum number of codes in any set */
-@@ -319,8 +339,8 @@ STATIC int INIT huft_build(
-       unsigned *b,            /* code lengths in bits (all assumed <= BMAX) */
-       unsigned n,             /* number of codes (assumed <= N_MAX) */
-       unsigned s,             /* number of simple-valued codes (0..s-1) */
--      const ush *d,           /* list of base values for non-simple codes */
--      const ush *e,           /* list of extra bits for non-simple codes */
-+      const uint16_t *d,      /* list of base values for non-simple codes */
-+      const uint16_t *e,      /* list of extra bits for non-simple codes */
-       struct huft **t,        /* result: starting table */
-       int *m                  /* maximum lookup bits, returns actual */
-       )
-@@ -500,8 +520,8 @@ DEBG1("5 ");
-         if (h)
-         {
-           x[h] = i;             /* save pattern for backing up */
--          r.b = (uch)l;         /* bits to dump before this table */
--          r.e = (uch)(16 + j);  /* bits in this table */
-+        r.b = (uint8_t)l;         /* bits to dump before this table */
-+        r.e = (uint8_t)(16 + j);  /* bits in this table */
-           r.v.t = q;            /* pointer to this table */
-           j = i >> (w - l);     /* (get around Turbo C bug) */
-           u[h-1][j] = r;        /* connect to last table */
-@@ -511,18 +531,18 @@ DEBG1("6 ");
- DEBG("h6c ");
-       /* set up table entry in r */
--      r.b = (uch)(k - w);
-+      r.b = (uint8_t)(k - w);
-       if (p >= v + n)
-         r.e = 99;               /* out of values--invalid code */
-       else if (*p < s)
-       {
--        r.e = (uch)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
--        r.v.n = (ush)(*p);             /* simple code is just the value */
-+      r.e = (uint8_t)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
-+      r.v.n = (uint16_t)(*p);             /* simple code is just the value */
-       p++;                           /* one compiler does not like *p++ */
-       }
-       else
-       {
--        r.e = (uch)e[*p - s];   /* non-simple--look up in lists */
-+      r.e = (uint8_t)e[*p - s];   /* non-simple--look up in lists */
-         r.v.n = d[*p++ - s];
-       }
- DEBG("h6d ");
-@@ -592,11 +612,12 @@ STATIC int INIT inflate_codes(
-    Return an error code or zero if it all goes ok. */
- {
-   register unsigned e;  /* table entry flag/number of extra bits */
--  unsigned n, d;        /* length and index for copy */
-+  unsigned n;
-+  int d;              /* source index for copy */
-   unsigned w;           /* current window position */
-   struct huft *t;       /* pointer to table entry */
-   unsigned ml, md;      /* masks for bl and bd bits */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
-@@ -622,7 +643,7 @@ STATIC int INIT inflate_codes(
-     DUMPBITS(t->b)
-     if (e == 16)                /* then it's a literal */
-     {
--      slide[w++] = (uch)t->v.n;
-+      slide[w++] = (uint8_t)t->v.n;
-       Tracevv((stderr, "%c", slide[w-1]));
-       if (w == WSIZE)
-       {
-@@ -659,11 +680,25 @@ STATIC int INIT inflate_codes(
-       /* do the copy */
-       do {
--        n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);
-+#ifdef NEW_CODE
-+      if (flush_cb) {
-+#endif
-+              /* Sliding window emulated using circular buffer:
-+               * manage wrap-around */
-+              e = WSIZE - ((d &= WSIZE-1) > w ? d : w);
-+              if (e > n)
-+                      e = n;
-+#ifdef NEW_CODE
-+      } else {
-+              e = n;
-+      }
-+#endif
-+      n -= e;
-+
- #if !defined(NOMEMCPY) && !defined(DEBUG)
-         if (w - d >= e)         /* (this test assumes unsigned comparison) */
-         {
--          memcpy(slide + w, slide + d, e);
-+              memcpy(slide + w, slide + d, e);
-           w += e;
-           d += e;
-         }
-@@ -673,9 +708,8 @@ STATIC int INIT inflate_codes(
-             slide[w++] = slide[d++];
-           Tracevv((stderr, "%c", slide[w-1]));
-           } while (--e);
--        if (w == WSIZE)
--        {
--          flush_output(w);
-+      if (w == WSIZE) {
-+        flush_output(w);
-           w = 0;
-         }
-       } while (n);
-@@ -702,7 +736,7 @@ STATIC int INIT inflate_stored(void)
- {
-   unsigned n;           /* number of bytes in block */
-   unsigned w;           /* current window position */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
- DEBG("<stor");
-@@ -732,7 +766,7 @@ DEBG("<stor");
-   while (n--)
-   {
-     NEEDBITS(8)
--    slide[w++] = (uch)b;
-+    slide[w++] = (uint8_t)b;
-     if (w == WSIZE)
-     {
-       flush_output(w);
-@@ -838,7 +872,7 @@ STATIC int noinline INIT inflate_dynamic
-   unsigned nl;          /* number of literal/length codes */
-   unsigned nd;          /* number of distance codes */
-   unsigned *ll;         /* literal/length and distance code lengths */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
-   int ret;
-@@ -1033,7 +1067,7 @@ STATIC int INIT inflate_block(
- /* decompress an inflated block */
- {
-   unsigned t;           /* block type */
--  register ulg b;       /* bit buffer */
-+  register uint32_t b;       /* bit buffer */
-   register unsigned k;  /* number of bits in bit buffer */
-   DEBG("<blk");
-@@ -1130,8 +1164,8 @@ STATIC int INIT inflate(void)
-  *
-  **********************************************************************/
--static ulg crc_32_tab[256];
--static ulg crc;               /* initialized in makecrc() so it'll reside in bss */
-+static uint32_t crc_32_tab[256];
-+static uint32_t crc;  /* initialized in makecrc() so it'll reside in bss */
- #define CRC_VALUE (crc ^ 0xffffffffUL)
- /*
-@@ -1172,7 +1206,7 @@ makecrc(void)
-   }
-   /* this is initialized here so this code could reside in ROM */
--  crc = (ulg)0xffffffffUL; /* shift register contents */
-+  crc = (uint32_t)0xffffffffUL; /* shift register contents */
- }
- /* gzip flag byte */
-@@ -1184,18 +1218,89 @@ makecrc(void)
- #define ENCRYPTED    0x20 /* bit 5 set: file is encrypted */
- #define RESERVED     0xC0 /* bit 6,7:   reserved */
-+#ifdef NEW_CODE
-+/* ===========================================================================
-+ * Write the output window window[0..outcnt-1] and update crc and bytes_out.
-+ * (Used for the decompressed data only.)
-+ */
-+static void INIT flush_window(void)
-+{
-+      uint32_t c = crc;         /* temporary variable */
-+      unsigned n;
-+      uint8_t *in, ch;
-+
-+      in = window;
-+      for (n = 0; n < outcnt; n++) {
-+              ch = *in++;
-+              c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
-+      }
-+      crc = c;
-+      bytes_out += (uint32_t)outcnt;
-+      if (flush_cb != NULL)
-+              flush_cb(window, outcnt); /* TODO: handle unzip_error */
-+      else
-+              window += outcnt;
-+      outcnt = 0;
-+}
-+
-+static int empty_fill(void *buf, unsigned int len)
-+{
-+      return 0;
-+}
-+#endif
-+
-+
- /*
-  * Do the uncompression!
-  */
--static int INIT gunzip(void)
-+STATIC int INIT gunzip(
-+#ifdef NEW_CODE
-+                     unsigned char *buf, int len,
-+                     int(*fill)(void*, unsigned int),
-+                     int(*flush)(void*, unsigned int),
-+                     unsigned char *output,
-+                     int *posp,
-+                     void(*error_fn)(char *x)
-+#else
-+                     void
-+#endif
-+  )
- {
--    uch flags;
-+    uint8_t flags;
-     unsigned char magic[2]; /* magic header */
-     char method;
--    ulg orig_crc = 0;       /* original crc */
--    ulg orig_len = 0;       /* original uncompressed length */
-+    uint32_t orig_crc = 0;       /* original crc */
-+    uint32_t orig_len = 0;       /* original uncompressed length */
-     int res;
-+#ifdef NEW_CODE
-+    set_error_fn(error_fn);
-+    if (fill == NULL)
-+          fill_cb = empty_fill;
-+    else
-+          fill_cb = fill;
-+    if (output)
-+          window = output;
-+    else {
-+          window = malloc(0x8000);
-+          if (!window)
-+                  panic("can't allocate buffers");
-+          flush_cb = flush;
-+    }
-+
-+    insize = len;
-+    if (buf)
-+          inbuf = buf;
-+    else
-+          inbuf = malloc(INBUFSIZ);
-+#endif
-+
-+    inptr = 0;
-+    outcnt = 0;               /* bytes in output buffer */
-+    bytes_out = 0;
-+    crc = (uint32_t)0xffffffffL; /* shift register contents */
-+    makecrc();
-+
-     magic[0] = NEXTBYTE();
-     magic[1] = NEXTBYTE();
-     method   = NEXTBYTE();
-@@ -1212,7 +1317,7 @@ static int INIT gunzip(void)
-           return -1;
-     }
--    flags  = (uch)get_byte();
-+    flags  = (uint8_t)get_byte();
-     if ((flags & ENCRYPTED) != 0) {
-           error("Input is encrypted");
-           return -1;
-@@ -1277,15 +1382,15 @@ static int INIT gunzip(void)
-     /* crc32  (see algorithm.doc)
-      * uncompressed input size modulo 2^32
-      */
--    orig_crc = (ulg) NEXTBYTE();
--    orig_crc |= (ulg) NEXTBYTE() << 8;
--    orig_crc |= (ulg) NEXTBYTE() << 16;
--    orig_crc |= (ulg) NEXTBYTE() << 24;
-+    orig_crc = (uint32_t) NEXTBYTE();
-+    orig_crc |= (uint32_t) NEXTBYTE() << 8;
-+    orig_crc |= (uint32_t) NEXTBYTE() << 16;
-+    orig_crc |= (uint32_t) NEXTBYTE() << 24;
-     
--    orig_len = (ulg) NEXTBYTE();
--    orig_len |= (ulg) NEXTBYTE() << 8;
--    orig_len |= (ulg) NEXTBYTE() << 16;
--    orig_len |= (ulg) NEXTBYTE() << 24;
-+    orig_len = (uint32_t) NEXTBYTE();
-+    orig_len |= (uint32_t) NEXTBYTE() << 8;
-+    orig_len |= (uint32_t) NEXTBYTE() << 16;
-+    orig_len |= (uint32_t) NEXTBYTE() << 24;
-     
-     /* Validate decompression */
-     if (orig_crc != CRC_VALUE) {
-@@ -1296,11 +1401,22 @@ static int INIT gunzip(void)
-           error("length error");
-           return -1;
-     }
-+#ifdef NEW_CODE
-+    if (!output)
-+          free(window);
-+    if (posp)
-+          *posp = inptr;
-+#endif
-     return 0;
-  underrun:                    /* NEXTBYTE() goto's here if needed */
-+    free(window);
-+#ifdef NEW_CODE
-+    if (!buf)
-+          free(inbuf);
-+#endif
-     error("out of input data");
-     return -1;
- }
--
-+#define decompress gunzip
-diff -purN linux-2.6.27.6/lib/Makefile linux-2.6.27.6udpcast/lib/Makefile
---- linux-2.6.27.6/lib/Makefile        2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/lib/Makefile 2008-11-16 23:07:34.000000000 +0100
-@@ -11,7 +11,8 @@ lib-y := ctype.o string.o vsprintf.o cmd
-        rbtree.o radix-tree.o dump_stack.o \
-        idr.o int_sqrt.o extable.o prio_tree.o \
-        sha1.o irq_regs.o reciprocal_div.o argv_split.o \
--       proportions.o prio_heap.o ratelimit.o show_mem.o
-+       proportions.o prio_heap.o ratelimit.o show_mem.o \
-+       inflate.o decompress_bunzip2.o decompress_unlzma.o
- lib-$(CONFIG_MMU) += ioremap.o
- lib-$(CONFIG_SMP) += cpumask.o
-diff -purN linux-2.6.27.6/scripts/bin_size linux-2.6.27.6udpcast/scripts/bin_size
---- linux-2.6.27.6/scripts/bin_size    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27.6udpcast/scripts/bin_size     2008-11-16 23:43:34.000000000 +0100
-@@ -0,0 +1,10 @@
-+#!/bin/sh
-+
-+if [ $# = 0 ] ; then
-+   echo Usage: $0 file
-+fi
-+
-+size_dec=`stat -c "%s" $1`
-+size_hex_echo_string=`printf "%08x" $size_dec |
-+     sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g'`
-+/bin/echo -ne $size_hex_echo_string
-diff -purN linux-2.6.27.6/scripts/Makefile.lib linux-2.6.27.6udpcast/scripts/Makefile.lib
---- linux-2.6.27.6/scripts/Makefile.lib        2008-11-13 18:56:21.000000000 +0100
-+++ linux-2.6.27.6udpcast/scripts/Makefile.lib 2008-11-16 23:02:55.000000000 +0100
-@@ -174,3 +174,17 @@ quiet_cmd_gzip = GZIP    $@
- cmd_gzip = gzip -f -9 < $< > $@
-+# Bzip2
-+# ---------------------------------------------------------------------------
-+
-+# Bzip2 does not include size in file... so we have to fake that
-+size_append=$(CONFIG_SHELL) $(srctree)/scripts/bin_size
-+
-+quiet_cmd_bzip2 = BZIP2    $@
-+cmd_bzip2 = (bzip2 -9 < $< ; $(size_append) $<) > $@ || (rm -f $@ ; false)
-+
-+# Lzma
-+# ---------------------------------------------------------------------------
-+
-+quiet_cmd_lzma = LZMA    $@
-+cmd_lzma = (lzma e $< $@; $(size_append) $<) > $@ || (rm -f $@ ; false)