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

leds: da903x: Use devm_led_classdev_register

Switch to resource-managed function devm_led_classdev_register instead
of led_classdev_register and remove unneeded led_classdev_unregister.

Also, remove platform_set_drvdata in probe function and the remove
function, da903x_led_remove as it is now has nothing to do.

The Coccinelle semantic patch used to make this change is as follows:
//<smpl>
@platform@
identifier p, probefn, removefn;
@@
struct platform_driver p = {
.probe = probefn,
.remove = removefn,
};

@prb@
identifier platform.probefn, pdev;
expression e;
@@
probefn(struct platform_device *pdev, ...) {
...
e =
- led_classdev_register
+ devm_led_classdev_register
(...);
...
?- led_classdev_unregister(...);
...
}
@remove depends on prb@
identifier platform.removefn;
@@
removefn(...) {
...
?- led_classdev_unregister(...);
...
}
//</smpl>

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>

authored by

Amitoj Kaur Chawla and committed by
Jacek Anaszewski
eed16255 48a7032b

+1 -11
+1 -11
drivers/leds/leds-da903x.c
··· 113 113 led->flags = pdata->flags; 114 114 led->master = pdev->dev.parent; 115 115 116 - ret = led_classdev_register(led->master, &led->cdev); 116 + ret = devm_led_classdev_register(led->master, &led->cdev); 117 117 if (ret) { 118 118 dev_err(&pdev->dev, "failed to register LED %d\n", id); 119 119 return ret; 120 120 } 121 121 122 - platform_set_drvdata(pdev, led); 123 - return 0; 124 - } 125 - 126 - static int da903x_led_remove(struct platform_device *pdev) 127 - { 128 - struct da903x_led *led = platform_get_drvdata(pdev); 129 - 130 - led_classdev_unregister(&led->cdev); 131 122 return 0; 132 123 } 133 124 ··· 127 136 .name = "da903x-led", 128 137 }, 129 138 .probe = da903x_led_probe, 130 - .remove = da903x_led_remove, 131 139 }; 132 140 133 141 module_platform_driver(da903x_led_driver);