summaryrefslogtreecommitdiff
path: root/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch')
-rw-r--r--target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch148
1 files changed, 0 insertions, 148 deletions
diff --git a/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch b/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch
deleted file mode 100644
index 9bb1453..0000000
--- a/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-The RDC321x MFD southbridge driver will pass a reference to the southbridge
-PCI device which should be used by the watchdog driver for its operations.
-This patch converts the watchdog driver to use the pci_dev pointer and make use
-of the base register resource which is passed along with the platform device.
-
-Acked-by: Wim Van Sebroeck <wim@iguana.be>
-Signed-off-by: Florian Fainelli <florian@openwrt.org>
----
-Changes from v2:
-- replaced rdc321x_pci_{read,write}
-- use the pci_dev pointer passed as platform_data
-
---- a/drivers/watchdog/rdc321x_wdt.c
-+++ b/drivers/watchdog/rdc321x_wdt.c
-@@ -1,7 +1,7 @@
- /*
- * RDC321x watchdog driver
- *
-- * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
-+ * Copyright (C) 2007-2010 Florian Fainelli <florian@openwrt.org>
- *
- * This driver is highly inspired from the cpu5_wdt driver
- *
-@@ -36,8 +36,7 @@
- #include <linux/watchdog.h>
- #include <linux/io.h>
- #include <linux/uaccess.h>
--
--#include <asm/rdc321x_defs.h>
-+#include <linux/mfd/rdc321x.h>
-
- #define RDC_WDT_MASK 0x80000000 /* Mask */
- #define RDC_WDT_EN 0x00800000 /* Enable bit */
-@@ -63,6 +62,8 @@ static struct {
- int default_ticks;
- unsigned long inuse;
- spinlock_t lock;
-+ struct pci_dev *sb_pdev;
-+ int base_reg;
- } rdc321x_wdt_device;
-
- /* generic helper functions */
-@@ -70,14 +71,18 @@ static struct {
- static void rdc321x_wdt_trigger(unsigned long unused)
- {
- unsigned long flags;
-+ u32 val;
-
- if (rdc321x_wdt_device.running)
- ticks--;
-
- /* keep watchdog alive */
- spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
-- outl(RDC_WDT_EN | inl(RDC3210_CFGREG_DATA),
-- RDC3210_CFGREG_DATA);
-+ pci_read_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg, &val);
-+ val |= RDC_WDT_EN;
-+ pci_write_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg, val);
- spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
-
- /* requeue?? */
-@@ -105,10 +110,13 @@ static void rdc321x_wdt_start(void)
-
- /* Clear the timer */
- spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
-- outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
-+ pci_write_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg, RDC_CLS_TMR);
-
- /* Enable watchdog and set the timeout to 81.92 us */
-- outl(RDC_WDT_EN | RDC_WDT_CNT, RDC3210_CFGREG_DATA);
-+ pci_write_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg,
-+ RDC_WDT_EN | RDC_WDT_CNT);
- spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
-
- mod_timer(&rdc321x_wdt_device.timer,
-@@ -148,7 +156,7 @@ static long rdc321x_wdt_ioctl(struct fil
- unsigned long arg)
- {
- void __user *argp = (void __user *)arg;
-- unsigned int value;
-+ u32 value;
- static struct watchdog_info ident = {
- .options = WDIOF_CARDRESET,
- .identity = "RDC321x WDT",
-@@ -162,9 +170,10 @@ static long rdc321x_wdt_ioctl(struct fil
- case WDIOC_GETSTATUS:
- /* Read the value from the DATA register */
- spin_lock_irqsave(&rdc321x_wdt_device.lock, flags);
-- value = inl(RDC3210_CFGREG_DATA);
-+ pci_read_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg, &value);
- spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags);
-- if (copy_to_user(argp, &value, sizeof(int)))
-+ if (copy_to_user(argp, &value, sizeof(u32)))
- return -EFAULT;
- break;
- case WDIOC_GETSUPPORT:
-@@ -219,17 +228,35 @@ static struct miscdevice rdc321x_wdt_mis
- static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
- {
- int err;
-+ struct resource *r;
-+ struct rdc321x_wdt_pdata *pdata;
-+
-+ pdata = platform_get_drvdata(pdev);
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "no platform data supplied\n");
-+ return -ENODEV;
-+ }
-+
-+ r = platform_get_resource_byname(pdev, IORESOURCE_IO, "wdt-reg");
-+ if (!r) {
-+ dev_err(&pdev->dev, "failed to get wdt-reg resource\n");
-+ return -ENODEV;
-+ }
-+
-+ rdc321x_wdt_device.sb_pdev = pdata->sb_pdev;
-+ rdc321x_wdt_device.base_reg = r->start;
-
- err = misc_register(&rdc321x_wdt_misc);
- if (err < 0) {
-- printk(KERN_ERR PFX "watchdog misc_register failed\n");
-+ dev_err(&pdev->dev, "misc_register failed\n");
- return err;
- }
-
- spin_lock_init(&rdc321x_wdt_device.lock);
-
- /* Reset the watchdog */
-- outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
-+ pci_write_config_dword(rdc321x_wdt_device.sb_pdev,
-+ rdc321x_wdt_device.base_reg, RDC_WDT_RST);
-
- init_completion(&rdc321x_wdt_device.stop);
- rdc321x_wdt_device.queue = 0;
-@@ -240,7 +267,7 @@ static int __devinit rdc321x_wdt_probe(s
-
- rdc321x_wdt_device.default_ticks = ticks;
-
-- printk(KERN_INFO PFX "watchdog init success\n");
-+ dev_info(&pdev->dev, "watchdog init success\n");
-
- return 0;
- }