diff options
Diffstat (limited to 'drivers/input/keyboard/adp5520-keys.c')
| -rw-r--r-- | drivers/input/keyboard/adp5520-keys.c | 35 | 
1 files changed, 11 insertions, 24 deletions
diff --git a/drivers/input/keyboard/adp5520-keys.c b/drivers/input/keyboard/adp5520-keys.c index ef26b17fb15..7f4a8b58efc 100644 --- a/drivers/input/keyboard/adp5520-keys.c +++ b/drivers/input/keyboard/adp5520-keys.c @@ -8,11 +8,11 @@  #include <linux/module.h>  #include <linux/kernel.h> -#include <linux/init.h>  #include <linux/platform_device.h>  #include <linux/input.h>  #include <linux/mfd/adp5520.h>  #include <linux/slab.h> +#include <linux/device.h>  struct adp5520_keys {  	struct input_dev *input; @@ -71,7 +71,7 @@ static int adp5520_keys_notifier(struct notifier_block *nb,  static int adp5520_keys_probe(struct platform_device *pdev)  { -	struct adp5520_keys_platform_data *pdata = pdev->dev.platform_data; +	struct adp5520_keys_platform_data *pdata = dev_get_platdata(&pdev->dev);  	struct input_dev *input;  	struct adp5520_keys *dev;  	int ret, i; @@ -82,7 +82,7 @@ static int adp5520_keys_probe(struct platform_device *pdev)  		return -EINVAL;  	} -	if (pdata == NULL) { +	if (!pdata) {  		dev_err(&pdev->dev, "missing platform data\n");  		return -EINVAL;  	} @@ -90,17 +90,15 @@ static int adp5520_keys_probe(struct platform_device *pdev)  	if (!(pdata->rows_en_mask && pdata->cols_en_mask))  		return -EINVAL; -	dev = kzalloc(sizeof(*dev), GFP_KERNEL); -	if (dev == NULL) { +	dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); +	if (!dev) {  		dev_err(&pdev->dev, "failed to alloc memory\n");  		return -ENOMEM;  	} -	input = input_allocate_device(); -	if (!input) { -		ret = -ENOMEM; -		goto err; -	} +	input = devm_input_allocate_device(&pdev->dev); +	if (!input) +		return -ENOMEM;  	dev->master = pdev->dev.parent;  	dev->input = input; @@ -136,7 +134,7 @@ static int adp5520_keys_probe(struct platform_device *pdev)  	ret = input_register_device(input);  	if (ret) {  		dev_err(&pdev->dev, "unable to register input device\n"); -		goto err; +		return ret;  	}  	en_mask = pdata->rows_en_mask | pdata->cols_en_mask; @@ -158,8 +156,7 @@ static int adp5520_keys_probe(struct platform_device *pdev)  	if (ret) {  		dev_err(&pdev->dev, "failed to write\n"); -		ret = -EIO; -		goto err1; +		return -EIO;  	}  	dev->notifier.notifier_call = adp5520_keys_notifier; @@ -167,19 +164,11 @@ static int adp5520_keys_probe(struct platform_device *pdev)  			ADP5520_KP_IEN | ADP5520_KR_IEN);  	if (ret) {  		dev_err(&pdev->dev, "failed to register notifier\n"); -		goto err1; +		return ret;  	}  	platform_set_drvdata(pdev, dev);  	return 0; - -err1: -	input_unregister_device(input); -	input = NULL; -err: -	input_free_device(input); -	kfree(dev); -	return ret;  }  static int adp5520_keys_remove(struct platform_device *pdev) @@ -189,8 +178,6 @@ static int adp5520_keys_remove(struct platform_device *pdev)  	adp5520_unregister_notifier(dev->master, &dev->notifier,  				ADP5520_KP_IEN | ADP5520_KR_IEN); -	input_unregister_device(dev->input); -	kfree(dev);  	return 0;  }  | 
