forked from Minki/linux
leds: pwm: Simplify with resource-managed devm_led_classdev_register()
Simplify the exit path with resource-managed version of registering LED class device. The code should be functionally the same, except that on device removal the led_pwm_priv->num_leds is not decremented to zero (which should not have any effect as device is going away). Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
This commit is contained in:
parent
b086592e5d
commit
e5a0436dd0
@ -74,12 +74,6 @@ static inline size_t sizeof_pwm_leds_priv(int num_leds)
|
||||
(sizeof(struct led_pwm_data) * num_leds);
|
||||
}
|
||||
|
||||
static void led_pwm_cleanup(struct led_pwm_priv *priv)
|
||||
{
|
||||
while (priv->num_leds--)
|
||||
led_classdev_unregister(&priv->leds[priv->num_leds].cdev);
|
||||
}
|
||||
|
||||
static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
|
||||
struct led_pwm *led, struct device_node *child)
|
||||
{
|
||||
@ -120,7 +114,7 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
|
||||
if (!led_data->period && (led->pwm_period_ns > 0))
|
||||
led_data->period = led->pwm_period_ns;
|
||||
|
||||
ret = led_classdev_register(dev, &led_data->cdev);
|
||||
ret = devm_led_classdev_register(dev, &led_data->cdev);
|
||||
if (ret == 0) {
|
||||
priv->num_leds++;
|
||||
led_pwm_set(&led_data->cdev, led_data->cdev.brightness);
|
||||
@ -191,25 +185,14 @@ static int led_pwm_probe(struct platform_device *pdev)
|
||||
ret = led_pwm_create_of(&pdev->dev, priv);
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
led_pwm_cleanup(priv);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int led_pwm_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct led_pwm_priv *priv = platform_get_drvdata(pdev);
|
||||
|
||||
led_pwm_cleanup(priv);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id of_pwm_leds_match[] = {
|
||||
{ .compatible = "pwm-leds", },
|
||||
{},
|
||||
@ -218,7 +201,6 @@ MODULE_DEVICE_TABLE(of, of_pwm_leds_match);
|
||||
|
||||
static struct platform_driver led_pwm_driver = {
|
||||
.probe = led_pwm_probe,
|
||||
.remove = led_pwm_remove,
|
||||
.driver = {
|
||||
.name = "leds_pwm",
|
||||
.of_match_table = of_pwm_leds_match,
|
||||
|
Loading…
Reference in New Issue
Block a user