From: Uwe Kleine-König Date: Thu, 27 Jun 2024 20:31:21 +0000 (+0200) Subject: pwm: Use guards for pwm_lookup_lock instead of explicity mutex_lock + mutex_unlock X-Git-Tag: v6.11-rc1~211^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0007fa1292a24ef23d662ec7afe178088ab7766d;p=thirdparty%2Flinux.git pwm: Use guards for pwm_lookup_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 Link: https://lore.kernel.org/r/28807cb5d9dbce66860f74829c0f57cd9c01373e.1719520143.git.u.kleine-koenig@baylibre.com Signed-off-by: Uwe Kleine-König --- diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 3df8397d7b2b3..cf6d91f1a9e62 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -1343,14 +1343,12 @@ static LIST_HEAD(pwm_lookup_list); */ void pwm_add_table(struct pwm_lookup *table, size_t num) { - mutex_lock(&pwm_lookup_lock); + guard(mutex)(&pwm_lookup_lock); while (num--) { list_add_tail(&table->list, &pwm_lookup_list); table++; } - - mutex_unlock(&pwm_lookup_lock); } /** @@ -1360,14 +1358,12 @@ void pwm_add_table(struct pwm_lookup *table, size_t num) */ void pwm_remove_table(struct pwm_lookup *table, size_t num) { - mutex_lock(&pwm_lookup_lock); + guard(mutex)(&pwm_lookup_lock); while (num--) { list_del(&table->list); table++; } - - mutex_unlock(&pwm_lookup_lock); } /** @@ -1428,36 +1424,33 @@ struct pwm_device *pwm_get(struct device *dev, const char *con_id) * Then we take the most specific entry - with the following order * of precedence: dev+con > dev only > con only. */ - mutex_lock(&pwm_lookup_lock); + scoped_guard(mutex, &pwm_lookup_lock) + list_for_each_entry(p, &pwm_lookup_list, list) { + match = 0; - list_for_each_entry(p, &pwm_lookup_list, list) { - match = 0; + if (p->dev_id) { + if (!dev_id || strcmp(p->dev_id, dev_id)) + continue; - if (p->dev_id) { - if (!dev_id || strcmp(p->dev_id, dev_id)) - continue; + match += 2; + } - match += 2; - } + if (p->con_id) { + if (!con_id || strcmp(p->con_id, con_id)) + continue; - if (p->con_id) { - if (!con_id || strcmp(p->con_id, con_id)) - continue; + match += 1; + } - match += 1; - } + if (match > best) { + chosen = p; - if (match > best) { - chosen = p; - - if (match != 3) - best = match; - else - break; + if (match != 3) + best = match; + else + break; + } } - } - - mutex_unlock(&pwm_lookup_lock); if (!chosen) return ERR_PTR(-ENODEV);