static void sh_tmu_clock_event_mode(enum clock_event_mode mode, struct clock_event_device *ced) { struct sh_tmu_priv *p = ced_to_sh_tmu(ced); int disabled = 0; /* deal with old setting first */ switch (ced->mode) { case CLOCK_EVT_MODE_PERIODIC: case CLOCK_EVT_MODE_ONESHOT: sh_tmu_disable(p); disabled = 1; break; default: break; } switch (mode) { case CLOCK_EVT_MODE_PERIODIC: dev_info(&p->pdev->dev, "used for periodic clock events\n"); sh_tmu_clock_event_start(p, 1); break; case CLOCK_EVT_MODE_ONESHOT: dev_info(&p->pdev->dev, "used for oneshot clock events\n"); sh_tmu_clock_event_start(p, 0); break; case CLOCK_EVT_MODE_UNUSED: if (!disabled) sh_tmu_disable(p); break; case CLOCK_EVT_MODE_SHUTDOWN: default: break; } }
void sh_timer_unregister(void *priv) { struct sh_tmu_priv *p = priv; sh_tmu_disable(p); remove_irq(p->irqaction.irq, &p->irqaction); kfree(p->tm.fnc); p->tm.fnc = NULL; }
static void sh_tmu_clocksource_disable(struct clocksource *cs) { struct sh_tmu_channel *ch = cs_to_sh_tmu(cs); if (WARN_ON(!ch->cs_enabled)) return; sh_tmu_disable(ch); ch->cs_enabled = false; }
static void sh_tmu_clocksource_disable(struct clocksource *cs) { struct sh_tmu_priv *p = cs_to_sh_tmu(cs); if (WARN_ON(!p->cs_enabled)) return; sh_tmu_disable(p); p->cs_enabled = false; }
static void sh_tmu_clocksource_disable(struct clocksource *cs) { sh_tmu_disable(cs_to_sh_tmu(cs)); }