diff options
Diffstat (limited to 'drivers/gpio/gpio-adp5520.c')
| -rw-r--r-- | drivers/gpio/gpio-adp5520.c | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/drivers/gpio/gpio-adp5520.c b/drivers/gpio/gpio-adp5520.c index 9f278153700..f1ade8fa321 100644 --- a/drivers/gpio/gpio-adp5520.c +++ b/drivers/gpio/gpio-adp5520.c @@ -87,9 +87,9 @@ static int adp5520_gpio_direction_output(struct gpio_chip *chip, return ret; } -static int __devinit adp5520_gpio_probe(struct platform_device *pdev) +static int adp5520_gpio_probe(struct platform_device *pdev) { - struct adp5520_gpio_platform_data *pdata = pdev->dev.platform_data; + struct adp5520_gpio_platform_data *pdata = dev_get_platdata(&pdev->dev); struct adp5520_gpio *dev; struct gpio_chip *gc; int ret, i, gpios; @@ -105,11 +105,9 @@ static int __devinit adp5520_gpio_probe(struct platform_device *pdev) return -ENODEV; } - dev = kzalloc(sizeof(*dev), GFP_KERNEL); - if (dev == NULL) { - dev_err(&pdev->dev, "failed to alloc memory\n"); + dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); + if (dev == NULL) return -ENOMEM; - } dev->master = pdev->dev.parent; @@ -127,7 +125,7 @@ static int __devinit adp5520_gpio_probe(struct platform_device *pdev) gc->direction_output = adp5520_gpio_direction_output; gc->get = adp5520_gpio_get_value; gc->set = adp5520_gpio_set_value; - gc->can_sleep = 1; + gc->can_sleep = true; gc->base = pdata->gpio_start; gc->ngpio = gpios; @@ -163,11 +161,10 @@ static int __devinit adp5520_gpio_probe(struct platform_device *pdev) return 0; err: - kfree(dev); return ret; } -static int __devexit adp5520_gpio_remove(struct platform_device *pdev) +static int adp5520_gpio_remove(struct platform_device *pdev) { struct adp5520_gpio *dev; int ret; @@ -180,7 +177,6 @@ static int __devexit adp5520_gpio_remove(struct platform_device *pdev) return ret; } - kfree(dev); return 0; } @@ -190,20 +186,10 @@ static struct platform_driver adp5520_gpio_driver = { .owner = THIS_MODULE, }, .probe = adp5520_gpio_probe, - .remove = __devexit_p(adp5520_gpio_remove), + .remove = adp5520_gpio_remove, }; -static int __init adp5520_gpio_init(void) -{ - return platform_driver_register(&adp5520_gpio_driver); -} -module_init(adp5520_gpio_init); - -static void __exit adp5520_gpio_exit(void) -{ - platform_driver_unregister(&adp5520_gpio_driver); -} -module_exit(adp5520_gpio_exit); +module_platform_driver(adp5520_gpio_driver); MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>"); MODULE_DESCRIPTION("GPIO ADP5520 Driver"); |
