Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: adp5520-keys - switch to using managed resources

Let's switch the driver to use managed resources, this will simplify
error handling and driver unbinding logic.

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Himangi Saraogi and committed by
Dmitry Torokhov
ec62c7a8 4f8edc3c

+10 -22
+10 -22
drivers/input/keyboard/adp5520-keys.c
··· 12 12 #include <linux/input.h> 13 13 #include <linux/mfd/adp5520.h> 14 14 #include <linux/slab.h> 15 + #include <linux/device.h> 15 16 16 17 struct adp5520_keys { 17 18 struct input_dev *input; ··· 82 81 return -EINVAL; 83 82 } 84 83 85 - if (pdata == NULL) { 84 + if (!pdata) { 86 85 dev_err(&pdev->dev, "missing platform data\n"); 87 86 return -EINVAL; 88 87 } ··· 90 89 if (!(pdata->rows_en_mask && pdata->cols_en_mask)) 91 90 return -EINVAL; 92 91 93 - dev = kzalloc(sizeof(*dev), GFP_KERNEL); 94 - if (dev == NULL) { 92 + dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); 93 + if (!dev) { 95 94 dev_err(&pdev->dev, "failed to alloc memory\n"); 96 95 return -ENOMEM; 97 96 } 98 97 99 - input = input_allocate_device(); 100 - if (!input) { 101 - ret = -ENOMEM; 102 - goto err; 103 - } 98 + input = devm_input_allocate_device(&pdev->dev); 99 + if (!input) 100 + return -ENOMEM; 104 101 105 102 dev->master = pdev->dev.parent; 106 103 dev->input = input; ··· 134 135 ret = input_register_device(input); 135 136 if (ret) { 136 137 dev_err(&pdev->dev, "unable to register input device\n"); 137 - goto err; 138 + return ret; 138 139 } 139 140 140 141 en_mask = pdata->rows_en_mask | pdata->cols_en_mask; ··· 156 157 157 158 if (ret) { 158 159 dev_err(&pdev->dev, "failed to write\n"); 159 - ret = -EIO; 160 - goto err1; 160 + return -EIO; 161 161 } 162 162 163 163 dev->notifier.notifier_call = adp5520_keys_notifier; ··· 164 166 ADP5520_KP_IEN | ADP5520_KR_IEN); 165 167 if (ret) { 166 168 dev_err(&pdev->dev, "failed to register notifier\n"); 167 - goto err1; 169 + return ret; 168 170 } 169 171 170 172 platform_set_drvdata(pdev, dev); 171 173 return 0; 172 - 173 - err1: 174 - input_unregister_device(input); 175 - input = NULL; 176 - err: 177 - input_free_device(input); 178 - kfree(dev); 179 - return ret; 180 174 } 181 175 182 176 static int adp5520_keys_remove(struct platform_device *pdev) ··· 178 188 adp5520_unregister_notifier(dev->master, &dev->notifier, 179 189 ADP5520_KP_IEN | ADP5520_KR_IEN); 180 190 181 - input_unregister_device(dev->input); 182 - kfree(dev); 183 191 return 0; 184 192 } 185 193