summaryrefslogtreecommitdiffstats
path: root/target/linux/rdc/files-2.6.24/arch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/rdc/files-2.6.24/arch')
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c24
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile5
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c91
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c263
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c14
-rw-r--r--target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c272
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c586
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h100
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c345
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c24
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile5
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c91
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c263
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c14
-rw-r--r--target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c272
15 files changed, 0 insertions, 2369 deletions
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
index f4b9083bfc..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/kernel/cpu/rdc.c
+++ /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
index 5961bc7910..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/Makefile
+++ /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
index dbd03270f1..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/gpio.c
+++ /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
index 86981f8441..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/platform.c
+++ /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
index ad206c3d05..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/setup.c
+++ /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
index 13b69f68ab..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/i386/mach-rdc/wdt.c
+++ /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
index a17d6caabf..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.c
+++ /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
index 53677350ae..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/LzmaDecode.h
+++ /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
index bd74cb7948..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/boot/compressed/lzma_misc.c
+++ /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
index f4b9083bfc..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/kernel/cpu/rdc.c
+++ /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
index 5961bc7910..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/Makefile
+++ /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
index dbd03270f1..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/gpio.c
+++ /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
index 86981f8441..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/platform.c
+++ /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
index ad206c3d05..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/setup.c
+++ /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
index 13b69f68ab..0000000000
--- a/target/linux/rdc/files-2.6.24/arch/x86/mach-rdc/wdt.c
+++ /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);