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

Configure Feed

Select the types of activity you want to include in your feed.

pwm: atmel: Don't use pwm consumer API

Lowlevel driver callbacks are not supposed to use the consumer API
functions. Currently this works, but with the upcoming locking changes
this probably results in dead locks.

Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Link: https://lore.kernel.org/r/20240129085627.2386470-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

+5 -8
+5 -8
drivers/pwm/pwm-atmel.c
··· 294 294 const struct pwm_state *state) 295 295 { 296 296 struct atmel_pwm_chip *atmel_pwm = to_atmel_pwm_chip(chip); 297 - struct pwm_state cstate; 298 297 unsigned long cprd, cdty; 299 298 u32 pres, val; 300 299 int ret; 301 300 302 - pwm_get_state(pwm, &cstate); 303 - 304 301 if (state->enabled) { 305 302 unsigned long clkrate = clk_get_rate(atmel_pwm->clk); 306 303 307 - if (cstate.enabled && 308 - cstate.polarity == state->polarity && 309 - cstate.period == state->period) { 304 + if (pwm->state.enabled && 305 + pwm->state.polarity == state->polarity && 306 + pwm->state.period == state->period) { 310 307 u32 cmr = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, PWM_CMR); 311 308 312 309 cprd = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, ··· 325 328 326 329 atmel_pwm_calculate_cdty(state, clkrate, cprd, pres, &cdty); 327 330 328 - if (cstate.enabled) { 331 + if (pwm->state.enabled) { 329 332 atmel_pwm_disable(chip, pwm, false); 330 333 } else { 331 334 ret = clk_enable(atmel_pwm->clk); ··· 345 348 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm, PWM_CMR, val); 346 349 atmel_pwm_set_cprd_cdty(chip, pwm, cprd, cdty); 347 350 atmel_pwm_writel(atmel_pwm, PWM_ENA, 1 << pwm->hwpwm); 348 - } else if (cstate.enabled) { 351 + } else if (pwm->state.enabled) { 349 352 atmel_pwm_disable(chip, pwm, true); 350 353 } 351 354