static void sh_cmt_clocksource_resume(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); pm_genpd_syscore_poweron(&p->pdev->dev); sh_cmt_start(p, FLAG_CLOCKSOURCE); }
static void sh_cmt_clocksource_suspend(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); sh_cmt_stop(p, FLAG_CLOCKSOURCE); pm_genpd_syscore_poweroff(&p->pdev->dev); }
static int sh_cmt_clocksource_enable(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); p->total_cycles = 0; return sh_cmt_start(p, FLAG_CLOCKSOURCE); }
static void sh_cmt_clocksource_disable(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); WARN_ON(!p->cs_enabled); sh_cmt_stop(p, FLAG_CLOCKSOURCE); p->cs_enabled = false; }
static int sh_cmt_clocksource_enable(struct clocksource *cs) { int ret; struct sh_cmt_priv *p = cs_to_sh_cmt(cs); p->total_cycles = 0; ret = sh_cmt_start(p, FLAG_CLOCKSOURCE); if (!ret) __clocksource_updatefreq_hz(cs, p->rate); return ret; }
static int sh_cmt_clocksource_enable(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); int ret; p->total_cycles = 0; ret = sh_cmt_start(p, FLAG_CLOCKSOURCE); if (ret) return ret; /* TODO: calculate good shift from rate and counter bit width */ cs->shift = 0; cs->mult = clocksource_hz2mult(p->rate, cs->shift); return 0; }
static int sh_cmt_clocksource_enable(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); int ret; p->total_cycles = 0; ret = sh_cmt_start(p, FLAG_CLOCKSOURCE); if (ret) return ret; cs->shift = 0; cs->mult = clocksource_hz2mult(p->rate, cs->shift); return 0; }
static cycle_t sh_cmt_clocksource_read(struct clocksource *cs) { struct sh_cmt_priv *p = cs_to_sh_cmt(cs); unsigned long flags, raw; unsigned long value; int has_wrapped; spin_lock_irqsave(&p->lock, flags); value = p->total_cycles; raw = sh_cmt_get_counter(p, &has_wrapped); if (unlikely(has_wrapped)) raw += p->match_value; spin_unlock_irqrestore(&p->lock, flags); return value + raw; }
static void sh_cmt_clocksource_disable(struct clocksource *cs) { sh_cmt_stop(cs_to_sh_cmt(cs), FLAG_CLOCKSOURCE); }
static void sh_cmt_clocksource_resume(struct clocksource *cs) { sh_cmt_start(cs_to_sh_cmt(cs), FLAG_CLOCKSOURCE); }