1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-26 01:33:20 +02:00

[rdc] panic on unrecovered NMI, thanks rtz2

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21232 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
florian 2010-04-28 13:55:11 +00:00
parent 19100adc52
commit f024fd0c2a
17 changed files with 142 additions and 208 deletions

View File

@ -11,11 +11,9 @@ Changes from v2:
- removed pci_dev accessors - removed pci_dev accessors
- use DEFINE_PCI_DEVICE_TABLE - use DEFINE_PCI_DEVICE_TABLE
Index: linux-2.6.30.10/drivers/mfd/Kconfig --- a/drivers/mfd/Kconfig
=================================================================== +++ b/drivers/mfd/Kconfig
--- linux-2.6.30.10.orig/drivers/mfd/Kconfig 2010-04-28 10:48:54.000000000 +0200 @@ -241,6 +241,15 @@ config PCF50633_GPIO
+++ linux-2.6.30.10/drivers/mfd/Kconfig 2010-04-28 10:49:44.000000000 +0200
@@ -241,6 +241,15 @@
Say yes here if you want to include support GPIO for pins on Say yes here if you want to include support GPIO for pins on
the PCF50633 chip. the PCF50633 chip.
@ -31,11 +29,9 @@ Index: linux-2.6.30.10/drivers/mfd/Kconfig
endmenu endmenu
menu "Multimedia Capabilities Port drivers" menu "Multimedia Capabilities Port drivers"
Index: linux-2.6.30.10/drivers/mfd/Makefile --- a/drivers/mfd/Makefile
=================================================================== +++ b/drivers/mfd/Makefile
--- linux-2.6.30.10.orig/drivers/mfd/Makefile 2010-04-28 10:48:54.000000000 +0200 @@ -40,4 +40,6 @@ obj-$(CONFIG_PMIC_DA903X) += da903x.o
+++ linux-2.6.30.10/drivers/mfd/Makefile 2010-04-28 10:49:02.000000000 +0200
@@ -40,4 +40,6 @@
obj-$(CONFIG_MFD_PCF50633) += pcf50633-core.o obj-$(CONFIG_MFD_PCF50633) += pcf50633-core.o
obj-$(CONFIG_PCF50633_ADC) += pcf50633-adc.o obj-$(CONFIG_PCF50633_ADC) += pcf50633-adc.o
@ -44,10 +40,8 @@ Index: linux-2.6.30.10/drivers/mfd/Makefile
+obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o +obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o
+ +
+obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o +obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o
Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c --- /dev/null
=================================================================== +++ b/drivers/mfd/rdc321x-southbridge.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 10:49:02.000000000 +0200
@@ -0,0 +1,123 @@ @@ -0,0 +1,123 @@
+/* +/*
+ * RDC321x MFD southbrige driver + * RDC321x MFD southbrige driver
@ -172,10 +166,8 @@ Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c
+MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>"); +MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver"); +MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver");
Index: linux-2.6.30.10/include/linux/mfd/rdc321x.h --- /dev/null
=================================================================== +++ b/include/linux/mfd/rdc321x.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/include/linux/mfd/rdc321x.h 2010-04-28 10:49:02.000000000 +0200
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
+#ifndef __RDC321X_MFD_H +#ifndef __RDC321X_MFD_H
+#define __RDC321X_MFD_H +#define __RDC321X_MFD_H

View File

@ -8,11 +8,9 @@ Changes from v2:
- use the pci_dev pointer passed as platform data - use the pci_dev pointer passed as platform data
- replaced rdc321x_pci_{read,write} - replaced rdc321x_pci_{read,write}
Index: linux-2.6.30.10/drivers/gpio/Kconfig --- a/drivers/gpio/Kconfig
=================================================================== +++ b/drivers/gpio/Kconfig
--- linux-2.6.30.10.orig/drivers/gpio/Kconfig 2009-12-04 07:00:07.000000000 +0100 @@ -161,6 +161,14 @@ config GPIO_BT8XX
+++ linux-2.6.30.10/drivers/gpio/Kconfig 2010-04-28 10:16:52.000000000 +0200
@@ -161,6 +161,14 @@
If unsure, say N. If unsure, say N.
@ -27,19 +25,15 @@ Index: linux-2.6.30.10/drivers/gpio/Kconfig
comment "SPI GPIO expanders:" comment "SPI GPIO expanders:"
config GPIO_MAX7301 config GPIO_MAX7301
Index: linux-2.6.30.10/drivers/gpio/Makefile --- a/drivers/gpio/Makefile
=================================================================== +++ b/drivers/gpio/Makefile
--- linux-2.6.30.10.orig/drivers/gpio/Makefile 2009-12-04 07:00:07.000000000 +0100 @@ -12,3 +12,4 @@ obj-$(CONFIG_GPIO_PCF857X) += pcf857x.o
+++ linux-2.6.30.10/drivers/gpio/Makefile 2010-04-28 10:17:13.000000000 +0200
@@ -12,3 +12,4 @@
obj-$(CONFIG_GPIO_TWL4030) += twl4030-gpio.o obj-$(CONFIG_GPIO_TWL4030) += twl4030-gpio.o
obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio.o obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio.o
obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o
+obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o +obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o
Index: linux-2.6.30.10/drivers/gpio/rdc321x-gpio.c --- /dev/null
=================================================================== +++ b/drivers/gpio/rdc321x-gpio.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/drivers/gpio/rdc321x-gpio.c 2010-04-28 10:16:52.000000000 +0200
@@ -0,0 +1,245 @@ @@ -0,0 +1,245 @@
+/* +/*
+ * RDC321x GPIO driver + * RDC321x GPIO driver

View File

@ -10,10 +10,8 @@ Changes from v2:
- replaced rdc321x_pci_{read,write} - replaced rdc321x_pci_{read,write}
- use the pci_dev pointer passed as platform_data - use the pci_dev pointer passed as platform_data
Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c --- a/drivers/watchdog/rdc321x_wdt.c
=================================================================== +++ b/drivers/watchdog/rdc321x_wdt.c
--- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2009-12-04 07:00:07.000000000 +0100
+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 10:17:46.000000000 +0200
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
/* /*
* RDC321x watchdog driver * RDC321x watchdog driver
@ -33,7 +31,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
#define RDC_WDT_MASK 0x80000000 /* Mask */ #define RDC_WDT_MASK 0x80000000 /* Mask */
#define RDC_WDT_EN 0x00800000 /* Enable bit */ #define RDC_WDT_EN 0x00800000 /* Enable bit */
@@ -63,6 +62,8 @@ @@ -63,6 +62,8 @@ static struct {
int default_ticks; int default_ticks;
unsigned long inuse; unsigned long inuse;
spinlock_t lock; spinlock_t lock;
@ -42,7 +40,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
} rdc321x_wdt_device; } rdc321x_wdt_device;
/* generic helper functions */ /* generic helper functions */
@@ -70,14 +71,18 @@ @@ -70,14 +71,18 @@ static struct {
static void rdc321x_wdt_trigger(unsigned long unused) static void rdc321x_wdt_trigger(unsigned long unused)
{ {
unsigned long flags; unsigned long flags;
@ -63,7 +61,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
/* requeue?? */ /* requeue?? */
@@ -105,10 +110,13 @@ @@ -105,10 +110,13 @@ static void rdc321x_wdt_start(void)
/* Clear the timer */ /* Clear the timer */
spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
@ -79,7 +77,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
mod_timer(&rdc321x_wdt_device.timer, mod_timer(&rdc321x_wdt_device.timer,
@@ -148,7 +156,7 @@ @@ -148,7 +156,7 @@ static long rdc321x_wdt_ioctl(struct fil
unsigned long arg) unsigned long arg)
{ {
void __user *argp = (void __user *)arg; void __user *argp = (void __user *)arg;
@ -88,7 +86,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
static struct watchdog_info ident = { static struct watchdog_info ident = {
.options = WDIOF_CARDRESET, .options = WDIOF_CARDRESET,
.identity = "RDC321x WDT", .identity = "RDC321x WDT",
@@ -162,9 +170,10 @@ @@ -162,9 +170,10 @@ static long rdc321x_wdt_ioctl(struct fil
case WDIOC_GETSTATUS: case WDIOC_GETSTATUS:
/* Read the value from the DATA register */ /* Read the value from the DATA register */
spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
@ -101,7 +99,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
return -EFAULT; return -EFAULT;
break; break;
case WDIOC_GETSUPPORT: case WDIOC_GETSUPPORT:
@@ -219,17 +228,35 @@ @@ -219,17 +228,35 @@ static struct miscdevice rdc321x_wdt_mis
static int __devinit rdc321x_wdt_probe(struct platform_device *pdev) static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
{ {
int err; int err;
@ -139,7 +137,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
init_completion(&rdc321x_wdt_device.stop); init_completion(&rdc321x_wdt_device.stop);
rdc321x_wdt_device.queue = 0; rdc321x_wdt_device.queue = 0;
@@ -240,7 +267,7 @@ @@ -240,7 +267,7 @@ static int __devinit rdc321x_wdt_probe(s
rdc321x_wdt_device.default_ticks = ticks; rdc321x_wdt_device.default_ticks = ticks;

View File

@ -3,9 +3,6 @@ the southbridge.
Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Florian Fainelli <florian@openwrt.org>
--- ---
diff --git a/arch/x86/include/asm/rdc321x_defs.h b/arch/x86/include/asm/rdc321x_defs.h
deleted file mode 100644
index c8e9c8b..0000000
--- a/arch/x86/include/asm/rdc321x_defs.h --- a/arch/x86/include/asm/rdc321x_defs.h
+++ /dev/null +++ /dev/null
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
@ -21,6 +18,3 @@ index c8e9c8b..0000000
-#define RDC321X_GPIO_DATA_REG2 0x88 -#define RDC321X_GPIO_DATA_REG2 0x88
- -
-#define RDC321X_MAX_GPIO 58 -#define RDC321X_MAX_GPIO 58

View File

@ -1,6 +1,6 @@
--- a/scripts/Makefile.lib 2009-11-06 08:55:20.000000000 +0100 --- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib 2009-11-06 09:08:45.000000000 +0100 +++ b/scripts/Makefile.lib
@@ -204,4 +204,4 @@ @@ -204,4 +204,4 @@ cmd_bzip2 = (bzip2 -9 < $< && $(size_app
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
quiet_cmd_lzma = LZMA $@ quiet_cmd_lzma = LZMA $@

View File

@ -1,8 +1,6 @@
Index: linux-2.6.30.10/drivers/mtd/mtdblock.c --- a/drivers/mtd/mtdblock.c
=================================================================== +++ b/drivers/mtd/mtdblock.c
--- linux-2.6.30.10.orig/drivers/mtd/mtdblock.c 2010-03-19 00:17:37.000000000 +0100 @@ -45,7 +45,7 @@ static void erase_callback(struct erase_
+++ linux-2.6.30.10/drivers/mtd/mtdblock.c 2010-03-19 00:17:54.000000000 +0100
@@ -45,7 +45,7 @@
wake_up(wait_q); wake_up(wait_q);
} }
@ -11,11 +9,9 @@ Index: linux-2.6.30.10/drivers/mtd/mtdblock.c
int len, const char *buf) int len, const char *buf)
{ {
struct erase_info erase; struct erase_info erase;
Index: linux-2.6.30.10/include/linux/mtd/mtd.h --- a/include/linux/mtd/mtd.h
=================================================================== +++ b/include/linux/mtd/mtd.h
--- linux-2.6.30.10.orig/include/linux/mtd/mtd.h 2010-03-19 00:17:42.000000000 +0100 @@ -319,6 +319,10 @@ int default_mtd_writev(struct mtd_info *
+++ linux-2.6.30.10/include/linux/mtd/mtd.h 2010-03-19 00:21:22.000000000 +0100
@@ -319,6 +319,10 @@
int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs,
unsigned long count, loff_t from, size_t *retlen); unsigned long count, loff_t from, size_t *retlen);

View File

@ -1,8 +1,6 @@
Index: linux-2.6.30.10/arch/x86/Makefile --- a/arch/x86/Makefile
=================================================================== +++ b/arch/x86/Makefile
--- linux-2.6.30.10.orig/arch/x86/Makefile 2009-12-04 07:00:07.000000000 +0100 @@ -124,6 +124,9 @@ core-y += $(fcore-y)
+++ linux-2.6.30.10/arch/x86/Makefile 2010-04-28 10:17:54.000000000 +0200
@@ -124,6 +124,9 @@
# Xen paravirtualization support # Xen paravirtualization support
core-$(CONFIG_XEN) += arch/x86/xen/ core-$(CONFIG_XEN) += arch/x86/xen/
@ -12,20 +10,16 @@ Index: linux-2.6.30.10/arch/x86/Makefile
# lguest paravirtualization support # lguest paravirtualization support
core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/ core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/Makefile --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/Makefile
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/Makefile 2010-04-28 10:20:33.000000000 +0200
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
+# +#
+# Makefile for the RDC321x specific parts of the kernel +# Makefile for the RDC321x specific parts of the kernel
+# +#
+obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o +obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o
+ +
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/platform.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c 2010-04-28 10:22:23.000000000 +0200
@@ -0,0 +1,115 @@ @@ -0,0 +1,115 @@
+/* +/*
+ * Generic RDC321x platform devices + * Generic RDC321x platform devices
@ -142,10 +136,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c
+ return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); + return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
+} +}
+late_initcall(rdc_board_setup); +late_initcall(rdc_board_setup);
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/ar525w.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c 2010-04-28 10:23:52.000000000 +0200
@@ -0,0 +1,243 @@ @@ -0,0 +1,243 @@
+/* +/*
+ * ar525w RDC321x platform devices + * ar525w RDC321x platform devices
@ -390,10 +382,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c
+} +}
+ +
+arch_initcall(ar525w_setup); +arch_initcall(ar525w_setup);
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/bifferboard.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c 2010-04-28 10:24:47.000000000 +0200
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
+/* +/*
+ * Bifferboard RDC321x platform devices + * Bifferboard RDC321x platform devices
@ -476,10 +466,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c
+ return register_mtd_parser(&bifferboard_parser); + return register_mtd_parser(&bifferboard_parser);
+} +}
+arch_initcall(bifferboard_setup); +arch_initcall(bifferboard_setup);
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/r8610.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c 2010-04-28 10:25:46.000000000 +0200
@@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
+/* +/*
+ * R8610 RDC321x platform devices + * R8610 RDC321x platform devices
@ -546,10 +534,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c
+} +}
+ +
+arch_initcall(r8610_setup); +arch_initcall(r8610_setup);
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/sitecom.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c 2010-04-28 10:26:21.000000000 +0200
@@ -0,0 +1,111 @@ @@ -0,0 +1,111 @@
+/* +/*
+ * Sitecom RDC321x platform devices + * Sitecom RDC321x platform devices
@ -662,10 +648,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c
+} +}
+ +
+arch_initcall(sitecom_setup); +arch_initcall(sitecom_setup);
Index: linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/reboot.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c 2010-04-28 10:26:53.000000000 +0200
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
+/* +/*
+ * This program is free software; you can redistribute it and/or + * This program is free software; you can redistribute it and/or
@ -711,10 +695,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c
+} +}
+ +
+arch_initcall(rdc_setup_reset); +arch_initcall(rdc_setup_reset);
Index: linux-2.6.30.10/arch/x86/include/asm/rdc_boards.h --- /dev/null
=================================================================== +++ b/arch/x86/include/asm/rdc_boards.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.30.10/arch/x86/include/asm/rdc_boards.h 2010-04-28 10:42:56.000000000 +0200
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+/* +/*
+ * RDC321x boards + * RDC321x boards

View File

@ -1,7 +1,5 @@
Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c --- a/drivers/watchdog/rdc321x_wdt.c
=================================================================== +++ b/drivers/watchdog/rdc321x_wdt.c
--- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:11:44.000000000 +0200
+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:20:51.000000000 +0200
@@ -36,111 +36,99 @@ @@ -36,111 +36,99 @@
#include <linux/watchdog.h> #include <linux/watchdog.h>
#include <linux/io.h> #include <linux/io.h>
@ -164,7 +162,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
return -EBUSY; return -EBUSY;
return nonseekable_open(inode, file); return nonseekable_open(inode, file);
@@ -148,7 +136,16 @@ @@ -148,7 +136,16 @@ static int rdc321x_wdt_open(struct inode
static int rdc321x_wdt_release(struct inode *inode, struct file *file) static int rdc321x_wdt_release(struct inode *inode, struct file *file)
{ {
@ -182,7 +180,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
return 0; return 0;
} }
@@ -156,30 +153,29 @@ @@ -156,30 +153,29 @@ static long rdc321x_wdt_ioctl(struct fil
unsigned long arg) unsigned long arg)
{ {
void __user *argp = (void __user *)arg; void __user *argp = (void __user *)arg;
@ -227,7 +225,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
case WDIOC_SETOPTIONS: case WDIOC_SETOPTIONS:
if (copy_from_user(&value, argp, sizeof(int))) if (copy_from_user(&value, argp, sizeof(int)))
return -EFAULT; return -EFAULT;
@@ -194,17 +190,34 @@ @@ -194,17 +190,34 @@ static long rdc321x_wdt_ioctl(struct fil
} }
break; break;
default: default:
@ -263,7 +261,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
rdc321x_wdt_reset(); rdc321x_wdt_reset();
return count; return count;
@@ -246,27 +259,18 @@ @@ -246,27 +259,18 @@ static int __devinit rdc321x_wdt_probe(s
rdc321x_wdt_device.sb_pdev = pdata->sb_pdev; rdc321x_wdt_device.sb_pdev = pdata->sb_pdev;
rdc321x_wdt_device.base_reg = r->start; rdc321x_wdt_device.base_reg = r->start;
@ -297,7 +295,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
dev_info(&pdev->dev, "watchdog init success\n"); dev_info(&pdev->dev, "watchdog init success\n");
return 0; return 0;
@@ -274,10 +278,11 @@ @@ -274,10 +278,11 @@ static int __devinit rdc321x_wdt_probe(s
static int rdc321x_wdt_remove(struct platform_device *pdev) static int rdc321x_wdt_remove(struct platform_device *pdev)
{ {

View File

@ -0,0 +1,13 @@
Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c
===================================================================
--- linux-2.6.30.10.orig/drivers/mfd/rdc321x-southbridge.c 2010-04-28 13:05:17.000000000 +0200
+++ linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 13:05:27.000000000 +0200
@@ -84,6 +84,8 @@
rdc321x_gpio_pdata.sb_pdev = pdev;
rdc321x_wdt_pdata.sb_pdev = pdev;
+ panic_on_unrecovered_nmi = 1;
+
return mfd_add_devices(&pdev->dev, -1,
rdc321x_sb_cells, ARRAY_SIZE(rdc321x_sb_cells), NULL, 0);
}

View File

@ -11,11 +11,9 @@ Changes from v2:
- removed pci_dev accessors - removed pci_dev accessors
- use DEFINE_PCI_DEVICE_TABLE - use DEFINE_PCI_DEVICE_TABLE
Index: linux-2.6.32.10/drivers/mfd/Kconfig --- a/drivers/mfd/Kconfig
=================================================================== +++ b/drivers/mfd/Kconfig
--- linux-2.6.32.10.orig/drivers/mfd/Kconfig 2010-03-15 16:52:04.000000000 +0100 @@ -305,6 +305,15 @@ config EZX_PCAP
+++ linux-2.6.32.10/drivers/mfd/Kconfig 2010-04-28 11:38:27.000000000 +0200
@@ -305,6 +305,15 @@
This enables the PCAP ASIC present on EZX Phones. This is This enables the PCAP ASIC present on EZX Phones. This is
needed for MMC, TouchScreen, Sound, USB, etc.. needed for MMC, TouchScreen, Sound, USB, etc..
@ -31,20 +29,16 @@ Index: linux-2.6.32.10/drivers/mfd/Kconfig
endmenu endmenu
menu "Multimedia Capabilities Port drivers" menu "Multimedia Capabilities Port drivers"
Index: linux-2.6.32.10/drivers/mfd/Makefile --- a/drivers/mfd/Makefile
=================================================================== +++ b/drivers/mfd/Makefile
--- linux-2.6.32.10.orig/drivers/mfd/Makefile 2010-03-15 16:52:04.000000000 +0100 @@ -50,3 +50,5 @@ obj-$(CONFIG_PCF50633_ADC) += pcf50633-a
+++ linux-2.6.32.10/drivers/mfd/Makefile 2010-04-28 11:38:53.000000000 +0200
@@ -50,3 +50,5 @@
obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o
obj-$(CONFIG_AB3100_CORE) += ab3100-core.o obj-$(CONFIG_AB3100_CORE) += ab3100-core.o
obj-$(CONFIG_AB3100_OTP) += ab3100-otp.o obj-$(CONFIG_AB3100_OTP) += ab3100-otp.o
+ +
+obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o +obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o
Index: linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c --- /dev/null
=================================================================== +++ b/drivers/mfd/rdc321x-southbridge.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 11:38:27.000000000 +0200
@@ -0,0 +1,123 @@ @@ -0,0 +1,123 @@
+/* +/*
+ * RDC321x MFD southbrige driver + * RDC321x MFD southbrige driver
@ -169,10 +163,8 @@ Index: linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c
+MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>"); +MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver"); +MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver");
Index: linux-2.6.32.10/include/linux/mfd/rdc321x.h --- /dev/null
=================================================================== +++ b/include/linux/mfd/rdc321x.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/include/linux/mfd/rdc321x.h 2010-04-28 11:38:27.000000000 +0200
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
+#ifndef __RDC321X_MFD_H +#ifndef __RDC321X_MFD_H
+#define __RDC321X_MFD_H +#define __RDC321X_MFD_H

View File

@ -8,11 +8,9 @@ Changes from v2:
- use the pci_dev pointer passed as platform data - use the pci_dev pointer passed as platform data
- replaced rdc321x_pci_{read,write} - replaced rdc321x_pci_{read,write}
Index: linux-2.6.32.10/drivers/gpio/Kconfig --- a/drivers/gpio/Kconfig
=================================================================== +++ b/drivers/gpio/Kconfig
--- linux-2.6.32.10.orig/drivers/gpio/Kconfig 2010-03-15 16:52:04.000000000 +0100 @@ -196,6 +196,14 @@ config GPIO_LANGWELL
+++ linux-2.6.32.10/drivers/gpio/Kconfig 2010-04-28 11:39:02.000000000 +0200
@@ -196,6 +196,14 @@
help help
Say Y here to support Intel Moorestown platform GPIO. Say Y here to support Intel Moorestown platform GPIO.
@ -27,19 +25,15 @@ Index: linux-2.6.32.10/drivers/gpio/Kconfig
comment "SPI GPIO expanders:" comment "SPI GPIO expanders:"
config GPIO_MAX7301 config GPIO_MAX7301
Index: linux-2.6.32.10/drivers/gpio/Makefile --- a/drivers/gpio/Makefile
=================================================================== +++ b/drivers/gpio/Makefile
--- linux-2.6.32.10.orig/drivers/gpio/Makefile 2010-03-15 16:52:04.000000000 +0100 @@ -19,3 +19,4 @@ obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio
+++ linux-2.6.32.10/drivers/gpio/Makefile 2010-04-28 11:39:17.000000000 +0200
@@ -19,3 +19,4 @@
obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o
obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o
obj-$(CONFIG_GPIO_WM831X) += wm831x-gpio.o obj-$(CONFIG_GPIO_WM831X) += wm831x-gpio.o
+obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o +obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o
Index: linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c --- /dev/null
=================================================================== +++ b/drivers/gpio/rdc321x-gpio.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c 2010-04-28 11:39:02.000000000 +0200
@@ -0,0 +1,245 @@ @@ -0,0 +1,245 @@
+/* +/*
+ * RDC321x GPIO driver + * RDC321x GPIO driver

View File

@ -10,10 +10,8 @@ Changes from v2:
- replaced rdc321x_pci_{read,write} - replaced rdc321x_pci_{read,write}
- use the pci_dev pointer passed as platform_data - use the pci_dev pointer passed as platform_data
Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c --- a/drivers/watchdog/rdc321x_wdt.c
=================================================================== +++ b/drivers/watchdog/rdc321x_wdt.c
--- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2009-12-04 07:00:07.000000000 +0100
+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 10:17:46.000000000 +0200
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
/* /*
* RDC321x watchdog driver * RDC321x watchdog driver
@ -33,7 +31,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
#define RDC_WDT_MASK 0x80000000 /* Mask */ #define RDC_WDT_MASK 0x80000000 /* Mask */
#define RDC_WDT_EN 0x00800000 /* Enable bit */ #define RDC_WDT_EN 0x00800000 /* Enable bit */
@@ -63,6 +62,8 @@ @@ -63,6 +62,8 @@ static struct {
int default_ticks; int default_ticks;
unsigned long inuse; unsigned long inuse;
spinlock_t lock; spinlock_t lock;
@ -42,7 +40,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
} rdc321x_wdt_device; } rdc321x_wdt_device;
/* generic helper functions */ /* generic helper functions */
@@ -70,14 +71,18 @@ @@ -70,14 +71,18 @@ static struct {
static void rdc321x_wdt_trigger(unsigned long unused) static void rdc321x_wdt_trigger(unsigned long unused)
{ {
unsigned long flags; unsigned long flags;
@ -63,7 +61,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
/* requeue?? */ /* requeue?? */
@@ -105,10 +110,13 @@ @@ -105,10 +110,13 @@ static void rdc321x_wdt_start(void)
/* Clear the timer */ /* Clear the timer */
spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
@ -79,7 +77,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
mod_timer(&rdc321x_wdt_device.timer, mod_timer(&rdc321x_wdt_device.timer,
@@ -148,7 +156,7 @@ @@ -148,7 +156,7 @@ static long rdc321x_wdt_ioctl(struct fil
unsigned long arg) unsigned long arg)
{ {
void __user *argp = (void __user *)arg; void __user *argp = (void __user *)arg;
@ -88,7 +86,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
static struct watchdog_info ident = { static struct watchdog_info ident = {
.options = WDIOF_CARDRESET, .options = WDIOF_CARDRESET,
.identity = "RDC321x WDT", .identity = "RDC321x WDT",
@@ -162,9 +170,10 @@ @@ -162,9 +170,10 @@ static long rdc321x_wdt_ioctl(struct fil
case WDIOC_GETSTATUS: case WDIOC_GETSTATUS:
/* Read the value from the DATA register */ /* Read the value from the DATA register */
spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
@ -101,7 +99,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
return -EFAULT; return -EFAULT;
break; break;
case WDIOC_GETSUPPORT: case WDIOC_GETSUPPORT:
@@ -219,17 +228,35 @@ @@ -219,17 +228,35 @@ static struct miscdevice rdc321x_wdt_mis
static int __devinit rdc321x_wdt_probe(struct platform_device *pdev) static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
{ {
int err; int err;
@ -139,7 +137,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c
init_completion(&rdc321x_wdt_device.stop); init_completion(&rdc321x_wdt_device.stop);
rdc321x_wdt_device.queue = 0; rdc321x_wdt_device.queue = 0;
@@ -240,7 +267,7 @@ @@ -240,7 +267,7 @@ static int __devinit rdc321x_wdt_probe(s
rdc321x_wdt_device.default_ticks = ticks; rdc321x_wdt_device.default_ticks = ticks;

View File

@ -3,9 +3,6 @@ the southbridge.
Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Florian Fainelli <florian@openwrt.org>
--- ---
diff --git a/arch/x86/include/asm/rdc321x_defs.h b/arch/x86/include/asm/rdc321x_defs.h
deleted file mode 100644
index c8e9c8b..0000000
--- a/arch/x86/include/asm/rdc321x_defs.h --- a/arch/x86/include/asm/rdc321x_defs.h
+++ /dev/null +++ /dev/null
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
@ -21,6 +18,3 @@ index c8e9c8b..0000000
-#define RDC321X_GPIO_DATA_REG2 0x88 -#define RDC321X_GPIO_DATA_REG2 0x88
- -
-#define RDC321X_MAX_GPIO 58 -#define RDC321X_MAX_GPIO 58

View File

@ -1,8 +1,6 @@
Index: linux-2.6.30.10/drivers/mtd/mtdblock.c --- a/drivers/mtd/mtdblock.c
=================================================================== +++ b/drivers/mtd/mtdblock.c
--- linux-2.6.30.10.orig/drivers/mtd/mtdblock.c 2010-03-19 00:17:37.000000000 +0100 @@ -47,7 +47,7 @@ static void erase_callback(struct erase_
+++ linux-2.6.30.10/drivers/mtd/mtdblock.c 2010-03-19 00:17:54.000000000 +0100
@@ -45,7 +45,7 @@
wake_up(wait_q); wake_up(wait_q);
} }
@ -11,11 +9,9 @@ Index: linux-2.6.30.10/drivers/mtd/mtdblock.c
int len, const char *buf) int len, const char *buf)
{ {
struct erase_info erase; struct erase_info erase;
Index: linux-2.6.30.10/include/linux/mtd/mtd.h --- a/include/linux/mtd/mtd.h
=================================================================== +++ b/include/linux/mtd/mtd.h
--- linux-2.6.30.10.orig/include/linux/mtd/mtd.h 2010-03-19 00:17:42.000000000 +0100 @@ -319,6 +319,10 @@ int default_mtd_writev(struct mtd_info *
+++ linux-2.6.30.10/include/linux/mtd/mtd.h 2010-03-19 00:21:22.000000000 +0100
@@ -319,6 +319,10 @@
int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs,
unsigned long count, loff_t from, size_t *retlen); unsigned long count, loff_t from, size_t *retlen);

View File

@ -1,17 +1,13 @@
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/Makefile --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/Makefile
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/Makefile 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
+# +#
+# Makefile for the RDC321x specific parts of the kernel +# Makefile for the RDC321x specific parts of the kernel
+# +#
+obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o +obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o
+ +
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/platform.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,115 @@ @@ -0,0 +1,115 @@
+/* +/*
+ * Generic RDC321x platform devices + * Generic RDC321x platform devices
@ -128,10 +124,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c
+ return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); + return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
+} +}
+late_initcall(rdc_board_setup); +late_initcall(rdc_board_setup);
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/ar525w.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,243 @@ @@ -0,0 +1,243 @@
+/* +/*
+ * ar525w RDC321x platform devices + * ar525w RDC321x platform devices
@ -376,10 +370,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c
+} +}
+ +
+arch_initcall(ar525w_setup); +arch_initcall(ar525w_setup);
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/bifferboard.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
+/* +/*
+ * Bifferboard RDC321x platform devices + * Bifferboard RDC321x platform devices
@ -462,10 +454,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c
+ return register_mtd_parser(&bifferboard_parser); + return register_mtd_parser(&bifferboard_parser);
+} +}
+arch_initcall(bifferboard_setup); +arch_initcall(bifferboard_setup);
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/r8610.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
+/* +/*
+ * R8610 RDC321x platform devices + * R8610 RDC321x platform devices
@ -532,10 +522,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c
+} +}
+ +
+arch_initcall(r8610_setup); +arch_initcall(r8610_setup);
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/boards/sitecom.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,111 @@ @@ -0,0 +1,111 @@
+/* +/*
+ * Sitecom RDC321x platform devices + * Sitecom RDC321x platform devices
@ -648,10 +636,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c
+} +}
+ +
+arch_initcall(sitecom_setup); +arch_initcall(sitecom_setup);
Index: linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c --- /dev/null
=================================================================== +++ b/arch/x86/mach-rdc321x/reboot.c
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
+/* +/*
+ * This program is free software; you can redistribute it and/or + * This program is free software; you can redistribute it and/or
@ -697,10 +683,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c
+} +}
+ +
+arch_initcall(rdc_setup_reset); +arch_initcall(rdc_setup_reset);
Index: linux-2.6.32.10/arch/x86/include/asm/rdc_boards.h --- /dev/null
=================================================================== +++ b/arch/x86/include/asm/rdc_boards.h
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.32.10/arch/x86/include/asm/rdc_boards.h 2010-04-28 11:39:32.000000000 +0200
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+/* +/*
+ * RDC321x boards + * RDC321x boards

View File

@ -1,7 +1,5 @@
Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c --- a/drivers/watchdog/rdc321x_wdt.c
=================================================================== +++ b/drivers/watchdog/rdc321x_wdt.c
--- linux-2.6.32.10.orig/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:39:28.000000000 +0200
+++ linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:40:11.000000000 +0200
@@ -36,111 +36,99 @@ @@ -36,111 +36,99 @@
#include <linux/watchdog.h> #include <linux/watchdog.h>
#include <linux/io.h> #include <linux/io.h>
@ -164,7 +162,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c
return -EBUSY; return -EBUSY;
return nonseekable_open(inode, file); return nonseekable_open(inode, file);
@@ -148,7 +136,16 @@ @@ -148,7 +136,16 @@ static int rdc321x_wdt_open(struct inode
static int rdc321x_wdt_release(struct inode *inode, struct file *file) static int rdc321x_wdt_release(struct inode *inode, struct file *file)
{ {
@ -182,7 +180,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c
return 0; return 0;
} }
@@ -156,30 +153,29 @@ @@ -156,30 +153,29 @@ static long rdc321x_wdt_ioctl(struct fil
unsigned long arg) unsigned long arg)
{ {
void __user *argp = (void __user *)arg; void __user *argp = (void __user *)arg;
@ -227,7 +225,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c
case WDIOC_SETOPTIONS: case WDIOC_SETOPTIONS:
if (copy_from_user(&value, argp, sizeof(int))) if (copy_from_user(&value, argp, sizeof(int)))
return -EFAULT; return -EFAULT;
@@ -194,17 +190,34 @@ @@ -194,17 +190,34 @@ static long rdc321x_wdt_ioctl(struct fil
} }
break; break;
default: default:
@ -263,7 +261,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c
rdc321x_wdt_reset(); rdc321x_wdt_reset();
return count; return count;
@@ -246,27 +259,18 @@ @@ -246,27 +259,18 @@ static int __devinit rdc321x_wdt_probe(s
rdc321x_wdt_device.sb_pdev = pdata->sb_pdev; rdc321x_wdt_device.sb_pdev = pdata->sb_pdev;
rdc321x_wdt_device.base_reg = r->start; rdc321x_wdt_device.base_reg = r->start;
@ -297,7 +295,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c
dev_info(&pdev->dev, "watchdog init success\n"); dev_info(&pdev->dev, "watchdog init success\n");
return 0; return 0;
@@ -274,10 +278,11 @@ @@ -274,10 +278,11 @@ static int __devinit rdc321x_wdt_probe(s
static int __devexit rdc321x_wdt_remove(struct platform_device *pdev) static int __devexit rdc321x_wdt_remove(struct platform_device *pdev)
{ {

View File

@ -0,0 +1,11 @@
--- a/drivers/mfd/rdc321x-southbridge.c
+++ b/drivers/mfd/rdc321x-southbridge.c
@@ -84,6 +84,8 @@ static int __devinit rdc321x_sb_probe(st
rdc321x_gpio_pdata.sb_pdev = pdev;
rdc321x_wdt_pdata.sb_pdev = pdev;
+ panic_on_unrecovered_nmi = 1;
+
return mfd_add_devices(&pdev->dev, -1,
rdc321x_sb_cells, ARRAY_SIZE(rdc321x_sb_cells), NULL, 0);
}