static void init_mfgpt_timer(enum clock_event_mode mode, struct clock_event_device *evt) { spin_lock(&mfgpt_lock); switch (mode) { case CLOCK_EVT_MODE_PERIODIC: outw(COMPARE, MFGPT0_CMP2); /* set comparator2 */ outw(0, MFGPT0_CNT); /* set counter to 0 */ enable_mfgpt0_counter(); break; case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_UNUSED: if (evt->mode == CLOCK_EVT_MODE_PERIODIC || evt->mode == CLOCK_EVT_MODE_ONESHOT) disable_mfgpt0_counter(); break; case CLOCK_EVT_MODE_ONESHOT: /* The oneshot mode have very high deviation, Not use it! */ break; case CLOCK_EVT_MODE_RESUME: /* Nothing to do here */ break; } spin_unlock(&mfgpt_lock); }
static void init_mfgpt_timer(enum clock_event_mode mode, struct clock_event_device *evt) { spin_lock(&mfgpt_lock); switch (mode) { case CLOCK_EVT_MODE_PERIODIC: outw(COMPARE, MFGPT0_CMP2); outw(0, MFGPT0_CNT); enable_mfgpt0_counter(); break; case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_UNUSED: if (evt->mode == CLOCK_EVT_MODE_PERIODIC || evt->mode == CLOCK_EVT_MODE_ONESHOT) disable_mfgpt0_counter(); break; case CLOCK_EVT_MODE_ONESHOT: break; case CLOCK_EVT_MODE_RESUME: break; } spin_unlock(&mfgpt_lock); }
void __weak mach_resume(void) { enable_mfgpt0_counter(); }