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 <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/28807cb5d9dbce66860f74829c0f57cd9c01373e.1719520143.git.u.kleine-koenig@baylibre.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
This commit is contained in:
Uwe Kleine-König 2024-06-27 22:31:21 +02:00 committed by Uwe Kleine-König
parent 4c50c71c69
commit 0007fa1292

View File

@ -1343,14 +1343,12 @@ static LIST_HEAD(pwm_lookup_list);
*/ */
void pwm_add_table(struct pwm_lookup *table, size_t num) void pwm_add_table(struct pwm_lookup *table, size_t num)
{ {
mutex_lock(&pwm_lookup_lock); guard(mutex)(&pwm_lookup_lock);
while (num--) { while (num--) {
list_add_tail(&table->list, &pwm_lookup_list); list_add_tail(&table->list, &pwm_lookup_list);
table++; 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) void pwm_remove_table(struct pwm_lookup *table, size_t num)
{ {
mutex_lock(&pwm_lookup_lock); guard(mutex)(&pwm_lookup_lock);
while (num--) { while (num--) {
list_del(&table->list); list_del(&table->list);
table++; table++;
} }
mutex_unlock(&pwm_lookup_lock);
} }
/** /**
@ -1428,37 +1424,34 @@ struct pwm_device *pwm_get(struct device *dev, const char *con_id)
* Then we take the most specific entry - with the following order * Then we take the most specific entry - with the following order
* of precedence: dev+con > dev only > con only. * 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) { if (p->dev_id) {
match = 0; if (!dev_id || strcmp(p->dev_id, dev_id))
continue;
if (p->dev_id) { match += 2;
if (!dev_id || strcmp(p->dev_id, dev_id)) }
continue;
match += 2; if (p->con_id) {
if (!con_id || strcmp(p->con_id, con_id))
continue;
match += 1;
}
if (match > best) {
chosen = p;
if (match != 3)
best = match;
else
break;
}
} }
if (p->con_id) {
if (!con_id || strcmp(p->con_id, con_id))
continue;
match += 1;
}
if (match > best) {
chosen = p;
if (match != 3)
best = match;
else
break;
}
}
mutex_unlock(&pwm_lookup_lock);
if (!chosen) if (!chosen)
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);