mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
pwm: to solve the bug :
[10:33:29:984]<4>[ 127.237239] [<c07b5200>] (__mutex_lock_slowpath+0x1c0/0x22c) from [<c07b529c>] (mutex_lock+0x30/0x48) [10:33:30:000]<4>[ 127.237255] [<c07b529c>] (mutex_lock+0x30/0x48) from [<c057d32c>] (clk_prepare_lock+0x48/0xe0) [10:33:30:015]<4>[ 127.237269] [<c057d32c>] (clk_prepare_lock+0x48/0xe0) from [<c057eea4>] (clk_prepare+0xc/0x24) [10:33:30:031]<4>[ 127.237285] [<c057eea4>] (clk_prepare+0xc/0x24) from [<c0282df8>] (rk_pwm_config+0x20/0x74) [10:33:30:031]<4>[ 127.237300] [<c0282df8>] (rk_pwm_config+0x20/0x74) from [<c0281904>] (pwm_config+0x54/0x60) [10:33:30:031]<4>[ 127.237317] [<c0281904>] (pwm_config+0x54/0x60) from [<c02c0528>] (pwm_regulator_set_voltage+0xd0/0xf4)
This commit is contained in:
@@ -467,13 +467,13 @@ static int rk_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct rk_pwm_chip *pc = to_rk_pwm_chip(chip);
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(pc->clk);
|
||||
ret = clk_enable(pc->clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pc->config(chip, pwm, duty_ns, period_ns);
|
||||
|
||||
clk_disable_unprepare(pc->clk);
|
||||
|
||||
clk_disable(pc->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -482,7 +482,7 @@ static int rk_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
|
||||
struct rk_pwm_chip *pc = to_rk_pwm_chip(chip);
|
||||
int ret = 0;
|
||||
|
||||
ret = clk_prepare_enable(pc->clk);
|
||||
ret = clk_enable(pc->clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -496,7 +496,7 @@ static void rk_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
|
||||
|
||||
pc->set_enable(chip, pwm,false);
|
||||
|
||||
clk_disable_unprepare(pc->clk);
|
||||
clk_disable(pc->clk);
|
||||
|
||||
}
|
||||
|
||||
@@ -587,6 +587,7 @@ static int rk_pwm_probe(struct platform_device *pdev)
|
||||
pc->chip.base = -1;
|
||||
pc->chip.npwm = NUM_PWM;
|
||||
spin_lock_init(&pc->lock);
|
||||
clk_prepare(pc->clk);
|
||||
|
||||
/* Following enables PWM chip, channels would still be enabled individually through their control register */
|
||||
DBG("npwm = %d, of_pwm_ncells =%d \n", pc->chip.npwm,pc->chip.of_pwm_n_cells);
|
||||
|
||||
Reference in New Issue
Block a user