]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pwm: Use guards for pwm_lookup_lock instead of explicity mutex_lock + mutex_unlock
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Thu, 27 Jun 2024 20:31:21 +0000 (22:31 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Wed, 10 Jul 2024 15:53:52 +0000 (17:53 +0200)
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>
drivers/pwm/core.c

index 3df8397d7b2b3c9af784b266b4cd412547452926..cf6d91f1a9e629d802243f4bce365194e03257a0 100644 (file)
@@ -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);