pwm: sti: Drop driver local locking
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>pull/1309/head
parent
9470e7d11f
commit
d2c8bdc72f
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue