Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[linux-2.6-microblaze.git] / drivers / gpio / gpio-zynq.c
index 3521c1d..f0cb8cc 100644 (file)
@@ -736,6 +736,11 @@ static int __maybe_unused zynq_gpio_suspend(struct device *dev)
        struct zynq_gpio *gpio = dev_get_drvdata(dev);
        struct irq_data *data = irq_get_irq_data(gpio->irq);
 
+       if (!data) {
+               dev_err(dev, "irq_get_irq_data() failed\n");
+               return -EINVAL;
+       }
+
        if (!device_may_wakeup(dev))
                disable_irq(gpio->irq);
 
@@ -753,6 +758,11 @@ static int __maybe_unused zynq_gpio_resume(struct device *dev)
        struct irq_data *data = irq_get_irq_data(gpio->irq);
        int ret;
 
+       if (!data) {
+               dev_err(dev, "irq_get_irq_data() failed\n");
+               return -EINVAL;
+       }
+
        if (!device_may_wakeup(dev))
                enable_irq(gpio->irq);
 
@@ -1001,8 +1011,11 @@ err_pm_dis:
 static int zynq_gpio_remove(struct platform_device *pdev)
 {
        struct zynq_gpio *gpio = platform_get_drvdata(pdev);
+       int ret;
 
-       pm_runtime_get_sync(&pdev->dev);
+       ret = pm_runtime_get_sync(&pdev->dev);
+       if (ret < 0)
+               dev_warn(&pdev->dev, "pm_runtime_get_sync() Failed\n");
        gpiochip_remove(&gpio->chip);
        clk_disable_unprepare(gpio->clk);
        device_set_wakeup_capable(&pdev->dev, 0);
@@ -1020,22 +1033,7 @@ static struct platform_driver zynq_gpio_driver = {
        .remove = zynq_gpio_remove,
 };
 
-/**
- * zynq_gpio_init - Initial driver registration call
- *
- * Return: value from platform_driver_register
- */
-static int __init zynq_gpio_init(void)
-{
-       return platform_driver_register(&zynq_gpio_driver);
-}
-postcore_initcall(zynq_gpio_init);
-
-static void __exit zynq_gpio_exit(void)
-{
-       platform_driver_unregister(&zynq_gpio_driver);
-}
-module_exit(zynq_gpio_exit);
+module_platform_driver(zynq_gpio_driver);
 
 MODULE_AUTHOR("Xilinx Inc.");
 MODULE_DESCRIPTION("Zynq GPIO driver");