mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
pwm: Use guards for pwm_lock instead of explicity mutex_lock + mutex_unlock
With the compiler caring for unlocking the mutex several functions can be simplified. Benefit from that. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com> Link: https://lore.kernel.org/r/2102fe8189bdf1f02ff3785b551a69be27a65af4.1719520143.git.u.kleine-koenig@baylibre.com Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
This commit is contained in:
parent
44ee95184e
commit
650af6c083
@ -293,19 +293,15 @@ EXPORT_SYMBOL_GPL(pwm_adjust_config);
|
||||
int pwm_capture(struct pwm_device *pwm, struct pwm_capture *result,
|
||||
unsigned long timeout)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!pwm || !pwm->chip->ops)
|
||||
return -EINVAL;
|
||||
|
||||
if (!pwm->chip->ops->capture)
|
||||
return -ENOSYS;
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
err = pwm->chip->ops->capture(pwm->chip, pwm, result, timeout);
|
||||
mutex_unlock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
return err;
|
||||
return pwm->chip->ops->capture(pwm->chip, pwm, result, timeout);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwm_capture);
|
||||
|
||||
@ -317,19 +313,15 @@ static struct pwm_chip *pwmchip_find_by_name(const char *name)
|
||||
if (!name)
|
||||
return NULL;
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
idr_for_each_entry_ul(&pwm_chips, chip, tmp, id) {
|
||||
const char *chip_name = dev_name(pwmchip_parent(chip));
|
||||
|
||||
if (chip_name && strcmp(chip_name, name) == 0) {
|
||||
mutex_unlock(&pwm_lock);
|
||||
if (chip_name && strcmp(chip_name, name) == 0)
|
||||
return chip;
|
||||
}
|
||||
}
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -406,14 +398,14 @@ static struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
|
||||
if (!chip || index >= chip->npwm)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
pwm = &chip->pwms[index];
|
||||
|
||||
err = pwm_device_request(pwm, label);
|
||||
if (err < 0)
|
||||
pwm = ERR_PTR(err);
|
||||
return ERR_PTR(err);
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
return pwm;
|
||||
}
|
||||
|
||||
@ -1102,11 +1094,11 @@ int __pwmchip_add(struct pwm_chip *chip, struct module *owner)
|
||||
|
||||
chip->owner = owner;
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
ret = idr_alloc(&pwm_chips, chip, 0, 0, GFP_KERNEL);
|
||||
if (ret < 0)
|
||||
goto err_idr_alloc;
|
||||
return ret;
|
||||
|
||||
chip->id = ret;
|
||||
|
||||
@ -1119,8 +1111,6 @@ int __pwmchip_add(struct pwm_chip *chip, struct module *owner)
|
||||
if (ret)
|
||||
goto err_device_add;
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
err_device_add:
|
||||
@ -1128,9 +1118,6 @@ int __pwmchip_add(struct pwm_chip *chip, struct module *owner)
|
||||
of_pwmchip_remove(chip);
|
||||
|
||||
idr_remove(&pwm_chips, chip->id);
|
||||
err_idr_alloc:
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -1149,11 +1136,8 @@ void pwmchip_remove(struct pwm_chip *chip)
|
||||
if (IS_ENABLED(CONFIG_OF))
|
||||
of_pwmchip_remove(chip);
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
|
||||
idr_remove(&pwm_chips, chip->id);
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
scoped_guard(mutex, &pwm_lock)
|
||||
idr_remove(&pwm_chips, chip->id);
|
||||
|
||||
device_del(&chip->dev);
|
||||
}
|
||||
@ -1209,15 +1193,11 @@ static struct pwm_chip *fwnode_to_pwmchip(struct fwnode_handle *fwnode)
|
||||
struct pwm_chip *chip;
|
||||
unsigned long id, tmp;
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
idr_for_each_entry_ul(&pwm_chips, chip, tmp, id)
|
||||
if (pwmchip_parent(chip) && device_match_fwnode(pwmchip_parent(chip), fwnode)) {
|
||||
mutex_unlock(&pwm_lock);
|
||||
if (pwmchip_parent(chip) && device_match_fwnode(pwmchip_parent(chip), fwnode))
|
||||
return chip;
|
||||
}
|
||||
|
||||
mutex_unlock(&pwm_lock);
|
||||
|
||||
return ERR_PTR(-EPROBE_DEFER);
|
||||
}
|
||||
@ -1532,11 +1512,11 @@ void pwm_put(struct pwm_device *pwm)
|
||||
|
||||
chip = pwm->chip;
|
||||
|
||||
mutex_lock(&pwm_lock);
|
||||
guard(mutex)(&pwm_lock);
|
||||
|
||||
if (!test_and_clear_bit(PWMF_REQUESTED, &pwm->flags)) {
|
||||
pr_warn("PWM device already freed\n");
|
||||
goto out;
|
||||
return;
|
||||
}
|
||||
|
||||
if (chip->ops->free)
|
||||
@ -1547,8 +1527,6 @@ void pwm_put(struct pwm_device *pwm)
|
||||
put_device(&chip->dev);
|
||||
|
||||
module_put(chip->owner);
|
||||
out:
|
||||
mutex_unlock(&pwm_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwm_put);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user