]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pwm: sti: Drop driver local locking
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Tue, 24 Jun 2025 18:15:42 +0000 (20:15 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Mon, 7 Jul 2025 06:39:36 +0000 (08:39 +0200)
The pwm core already serializes calls to .apply(), so the driver local
mutex adds no protection and can be dropped.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/7ad150e40b45d6cb16fee633dcd6390a49a327a1.1750788649.git.u.kleine-koenig@baylibre.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
drivers/pwm/pwm-sti.c

index 396b52672ce0b8fd0d43bf63eb83ae71b2b66763..3b702b8f0c7f0ed625fb0ab742949911a0942944 100644 (file)
@@ -92,7 +92,6 @@ struct sti_pwm_chip {
        struct pwm_device *cur;
        unsigned long configured;
        unsigned int en_count;
-       struct mutex sti_pwm_lock; /* To sync between enable/disable calls */
        void __iomem *mmio;
 };
 
@@ -244,55 +243,46 @@ static int sti_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
 {
        struct sti_pwm_chip *pc = to_sti_pwmchip(chip);
        struct device *dev = pc->dev;
-       int ret = 0;
+       int ret;
 
        /*
         * Since we have a common enable for all PWM devices, do not enable if
         * already enabled.
         */
-       mutex_lock(&pc->sti_pwm_lock);
 
        if (!pc->en_count) {
                ret = clk_enable(pc->pwm_clk);
                if (ret)
-                       goto out;
+                       return ret;
 
                ret = clk_enable(pc->cpt_clk);
                if (ret)
-                       goto out;
+                       return ret;
 
                ret = regmap_field_write(pc->pwm_out_en, 1);
                if (ret) {
                        dev_err(dev, "failed to enable PWM device %u: %d\n",
                                pwm->hwpwm, ret);
-                       goto out;
+                       return ret;
                }
        }
 
        pc->en_count++;
 
-out:
-       mutex_unlock(&pc->sti_pwm_lock);
-       return ret;
+       return 0;
 }
 
 static void sti_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
 {
        struct sti_pwm_chip *pc = to_sti_pwmchip(chip);
 
-       mutex_lock(&pc->sti_pwm_lock);
-
-       if (--pc->en_count) {
-               mutex_unlock(&pc->sti_pwm_lock);
+       if (--pc->en_count)
                return;
-       }
 
        regmap_field_write(pc->pwm_out_en, 0);
 
        clk_disable(pc->pwm_clk);
        clk_disable(pc->cpt_clk);
-
-       mutex_unlock(&pc->sti_pwm_lock);
 }
 
 static void sti_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
@@ -594,7 +584,6 @@ static int sti_pwm_probe(struct platform_device *pdev)
 
        pc->dev = dev;
        pc->en_count = 0;
-       mutex_init(&pc->sti_pwm_lock);
 
        ret = sti_pwm_probe_regmap(pc);
        if (ret)