X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/b739c888dfd9095551cbf13798ed42fe1ec2bfc6..0d7b51245916e9f8c1a1ff3d3fddf59bd7e58511:/target/linux/rb532-2.6/patches/100-rb5xx_support.patch diff --git a/target/linux/rb532-2.6/patches/100-rb5xx_support.patch b/target/linux/rb532-2.6/patches/100-rb5xx_support.patch index 5886a75e3..9a8f21d20 100644 --- a/target/linux/rb532-2.6/patches/100-rb5xx_support.patch +++ b/target/linux/rb532-2.6/patches/100-rb5xx_support.patch @@ -1,7 +1,7 @@ diff -urN linux.old/arch/mips/Kconfig linux.dev/arch/mips/Kconfig ---- linux.old/arch/mips/Kconfig 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/arch/mips/Kconfig 2006-06-15 16:26:53.000000000 +0200 -@@ -739,6 +739,19 @@ +--- linux.old/arch/mips/Kconfig 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/arch/mips/Kconfig 2006-10-11 21:56:38.000000000 +0200 +@@ -742,6 +742,19 @@ select SYS_SUPPORTS_BIG_ENDIAN select TOSHIBA_BOARDS @@ -19,9 +19,9 @@ diff -urN linux.old/arch/mips/Kconfig linux.dev/arch/mips/Kconfig + such as the RB532. + config TOSHIBA_RBTX4927 - bool "Support for Toshiba TBTX49[23]7 board" + bool "Toshiba TBTX49[23]7 board" select DMA_NONCOHERENT -@@ -1012,7 +1025,7 @@ +@@ -1028,7 +1041,7 @@ config MIPS_L1_CACHE_SHIFT int @@ -31,9 +31,9 @@ diff -urN linux.old/arch/mips/Kconfig linux.dev/arch/mips/Kconfig default "5" diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile ---- linux.old/arch/mips/Makefile 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/arch/mips/Makefile 2006-06-15 16:26:53.000000000 +0200 -@@ -725,6 +725,13 @@ +--- linux.old/arch/mips/Makefile 2006-10-11 21:55:59.000000000 +0200 ++++ linux.dev/arch/mips/Makefile 2006-10-11 21:56:38.000000000 +0200 +@@ -580,6 +580,13 @@ load-$(CONFIG_TOSHIBA_JMR3927) += 0xffffffff80050000 # @@ -48,17 +48,17 @@ diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile # Toshiba RBTX4937 board # diff -urN linux.old/arch/mips/mm/tlbex.c linux.dev/arch/mips/mm/tlbex.c ---- linux.old/arch/mips/mm/tlbex.c 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/arch/mips/mm/tlbex.c 2006-06-15 16:26:53.000000000 +0200 -@@ -852,7 +852,6 @@ - +--- linux.old/arch/mips/mm/tlbex.c 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/arch/mips/mm/tlbex.c 2006-10-11 21:56:38.000000000 +0200 +@@ -876,7 +876,6 @@ case CPU_R10000: case CPU_R12000: + case CPU_R14000: - case CPU_4KC: case CPU_SB1: case CPU_SB1A: case CPU_4KSC: -@@ -880,6 +879,7 @@ +@@ -904,6 +903,7 @@ tlbw(p); break; @@ -68,7 +68,7 @@ diff -urN linux.old/arch/mips/mm/tlbex.c linux.dev/arch/mips/mm/tlbex.c case CPU_34K: diff -urN linux.old/arch/mips/pci/fixup-rb500.c linux.dev/arch/mips/pci/fixup-rb500.c --- linux.old/arch/mips/pci/fixup-rb500.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/pci/fixup-rb500.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/pci/fixup-rb500.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,49 @@ +/* + * Copyright 2001 MontaVista Software Inc. @@ -120,8 +120,8 @@ diff -urN linux.old/arch/mips/pci/fixup-rb500.c linux.dev/arch/mips/pci/fixup-rb +} + diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile ---- linux.old/arch/mips/pci/Makefile 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/arch/mips/pci/Makefile 2006-06-15 16:26:53.000000000 +0200 +--- linux.old/arch/mips/pci/Makefile 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/arch/mips/pci/Makefile 2006-10-11 21:56:38.000000000 +0200 @@ -57,3 +57,4 @@ obj-$(CONFIG_TOSHIBA_RBTX4938) += fixup-tx4938.o ops-tx4938.o obj-$(CONFIG_VICTOR_MPC30X) += fixup-mpc30x.o @@ -129,7 +129,7 @@ diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile +obj-$(CONFIG_MIKROTIK_RB500) += pci-rc32434.o ops-rc32434.o fixup-rb500.o diff -urN linux.old/arch/mips/pci/ops-rc32434.c linux.dev/arch/mips/pci/ops-rc32434.c --- linux.old/arch/mips/pci/ops-rc32434.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/pci/ops-rc32434.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/pci/ops-rc32434.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,195 @@ +/************************************************************************** + * @@ -328,7 +328,7 @@ diff -urN linux.old/arch/mips/pci/ops-rc32434.c linux.dev/arch/mips/pci/ops-rc32 +}; diff -urN linux.old/arch/mips/pci/pci-rc32434.c linux.dev/arch/mips/pci/pci-rc32434.c --- linux.old/arch/mips/pci/pci-rc32434.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/pci/pci-rc32434.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/pci/pci-rc32434.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,234 @@ +/************************************************************************** + * @@ -566,8 +566,8 @@ diff -urN linux.old/arch/mips/pci/pci-rc32434.c linux.dev/arch/mips/pci/pci-rc32 + diff -urN linux.old/arch/mips/rb500/devices.c linux.dev/arch/mips/rb500/devices.c --- linux.old/arch/mips/rb500/devices.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/devices.c 2006-06-15 16:27:14.000000000 +0200 -@@ -0,0 +1,211 @@ ++++ linux.dev/arch/mips/rb500/devices.c 2006-10-11 21:56:38.000000000 +0200 +@@ -0,0 +1,198 @@ +#include +#include +#include @@ -677,10 +677,25 @@ diff -urN linux.old/arch/mips/rb500/devices.c linux.dev/arch/mips/rb500/devices. + .num_resources = ARRAY_SIZE(cf_slot0_res), +}; + ++/* Resources and device for NAND. There is no data needed and no irqs, so just define the memory used. */ ++static struct resource nand_slot0_res[] = { ++ { ++ .name = "nand_membase", ++ .flags = IORESOURCE_MEM ++ } ++}; ++ ++static struct platform_device nand_slot0 = { ++ .id = 0, ++ .name = "rb500-nand", ++ .resource = nand_slot0_res, ++ .num_resources = ARRAY_SIZE(nand_slot0_res), ++}; + + +static struct platform_device *rb500_devs[] = { + &korina_dev0, ++ &nand_slot0, + &cf_slot0 +}; + @@ -711,6 +726,7 @@ diff -urN linux.old/arch/mips/rb500/devices.c linux.dev/arch/mips/rb500/devices. + +/* DEVICE CONTROLLER 1 */ +#define CFG_DC_DEV1 (void*)0xb8010010 ++#define CFG_DC_DEV2 (void*)0xb8010020 +#define CFG_DC_DEVBASE 0x0 +#define CFG_DC_DEVMASK 0x4 +#define CFG_DC_DEVC 0x8 @@ -726,6 +742,10 @@ diff -urN linux.old/arch/mips/rb500/devices.c linux.dev/arch/mips/rb500/devices. + cf_slot0_res[0].start = readl(CFG_DC_DEV1 + CFG_DC_DEVBASE); + cf_slot0_res[0].end = cf_slot0_res[0].start + 0x1000; + } ++ ++ /* There is always a NAND device */ ++ nand_slot0_res[0].start = readl( CFG_DC_DEV2 + CFG_DC_DEVBASE); ++ nand_slot0_res[0].end = nand_slot0_res[0].start + 0x1000; + + return platform_add_devices(rb500_devs, ARRAY_SIZE(rb500_devs)); +} @@ -745,43 +765,10 @@ diff -urN linux.old/arch/mips/rb500/devices.c linux.dev/arch/mips/rb500/devices. +extern void block2mtd_setup(char *initstr); +extern void mount_devfs_fs(void); + -+static int __init setup_mtd(void) -+{ -+ struct hd_struct **part; -+ int num = 0, i; -+ char initstr[64]; -+ -+ if (cf_slot0_data.gd == NULL) -+ return 0; -+ -+ /* count partitions */ -+ part = cf_slot0_data.gd->part; -+ while (part[num] != NULL) { -+ num++; -+ } -+ -+ if (num < 2) -+ return 0; -+ -+ mount_devfs_fs(); -+ printk("Setting up block2mtd devices\n"); -+ -+ block2mtd_setup("/dev/cf/card0/part1,131072,kernel"); -+ block2mtd_setup("/dev/cf/card0/part2,131072,rootfs"); -+ -+ for (i = 2; part[i]; i++) { -+ sprintf(initstr, "/dev/cf/card0/part%d,131072,part%d", i + 1, i + 1); -+ block2mtd_setup(initstr); -+ } -+ -+ return 0; -+} -+ -+late_initcall(setup_mtd); +#endif diff -urN linux.old/arch/mips/rb500/early_serial.c linux.dev/arch/mips/rb500/early_serial.c --- linux.old/arch/mips/rb500/early_serial.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/early_serial.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/early_serial.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,199 @@ +/************************************************************************** + * @@ -984,8 +971,8 @@ diff -urN linux.old/arch/mips/rb500/early_serial.c linux.dev/arch/mips/rb500/ear +} diff -urN linux.old/arch/mips/rb500/irq.c linux.dev/arch/mips/rb500/irq.c --- linux.old/arch/mips/rb500/irq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/irq.c 2006-06-15 16:26:53.000000000 +0200 -@@ -0,0 +1,266 @@ ++++ linux.dev/arch/mips/rb500/irq.c 2006-10-11 21:56:38.000000000 +0200 +@@ -0,0 +1,264 @@ +/* + * BRIEF MODULE DESCRIPTION + * RC32434 interrupt routines. @@ -1214,31 +1201,10 @@ diff -urN linux.old/arch/mips/rb500/irq.c linux.dev/arch/mips/rb500/irq.c +}; + + -+/* Main Interrupt dispatcher */ -+asmlinkage void plat_irq_dispatch(struct pt_regs *regs) -+{ -+ unsigned int ip, pend, group; -+ volatile unsigned int *addr; -+ unsigned int cp0_cause = read_c0_cause() & read_c0_status(); -+ -+ if ((ip = (cp0_cause & 0x7c00))) { -+ group = 21 - rc32434_clz(ip); -+ -+ addr = intr_group[group].base_addr; -+ -+ pend = READ_PEND(addr); -+ pend &= ~READ_MASK(addr); // only unmasked interrupts -+ pend = 39 - rc32434_clz(pend); -+ do_IRQ((group << 5) + pend, regs); -+ } -+} -+ +void __init arch_init_irq(void) +{ + int i; -+ extern void rbIRQ(void); + -+ set_except_vector(0, rbIRQ); + printk("Initializing IRQ's: %d out of %d\n", RC32434_NR_IRQS, NR_IRQS); + memset(irq_desc, 0, sizeof(irq_desc)); + @@ -1251,20 +1217,39 @@ diff -urN linux.old/arch/mips/rb500/irq.c linux.dev/arch/mips/rb500/irq.c + } +} + ++/* Main Interrupt dispatcher */ ++asmlinkage void plat_irq_dispatch(struct pt_regs *regs) ++{ ++ unsigned int ip, pend, group; ++ volatile unsigned int *addr; ++ unsigned int cp0_cause = read_c0_cause() & read_c0_status(); ++ ++ if (cp0_cause & CAUSEF_IP7) { ++ ll_timer_interrupt(7, regs); ++ } else if ((ip = (cp0_cause & 0x7c00))) { ++ group = 21 - rc32434_clz(ip); ++ ++ addr = intr_group[group].base_addr; + ++ pend = READ_PEND(addr); ++ pend &= ~READ_MASK(addr); // only unmasked interrupts ++ pend = 39 - rc32434_clz(pend); ++ do_IRQ((group << 5) + pend, regs); ++ } ++} diff -urN linux.old/arch/mips/rb500/Makefile linux.dev/arch/mips/rb500/Makefile --- linux.old/arch/mips/rb500/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/Makefile 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/Makefile 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,5 @@ +# +# Makefile for the RB500 board specific parts of the kernel +# + -+obj-y += irq.o time.o setup.o serial.o early_serial.o prom.o misc.o devices.o rbIRQ.o ++obj-y += irq.o time.o setup.o serial.o early_serial.o prom.o misc.o devices.o diff -urN linux.old/arch/mips/rb500/misc.c linux.dev/arch/mips/rb500/misc.c --- linux.old/arch/mips/rb500/misc.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/misc.c 2006-06-15 16:26:53.000000000 +0200 -@@ -0,0 +1,54 @@ ++++ linux.dev/arch/mips/rb500/misc.c 2006-10-11 21:56:38.000000000 +0200 +@@ -0,0 +1,56 @@ +#include +#include /* printk() */ +#include /* size_t */ @@ -1275,7 +1260,7 @@ diff -urN linux.old/arch/mips/rb500/misc.c linux.dev/arch/mips/rb500/misc.c +#define GPIO_BADDR 0xb8050000 + + -+static unsigned char *devCtl3Base = (unsigned char *) KSEG1ADDR(0x18010030); ++static volatile unsigned char *devCtl3Base = 0; +static unsigned char latchU5State = 0; +static spinlock_t clu5Lock = SPIN_LOCK_UNLOCKED; + @@ -1296,6 +1281,8 @@ diff -urN linux.old/arch/mips/rb500/misc.c linux.dev/arch/mips/rb500/misc.c + unsigned flags; + spin_lock_irqsave(&clu5Lock, flags); + latchU5State = (latchU5State | orMask) & ~nandMask; ++ if( !devCtl3Base) devCtl3Base = (volatile unsigned char *) ++ KSEG1ADDR(*(volatile unsigned *) KSEG1ADDR(0x18010030)); + *devCtl3Base = latchU5State; + spin_unlock_irqrestore(&clu5Lock, flags); +} @@ -1321,7 +1308,7 @@ diff -urN linux.old/arch/mips/rb500/misc.c linux.dev/arch/mips/rb500/misc.c +EXPORT_SYMBOL(changeLatchU5); diff -urN linux.old/arch/mips/rb500/prom.c linux.dev/arch/mips/rb500/prom.c --- linux.old/arch/mips/rb500/prom.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/prom.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/prom.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,181 @@ +/* +* prom.c @@ -1504,75 +1491,9 @@ diff -urN linux.old/arch/mips/rb500/prom.c linux.dev/arch/mips/rb500/prom.c + strcpy(arcs_cmdline,cmd_line); +} + -diff -urN linux.old/arch/mips/rb500/rbIRQ.S linux.dev/arch/mips/rb500/rbIRQ.S ---- linux.old/arch/mips/rb500/rbIRQ.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/rbIRQ.S 2006-06-15 16:26:53.000000000 +0200 -@@ -0,0 +1,62 @@ -+/* -+ * Copyright 2001 MontaVista Software Inc. -+ * Author: stevel@mvista.com -+ * -+ * Interrupt dispatcher for RB500 board. -+ * -+ * 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. -+ */ -+ -+#define __ASSEMBLY__ 1 -+ -+#include -+#include -+#include -+#include -+ -+ .text -+ .set noreorder -+ .set noat -+ .align 5 -+ NESTED(rbIRQ, PT_SIZE, sp) -+ .set noat -+ SAVE_ALL -+ CLI -+ -+ .set at -+ .set noreorder -+ -+ /* Get the pending interrupts */ -+ mfc0 t0, CP0_CAUSE -+ nop -+ -+ /* Isolate the allowed ones by anding the irq mask */ -+ mfc0 t2, CP0_STATUS -+ move a1, sp /* need a nop here, hence we anticipate */ -+ andi t0, CAUSEF_IP -+ and t0, t2 -+ -+ /* check for r4k counter/timer IRQ. */ -+ -+ andi t1, t0, CAUSEF_IP7 -+ beqz t1, 1f -+ nop -+ -+ jal ll_timer_interrupt -+ -+ li a0, 7 -+ -+ j ret_from_irq -+ nop -+1: -+ jal plat_irq_dispatch -+ move a0, t0 -+ j ret_from_irq -+ nop -+ -+ END(rbIRQ) -+ -+ diff -urN linux.old/arch/mips/rb500/serial.c linux.dev/arch/mips/rb500/serial.c --- linux.old/arch/mips/rb500/serial.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/serial.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/serial.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,79 @@ +/************************************************************************** + * @@ -1655,7 +1576,7 @@ diff -urN linux.old/arch/mips/rb500/serial.c linux.dev/arch/mips/rb500/serial.c +} diff -urN linux.old/arch/mips/rb500/setup.c linux.dev/arch/mips/rb500/setup.c --- linux.old/arch/mips/rb500/setup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/setup.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/setup.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,84 @@ +/* + * setup.c - boot time setup code @@ -1743,7 +1664,7 @@ diff -urN linux.old/arch/mips/rb500/setup.c linux.dev/arch/mips/rb500/setup.c +} diff -urN linux.old/arch/mips/rb500/time.c linux.dev/arch/mips/rb500/time.c --- linux.old/arch/mips/rb500/time.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/arch/mips/rb500/time.c 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/arch/mips/rb500/time.c 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,94 @@ +/* +**************************************************************************** @@ -1840,9 +1761,9 @@ diff -urN linux.old/arch/mips/rb500/time.c linux.dev/arch/mips/rb500/time.c +} + diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/devices/block2mtd.c ---- linux.old/drivers/mtd/devices/block2mtd.c 2006-05-31 02:31:44.000000000 +0200 -+++ linux.dev/drivers/mtd/devices/block2mtd.c 2006-06-15 18:46:28.000000000 +0200 -@@ -25,7 +25,6 @@ +--- linux.old/drivers/mtd/devices/block2mtd.c 2006-10-11 21:55:59.000000000 +0200 ++++ linux.dev/drivers/mtd/devices/block2mtd.c 2006-10-11 22:24:51.000000000 +0200 +@@ -26,7 +26,6 @@ #define ERROR(fmt, args...) printk(KERN_ERR "block2mtd: " fmt "\n" , ## args) #define INFO(fmt, args...) printk(KERN_INFO "block2mtd: " fmt "\n" , ## args) @@ -1850,19 +1771,7 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device /* Info for the block device */ struct block2mtd_dev { struct list_head list; -@@ -61,10 +60,8 @@ - read_lock_irq(&mapping->tree_lock); - for (i = 0; i < PAGE_READAHEAD; i++) { - pagei = index + i; -- if (pagei > end_index) { -- INFO("Overrun end of disk in cache readahead\n"); -+ if (pagei > end_index) - break; -- } - page = radix_tree_lookup(&mapping->page_tree, pagei); - if (page && (!i)) - break; -@@ -105,7 +102,7 @@ +@@ -104,7 +103,7 @@ while (pages) { page = page_readahead(mapping, index); @@ -1871,7 +1780,7 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device return -ENOMEM; if (IS_ERR(page)) return PTR_ERR(page); -@@ -284,7 +281,7 @@ +@@ -285,7 +284,7 @@ /* FIXME: ensure that mtd->size % erase_size == 0 */ @@ -1880,7 +1789,7 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device { struct block_device *bdev; struct block2mtd_dev *dev; -@@ -314,14 +311,15 @@ +@@ -328,14 +327,15 @@ /* Setup the MTD structure */ /* make the name contain the block device in */ @@ -1898,7 +1807,7 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device dev->mtd.erasesize = erase_size; dev->mtd.type = MTD_RAM; dev->mtd.flags = MTD_CAP_RAM; -@@ -340,7 +338,7 @@ +@@ -353,7 +353,7 @@ } list_add(&dev->list, &blkmtd_device_list); INFO("mtd%d: [%s] erase_size = %dKiB [%d]", dev->mtd.index, @@ -1907,26 +1816,26 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device dev->mtd.erasesize >> 10, dev->mtd.erasesize); return dev; -@@ -415,7 +413,7 @@ - return 0; \ - } while (0) - --static int block2mtd_setup(const char *val, struct kernel_param *kp) -+int block2mtd_setup(const char *val, struct kernel_param *kp) +@@ -429,7 +429,7 @@ { - char buf[80+12], *str=buf; /* 80 for device, 12 for erase size */ - char *token[2]; -@@ -429,7 +427,7 @@ + char buf[80 + 12]; /* 80 for device, 12 for erase size */ + char *str = buf; +- char *token[2]; ++ char *token[3]; + char *name; + size_t erase_size = PAGE_SIZE; + int i, ret; +@@ -440,7 +440,7 @@ strcpy(str, val); kill_final_newline(str); -- for (i=0; i<2; i++) -+ for (i=0; i<3; i++) +- for (i = 0; i < 2; i++) ++ for (i = 0; i < 3; i++) token[i] = strsep(&str, ","); if (str) -@@ -452,7 +450,7 @@ - parse_err("illegal erase size"); +@@ -461,13 +461,13 @@ + } } - add_device(name, erase_size); @@ -1934,7 +1843,14 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device return 0; } -@@ -460,6 +458,7 @@ + + +-static int block2mtd_setup(const char *val, struct kernel_param *kp) ++int block2mtd_setup(const char *val, struct kernel_param *kp) + { + #ifdef MODULE + return block2mtd_setup2(val); +@@ -496,6 +496,7 @@ module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200); MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=[,]\""); @@ -1943,8 +1859,8 @@ diff -urN linux.old/drivers/mtd/devices/block2mtd.c linux.dev/drivers/mtd/device static int __init block2mtd_init(void) { diff -urN linux.old/drivers/pci/Makefile linux.dev/drivers/pci/Makefile ---- linux.old/drivers/pci/Makefile 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/drivers/pci/Makefile 2006-06-15 16:26:53.000000000 +0200 +--- linux.old/drivers/pci/Makefile 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/drivers/pci/Makefile 2006-10-11 21:56:38.000000000 +0200 @@ -27,6 +27,7 @@ obj-$(CONFIG_MIPS) += setup-bus.o setup-irq.o obj-$(CONFIG_X86_VISWS) += setup-irq.o @@ -1954,8 +1870,8 @@ diff -urN linux.old/drivers/pci/Makefile linux.dev/drivers/pci/Makefile # # ACPI Related PCI FW Functions diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/bootinfo.h ---- linux.old/include/asm-mips/bootinfo.h 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/include/asm-mips/bootinfo.h 2006-06-15 16:26:53.000000000 +0200 +--- linux.old/include/asm-mips/bootinfo.h 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/include/asm-mips/bootinfo.h 2006-10-11 21:56:38.000000000 +0200 @@ -218,6 +218,8 @@ #define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */ #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */ @@ -1966,21 +1882,21 @@ diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/booti const char *get_system_type(void); diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h ---- linux.old/include/asm-mips/cpu.h 2006-06-08 20:21:20.000000000 +0200 -+++ linux.dev/include/asm-mips/cpu.h 2006-06-15 16:26:53.000000000 +0200 -@@ -196,7 +196,8 @@ - #define CPU_34K 60 - #define CPU_PR4450 61 +--- linux.old/include/asm-mips/cpu.h 2006-06-18 03:49:35.000000000 +0200 ++++ linux.dev/include/asm-mips/cpu.h 2006-10-11 21:56:38.000000000 +0200 +@@ -200,7 +200,8 @@ #define CPU_SB1A 62 --#define CPU_LAST 62 -+#define CPU_RC32300 63 -+#define CPU_LAST 63 + #define CPU_74K 63 + #define CPU_R14000 64 +-#define CPU_LAST 64 ++#define CPU_RC32300 65 ++#define CPU_LAST 65 /* * ISA Level encodings diff -urN linux.old/include/asm-mips/rc32434/crom.h linux.dev/include/asm-mips/rc32434/crom.h --- linux.old/include/asm-mips/rc32434/crom.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/crom.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/crom.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,98 @@ +#ifndef __IDT_CROM_H__ +#define __IDT_CROM_H__ @@ -2082,7 +1998,7 @@ diff -urN linux.old/include/asm-mips/rc32434/crom.h linux.dev/include/asm-mips/r +#endif // __IDT_CROM_H__ diff -urN linux.old/include/asm-mips/rc32434/ddr.h linux.dev/include/asm-mips/rc32434/ddr.h --- linux.old/include/asm-mips/rc32434/ddr.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/ddr.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/ddr.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,175 @@ +#ifndef __IDT_DDR_H__ +#define __IDT_DDR_H__ @@ -2261,7 +2177,7 @@ diff -urN linux.old/include/asm-mips/rc32434/ddr.h linux.dev/include/asm-mips/rc +#endif // __IDT_DDR_H__ diff -urN linux.old/include/asm-mips/rc32434/dev.h linux.dev/include/asm-mips/rc32434/dev.h --- linux.old/include/asm-mips/rc32434/dev.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/dev.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/dev.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,134 @@ +#ifndef __IDT_DEV_H__ +#define __IDT_DEV_H__ @@ -2399,7 +2315,7 @@ diff -urN linux.old/include/asm-mips/rc32434/dev.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/dma.h linux.dev/include/asm-mips/rc32434/dma.h --- linux.old/include/asm-mips/rc32434/dma.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/dma.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/dma.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,202 @@ +#ifndef __IDT_DMA_H__ +#define __IDT_DMA_H__ @@ -2605,7 +2521,7 @@ diff -urN linux.old/include/asm-mips/rc32434/dma.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/dma_v.h linux.dev/include/asm-mips/rc32434/dma_v.h --- linux.old/include/asm-mips/rc32434/dma_v.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/dma_v.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/dma_v.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,73 @@ +#ifndef __IDT_DMA_V_H__ +#define __IDT_DMA_V_H__ @@ -2682,7 +2598,7 @@ diff -urN linux.old/include/asm-mips/rc32434/dma_v.h linux.dev/include/asm-mips/ + diff -urN linux.old/include/asm-mips/rc32434/eth.h linux.dev/include/asm-mips/rc32434/eth.h --- linux.old/include/asm-mips/rc32434/eth.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/eth.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/eth.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,322 @@ +#ifndef __IDT_ETH_H__ +#define __IDT_ETH_H__ @@ -3008,7 +2924,7 @@ diff -urN linux.old/include/asm-mips/rc32434/eth.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/eth_v.h linux.dev/include/asm-mips/rc32434/eth_v.h --- linux.old/include/asm-mips/rc32434/eth_v.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/eth_v.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/eth_v.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,64 @@ +#ifndef __IDT_ETH_V_H__ +#define __IDT_ETH_V_H__ @@ -3076,7 +2992,7 @@ diff -urN linux.old/include/asm-mips/rc32434/eth_v.h linux.dev/include/asm-mips/ + diff -urN linux.old/include/asm-mips/rc32434/gpio.h linux.dev/include/asm-mips/rc32434/gpio.h --- linux.old/include/asm-mips/rc32434/gpio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/gpio.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/gpio.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,182 @@ +#ifndef __IDT_GPIO_H__ +#define __IDT_GPIO_H__ @@ -3262,7 +3178,7 @@ diff -urN linux.old/include/asm-mips/rc32434/gpio.h linux.dev/include/asm-mips/r + diff -urN linux.old/include/asm-mips/rc32434/i2c.h linux.dev/include/asm-mips/rc32434/i2c.h --- linux.old/include/asm-mips/rc32434/i2c.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/i2c.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/i2c.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,147 @@ +#ifndef __IDT_I2C_H__ +#define __IDT_I2C_H__ @@ -3413,7 +3329,7 @@ diff -urN linux.old/include/asm-mips/rc32434/i2c.h linux.dev/include/asm-mips/rc +#endif // __IDT_I2C_H__ diff -urN linux.old/include/asm-mips/rc32434/integ.h linux.dev/include/asm-mips/rc32434/integ.h --- linux.old/include/asm-mips/rc32434/integ.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/integ.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/integ.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,78 @@ +#ifndef __IDT_INTEG_H__ +#define __IDT_INTEG_H__ @@ -3495,7 +3411,7 @@ diff -urN linux.old/include/asm-mips/rc32434/integ.h linux.dev/include/asm-mips/ +#endif // __IDT_INTEG_H__ diff -urN linux.old/include/asm-mips/rc32434/int.h linux.dev/include/asm-mips/rc32434/int.h --- linux.old/include/asm-mips/rc32434/int.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/int.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/int.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,167 @@ +#ifndef __IDT_INT_H__ +#define __IDT_INT_H__ @@ -3666,7 +3582,7 @@ diff -urN linux.old/include/asm-mips/rc32434/int.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/iparb.h linux.dev/include/asm-mips/rc32434/iparb.h --- linux.old/include/asm-mips/rc32434/iparb.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/iparb.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/iparb.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,95 @@ +#ifndef __IDT_IPARB_H__ +#define __IDT_IPARB_H__ @@ -3765,7 +3681,7 @@ diff -urN linux.old/include/asm-mips/rc32434/iparb.h linux.dev/include/asm-mips/ +#endif // __IDT_IPARB_H__ diff -urN linux.old/include/asm-mips/rc32434/irm.h linux.dev/include/asm-mips/rc32434/irm.h --- linux.old/include/asm-mips/rc32434/irm.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/irm.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/irm.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,55 @@ +#ifndef __IDT_IRM_H__ +#define __IDT_IRM_H__ @@ -3824,7 +3740,7 @@ diff -urN linux.old/include/asm-mips/rc32434/irm.h linux.dev/include/asm-mips/rc +#endif // __IDT_IRM_H__ diff -urN linux.old/include/asm-mips/rc32434/irq.h linux.dev/include/asm-mips/rc32434/irq.h --- linux.old/include/asm-mips/rc32434/irq.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/irq.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/irq.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,8 @@ +#ifndef __ASM_MACH_MIPS_IRQ_H +#define __ASM_MACH_MIPS_IRQ_H @@ -3836,7 +3752,7 @@ diff -urN linux.old/include/asm-mips/rc32434/irq.h linux.dev/include/asm-mips/rc +#endif /* __ASM_MACH_MIPS_IRQ_H */ diff -urN linux.old/include/asm-mips/rc32434/nvram.h linux.dev/include/asm-mips/rc32434/nvram.h --- linux.old/include/asm-mips/rc32434/nvram.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/nvram.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/nvram.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,97 @@ +#ifndef __IDT_NVRAM_H +#define __IDT_NVRAM_H @@ -3937,7 +3853,7 @@ diff -urN linux.old/include/asm-mips/rc32434/nvram.h linux.dev/include/asm-mips/ + diff -urN linux.old/include/asm-mips/rc32434/pci.h linux.dev/include/asm-mips/rc32434/pci.h --- linux.old/include/asm-mips/rc32434/pci.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/pci.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/pci.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,695 @@ +/************************************************************************** + * @@ -4636,7 +4552,7 @@ diff -urN linux.old/include/asm-mips/rc32434/pci.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/pcikorina.h linux.dev/include/asm-mips/rc32434/pcikorina.h --- linux.old/include/asm-mips/rc32434/pcikorina.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/pcikorina.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/pcikorina.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,209 @@ +/* $Id: pciacacia.h,v 1.5 2001/05/01 10:09:17 carstenl Exp $ + * @@ -4849,7 +4765,7 @@ diff -urN linux.old/include/asm-mips/rc32434/pcikorina.h linux.dev/include/asm-m + diff -urN linux.old/include/asm-mips/rc32434/pci_regs.h linux.dev/include/asm-mips/rc32434/pci_regs.h --- linux.old/include/asm-mips/rc32434/pci_regs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/pci_regs.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/pci_regs.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,8 @@ +/* Override the default address space for this arch +*/ @@ -4861,7 +4777,7 @@ diff -urN linux.old/include/asm-mips/rc32434/pci_regs.h linux.dev/include/asm-mi + diff -urN linux.old/include/asm-mips/rc32434/rb.h linux.dev/include/asm-mips/rc32434/rb.h --- linux.old/include/asm-mips/rc32434/rb.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/rb.h 2006-06-15 16:27:36.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/rb.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,69 @@ +#ifndef __MIPS_RB_H__ +#define __MIPS_RB_H__ @@ -4934,7 +4850,7 @@ diff -urN linux.old/include/asm-mips/rc32434/rb.h linux.dev/include/asm-mips/rc3 +#endif diff -urN linux.old/include/asm-mips/rc32434/rc32434.h linux.dev/include/asm-mips/rc32434/rc32434.h --- linux.old/include/asm-mips/rc32434/rc32434.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/rc32434.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/rc32434.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,126 @@ +/* + *************************************************************************** @@ -5064,7 +4980,7 @@ diff -urN linux.old/include/asm-mips/rc32434/rc32434.h linux.dev/include/asm-mip +#endif /* _RC32434_H_ */ diff -urN linux.old/include/asm-mips/rc32434/rst.h linux.dev/include/asm-mips/rc32434/rst.h --- linux.old/include/asm-mips/rc32434/rst.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/rst.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/rst.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,105 @@ +#ifndef __IDT_RST_H__ +#define __IDT_RST_H__ @@ -5173,7 +5089,7 @@ diff -urN linux.old/include/asm-mips/rc32434/rst.h linux.dev/include/asm-mips/rc +#endif // __IDT_RST_H__ diff -urN linux.old/include/asm-mips/rc32434/spi.h linux.dev/include/asm-mips/rc32434/spi.h --- linux.old/include/asm-mips/rc32434/spi.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/spi.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/spi.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,100 @@ +#ifndef __IDT_SPI_H__ +#define __IDT_SPI_H__ @@ -5277,7 +5193,7 @@ diff -urN linux.old/include/asm-mips/rc32434/spi.h linux.dev/include/asm-mips/rc +#endif // __IDT_SPI_H__ diff -urN linux.old/include/asm-mips/rc32434/timer.h linux.dev/include/asm-mips/rc32434/timer.h --- linux.old/include/asm-mips/rc32434/timer.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/timer.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/timer.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,91 @@ +/************************************************************************** + * @@ -5372,7 +5288,7 @@ diff -urN linux.old/include/asm-mips/rc32434/timer.h linux.dev/include/asm-mips/ + diff -urN linux.old/include/asm-mips/rc32434/tim.h linux.dev/include/asm-mips/rc32434/tim.h --- linux.old/include/asm-mips/rc32434/tim.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/tim.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/tim.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,78 @@ +#ifndef __IDT_TIM_H__ +#define __IDT_TIM_H__ @@ -5454,7 +5370,7 @@ diff -urN linux.old/include/asm-mips/rc32434/tim.h linux.dev/include/asm-mips/rc + diff -urN linux.old/include/asm-mips/rc32434/types.h linux.dev/include/asm-mips/rc32434/types.h --- linux.old/include/asm-mips/rc32434/types.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/types.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/types.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,39 @@ +#ifndef __IDT_TYPES_H__ +#define __IDT_TYPES_H__ @@ -5497,7 +5413,7 @@ diff -urN linux.old/include/asm-mips/rc32434/types.h linux.dev/include/asm-mips/ +#endif // __IDT_TYPES_H__ diff -urN linux.old/include/asm-mips/rc32434/uart.h linux.dev/include/asm-mips/rc32434/uart.h --- linux.old/include/asm-mips/rc32434/uart.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux.dev/include/asm-mips/rc32434/uart.h 2006-06-15 16:26:53.000000000 +0200 ++++ linux.dev/include/asm-mips/rc32434/uart.h 2006-10-11 21:56:38.000000000 +0200 @@ -0,0 +1,178 @@ +#ifndef __IDT_UART_H__ +#define __IDT_UART_H__