diff --git a/drivers/pwm/ecap.c b/drivers/pwm/ecap.c
index 3dd6f6da62058308c3163d1557d24a63a190944b..cc2ed19fbee4531e0f2f8074dc876d8a9e00a769 100644 (file)
--- a/drivers/pwm/ecap.c
+++ b/drivers/pwm/ecap.c
static int ecap_frequency_transition_cb(struct pwm_device *p)
{
struct ecap_pwm *ep = to_ecap_pwm(p);
- unsigned long duty_ns;
+ unsigned long duty_ns, rate;
+
+ rate = clk_get_rate(ep->clk);
+ if (rate == p->tick_hz)
+ return 0;
+ p->tick_hz = rate;
- p->tick_hz = clk_get_rate(ep->clk);
duty_ns = p->duty_ns;
if (pwm_is_running(p)) {
pwm_stop(p);