static int try_set_cmode(int new_cmode) { if (new_cmode > 15) return -EINVAL; if (!(clock_cmodes_permitted & (1<<new_cmode))) return -EINVAL; /* tell all the drivers we're suspending */ pm_send_all(PM_SUSPEND, (void *)3); /* now change cmode */ local_irq_disable(); frv_dma_pause_all(); frv_change_cmode(new_cmode); determine_clocks(0); time_divisor_init(); #ifdef DEBUG determine_clocks(1); #endif frv_dma_resume_all(); local_irq_enable(); /* tell all the drivers we're resuming */ pm_send_all(PM_RESUME, (void *)0); return 0; }
static int try_set_cmode(int new_cmode) { if (new_cmode > 15) return -EINVAL; if (!(clock_cmodes_permitted & (1<<new_cmode))) return -EINVAL; /* now change cmode */ local_irq_disable(); frv_dma_pause_all(); frv_change_cmode(new_cmode); determine_clocks(0); time_divisor_init(); #ifdef DEBUG determine_clocks(1); #endif frv_dma_resume_all(); local_irq_enable(); return 0; }