Skip to content

Commit

Permalink
pwm: Drop irrelevant error path from pwmchip_remove()
Browse files Browse the repository at this point in the history
Since the PWM core uses device links (commit b2c200e ("pwm: Add
consumer device link")) each consumer driver that requested the PWMs is
already gone. If they called pwm_put() (as they should) the
PWMF_REQUESTED bit is not set. If they failed (which is a bug) the
PWMF_REQUESTED bit might still be set, but the driver that cared is
gone, so nothing bad happens if the PWM chip goes away even if the
PWMF_REQUESTED is still present.

So the check can be dropped.

With this change pwmchip_remove() returns always 0, so lowlevel drivers
don't need to check the return code any more. Once all drivers dropped
this check this function can be changed to return void.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
  • Loading branch information
Uwe Kleine-König authored and Thierry Reding committed Jun 28, 2021
1 parent 66a03c4 commit ad5e085
Showing 1 changed file with 2 additions and 14 deletions.
16 changes: 2 additions & 14 deletions drivers/pwm/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,32 +306,20 @@ EXPORT_SYMBOL_GPL(pwmchip_add);
*/
int pwmchip_remove(struct pwm_chip *chip)
{
unsigned int i;
int ret = 0;

pwmchip_sysfs_unexport(chip);

mutex_lock(&pwm_lock);

for (i = 0; i < chip->npwm; i++) {
struct pwm_device *pwm = &chip->pwms[i];

if (test_bit(PWMF_REQUESTED, &pwm->flags)) {
ret = -EBUSY;
goto out;
}
}

list_del_init(&chip->list);

if (IS_ENABLED(CONFIG_OF))
of_pwmchip_remove(chip);

free_pwms(chip);

out:
mutex_unlock(&pwm_lock);
return ret;

return 0;
}
EXPORT_SYMBOL_GPL(pwmchip_remove);

Expand Down

0 comments on commit ad5e085

Please sign in to comment.