[PATCH] irq-flags: drivers/char: Use the new IRQF_ constants
[firefly-linux-kernel-4.4.55.git] / drivers / char / watchdog / mpcore_wdt.c
index da631c114fd17089e4ad475377e813bfa8f9618a..c2d492c852fcfa69cf0a1a7c2343e76ff1481ea9 100644 (file)
@@ -21,7 +21,6 @@
  */
 #include <linux/module.h>
 #include <linux/moduleparam.h>
-#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/miscdevice.h>
 #include <linux/watchdog.h>
@@ -139,7 +138,7 @@ static int mpcore_wdt_set_heartbeat(int t)
  */
 static int mpcore_wdt_open(struct inode *inode, struct file *file)
 {
-       struct mpcore_wdt *wdt = dev_get_drvdata(&mpcore_wdt_dev->dev);
+       struct mpcore_wdt *wdt = platform_get_drvdata(mpcore_wdt_dev);
 
        if (test_and_set_bit(0, &wdt->timer_alive))
                return -EBUSY;
@@ -180,10 +179,6 @@ static ssize_t mpcore_wdt_write(struct file *file, const char *data, size_t len,
 {
        struct mpcore_wdt *wdt = file->private_data;
 
-       /*  Can't seek (pwrite) on this device  */
-       if (ppos != &file->f_pos)
-               return -ESPIPE;
-
        /*
         *      Refresh the timer.
         */
@@ -291,9 +286,9 @@ static int mpcore_wdt_ioctl(struct inode *inode, struct file *file,
  *     System shutdown handler.  Turn off the watchdog if we're
  *     restarting or halting the system.
  */
-static void mpcore_wdt_shutdown(struct device *_dev)
+static void mpcore_wdt_shutdown(struct platform_device *dev)
 {
-       struct mpcore_wdt *wdt = dev_get_drvdata(_dev);
+       struct mpcore_wdt *wdt = platform_get_drvdata(dev);
 
        if (system_state == SYSTEM_RESTART || system_state == SYSTEM_HALT)
                mpcore_wdt_stop(wdt);
@@ -317,9 +312,8 @@ static struct miscdevice mpcore_wdt_miscdev = {
        .fops           = &mpcore_wdt_fops,
 };
 
-static int __devinit mpcore_wdt_probe(struct device *_dev)
+static int __devinit mpcore_wdt_probe(struct platform_device *dev)
 {
-       struct platform_device *dev = to_platform_device(_dev);
        struct mpcore_wdt *wdt;
        struct resource *res;
        int ret;
@@ -343,6 +337,10 @@ static int __devinit mpcore_wdt_probe(struct device *_dev)
 
        wdt->dev = &dev->dev;
        wdt->irq = platform_get_irq(dev, 0);
+       if (wdt->irq < 0) {
+               ret = -ENXIO;
+               goto err_free;
+       }
        wdt->base = ioremap(res->start, res->end - res->start + 1);
        if (!wdt->base) {
                ret = -ENOMEM;
@@ -357,14 +355,14 @@ static int __devinit mpcore_wdt_probe(struct device *_dev)
                goto err_misc;
        }
 
-       ret = request_irq(wdt->irq, mpcore_wdt_fire, SA_INTERRUPT, "mpcore_wdt", wdt);
+       ret = request_irq(wdt->irq, mpcore_wdt_fire, IRQF_DISABLED, "mpcore_wdt", wdt);
        if (ret) {
                dev_printk(KERN_ERR, _dev, "cannot register IRQ%d for watchdog\n", wdt->irq);
                goto err_irq;
        }
 
        mpcore_wdt_stop(wdt);
-       dev_set_drvdata(&dev->dev, wdt);
+       platform_set_drvdata(&dev->dev, wdt);
        mpcore_wdt_dev = dev;
 
        return 0;
@@ -379,11 +377,11 @@ static int __devinit mpcore_wdt_probe(struct device *_dev)
        return ret;
 }
 
-static int __devexit mpcore_wdt_remove(struct device *dev)
+static int __devexit mpcore_wdt_remove(struct platform_device *dev)
 {
-       struct mpcore_wdt *wdt = dev_get_drvdata(dev);
+       struct mpcore_wdt *wdt = platform_get_drvdata(dev);
 
-       dev_set_drvdata(dev, NULL);
+       platform_set_drvdata(dev, NULL);
 
        misc_deregister(&mpcore_wdt_miscdev);
 
@@ -395,13 +393,14 @@ static int __devexit mpcore_wdt_remove(struct device *dev)
        return 0;
 }
 
-static struct device_driver mpcore_wdt_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "mpcore_wdt",
-       .bus            = &platform_bus_type,
+static struct platform_driver mpcore_wdt_driver = {
        .probe          = mpcore_wdt_probe,
        .remove         = __devexit_p(mpcore_wdt_remove),
        .shutdown       = mpcore_wdt_shutdown,
+       .driver         = {
+               .owner  = THIS_MODULE,
+               .name   = "mpcore_wdt",
+       },
 };
 
 static char banner[] __initdata = KERN_INFO "MPcore Watchdog Timer: 0.1. mpcore_noboot=%d mpcore_margin=%d sec (nowayout= %d)\n";
@@ -420,12 +419,12 @@ static int __init mpcore_wdt_init(void)
 
        printk(banner, mpcore_noboot, mpcore_margin, nowayout);
 
-       return driver_register(&mpcore_wdt_driver);
+       return platform_driver_register(&mpcore_wdt_driver);
 }
 
 static void __exit mpcore_wdt_exit(void)
 {
-       driver_unregister(&mpcore_wdt_driver);
+       platform_driver_unregister(&mpcore_wdt_driver);
 }
 
 module_init(mpcore_wdt_init);