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

leds: s3c24xx: 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 unnecessary function pdev_to_gpio, platform_set_drvdata
in the probe function and the remove function, s3c24xx_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
48a7032b 8d3b6a40

+1 -18
+1 -18
drivers/leds/leds-s3c24xx.c
··· 29 29 struct s3c24xx_led_platdata *pdata; 30 30 }; 31 31 32 - static inline struct s3c24xx_gpio_led *pdev_to_gpio(struct platform_device *dev) 33 - { 34 - return platform_get_drvdata(dev); 35 - } 36 - 37 32 static inline struct s3c24xx_gpio_led *to_gpio(struct led_classdev *led_cdev) 38 33 { 39 34 return container_of(led_cdev, struct s3c24xx_gpio_led, cdev); ··· 54 59 } 55 60 } 56 61 57 - static int s3c24xx_led_remove(struct platform_device *dev) 58 - { 59 - struct s3c24xx_gpio_led *led = pdev_to_gpio(dev); 60 - 61 - led_classdev_unregister(&led->cdev); 62 - 63 - return 0; 64 - } 65 - 66 62 static int s3c24xx_led_probe(struct platform_device *dev) 67 63 { 68 64 struct s3c24xx_led_platdata *pdata = dev_get_platdata(&dev->dev); ··· 64 78 GFP_KERNEL); 65 79 if (!led) 66 80 return -ENOMEM; 67 - 68 - platform_set_drvdata(dev, led); 69 81 70 82 led->cdev.brightness_set = s3c24xx_led_set; 71 83 led->cdev.default_trigger = pdata->def_trigger; ··· 88 104 89 105 /* register our new led device */ 90 106 91 - ret = led_classdev_register(&dev->dev, &led->cdev); 107 + ret = devm_led_classdev_register(&dev->dev, &led->cdev); 92 108 if (ret < 0) 93 109 dev_err(&dev->dev, "led_classdev_register failed\n"); 94 110 ··· 97 113 98 114 static struct platform_driver s3c24xx_led_driver = { 99 115 .probe = s3c24xx_led_probe, 100 - .remove = s3c24xx_led_remove, 101 116 .driver = { 102 117 .name = "s3c24xx_led", 103 118 },