Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Uwe Kleine-König and committed by
Uwe Kleine-König
d2c8bdc7 9470e7d1

+6 -17
+6 -17
drivers/pwm/pwm-sti.c
··· 92 92 struct pwm_device *cur; 93 93 unsigned long configured; 94 94 unsigned int en_count; 95 - struct mutex sti_pwm_lock; /* To sync between enable/disable calls */ 96 95 void __iomem *mmio; 97 96 }; 98 97 ··· 243 244 { 244 245 struct sti_pwm_chip *pc = to_sti_pwmchip(chip); 245 246 struct device *dev = pc->dev; 246 - int ret = 0; 247 + int ret; 247 248 248 249 /* 249 250 * Since we have a common enable for all PWM devices, do not enable if 250 251 * already enabled. 251 252 */ 252 - mutex_lock(&pc->sti_pwm_lock); 253 253 254 254 if (!pc->en_count) { 255 255 ret = clk_enable(pc->pwm_clk); 256 256 if (ret) 257 - goto out; 257 + return ret; 258 258 259 259 ret = clk_enable(pc->cpt_clk); 260 260 if (ret) 261 - goto out; 261 + return ret; 262 262 263 263 ret = regmap_field_write(pc->pwm_out_en, 1); 264 264 if (ret) { 265 265 dev_err(dev, "failed to enable PWM device %u: %d\n", 266 266 pwm->hwpwm, ret); 267 - goto out; 267 + return ret; 268 268 } 269 269 } 270 270 271 271 pc->en_count++; 272 272 273 - out: 274 - mutex_unlock(&pc->sti_pwm_lock); 275 - return ret; 273 + return 0; 276 274 } 277 275 278 276 static void sti_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) 279 277 { 280 278 struct sti_pwm_chip *pc = to_sti_pwmchip(chip); 281 279 282 - mutex_lock(&pc->sti_pwm_lock); 283 - 284 - if (--pc->en_count) { 285 - mutex_unlock(&pc->sti_pwm_lock); 280 + if (--pc->en_count) 286 281 return; 287 - } 288 282 289 283 regmap_field_write(pc->pwm_out_en, 0); 290 284 291 285 clk_disable(pc->pwm_clk); 292 286 clk_disable(pc->cpt_clk); 293 - 294 - mutex_unlock(&pc->sti_pwm_lock); 295 287 } 296 288 297 289 static void sti_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm) ··· 584 594 585 595 pc->dev = dev; 586 596 pc->en_count = 0; 587 - mutex_init(&pc->sti_pwm_lock); 588 597 589 598 ret = sti_pwm_probe_regmap(pc); 590 599 if (ret)