diff options
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpiolib.c | 8 | ||||
-rw-r--r-- | drivers/gpio/twl4030-gpio.c | 5 |
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 662ed923d9eb..50de0f5750d8 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c | |||
@@ -661,7 +661,7 @@ int gpio_export(unsigned gpio, bool direction_may_change) | |||
661 | 661 | ||
662 | dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0), | 662 | dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0), |
663 | desc, ioname ? ioname : "gpio%d", gpio); | 663 | desc, ioname ? ioname : "gpio%d", gpio); |
664 | if (dev) { | 664 | if (!IS_ERR(dev)) { |
665 | if (direction_may_change) | 665 | if (direction_may_change) |
666 | status = sysfs_create_group(&dev->kobj, | 666 | status = sysfs_create_group(&dev->kobj, |
667 | &gpio_attr_group); | 667 | &gpio_attr_group); |
@@ -679,7 +679,7 @@ int gpio_export(unsigned gpio, bool direction_may_change) | |||
679 | if (status != 0) | 679 | if (status != 0) |
680 | device_unregister(dev); | 680 | device_unregister(dev); |
681 | } else | 681 | } else |
682 | status = -ENODEV; | 682 | status = PTR_ERR(dev); |
683 | if (status == 0) | 683 | if (status == 0) |
684 | set_bit(FLAG_EXPORT, &desc->flags); | 684 | set_bit(FLAG_EXPORT, &desc->flags); |
685 | } | 685 | } |
@@ -800,11 +800,11 @@ static int gpiochip_export(struct gpio_chip *chip) | |||
800 | mutex_lock(&sysfs_lock); | 800 | mutex_lock(&sysfs_lock); |
801 | dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip, | 801 | dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip, |
802 | "gpiochip%d", chip->base); | 802 | "gpiochip%d", chip->base); |
803 | if (dev) { | 803 | if (!IS_ERR(dev)) { |
804 | status = sysfs_create_group(&dev->kobj, | 804 | status = sysfs_create_group(&dev->kobj, |
805 | &gpiochip_attr_group); | 805 | &gpiochip_attr_group); |
806 | } else | 806 | } else |
807 | status = -ENODEV; | 807 | status = PTR_ERR(dev); |
808 | chip->exported = (status == 0); | 808 | chip->exported = (status == 0); |
809 | mutex_unlock(&sysfs_lock); | 809 | mutex_unlock(&sysfs_lock); |
810 | 810 | ||
diff --git a/drivers/gpio/twl4030-gpio.c b/drivers/gpio/twl4030-gpio.c index afad14792141..49384a7c5492 100644 --- a/drivers/gpio/twl4030-gpio.c +++ b/drivers/gpio/twl4030-gpio.c | |||
@@ -460,7 +460,8 @@ no_irqs: | |||
460 | return ret; | 460 | return ret; |
461 | } | 461 | } |
462 | 462 | ||
463 | static int __devexit gpio_twl4030_remove(struct platform_device *pdev) | 463 | /* Cannot use __devexit as gpio_twl4030_probe() calls us */ |
464 | static int gpio_twl4030_remove(struct platform_device *pdev) | ||
464 | { | 465 | { |
465 | struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data; | 466 | struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data; |
466 | int status; | 467 | int status; |
@@ -493,7 +494,7 @@ static struct platform_driver gpio_twl4030_driver = { | |||
493 | .driver.name = "twl4030_gpio", | 494 | .driver.name = "twl4030_gpio", |
494 | .driver.owner = THIS_MODULE, | 495 | .driver.owner = THIS_MODULE, |
495 | .probe = gpio_twl4030_probe, | 496 | .probe = gpio_twl4030_probe, |
496 | .remove = __devexit_p(gpio_twl4030_remove), | 497 | .remove = gpio_twl4030_remove, |
497 | }; | 498 | }; |
498 | 499 | ||
499 | static int __init gpio_twl4030_init(void) | 500 | static int __init gpio_twl4030_init(void) |