Lines Matching refs:clkdm

380 static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm)
385 if (!clkdm->prcm_partition)
388 for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) {
389 if (!cd->clkdm)
392 mask |= 1 << cd->clkdm->dep_bit;
396 omap4_cminst_clear_inst_reg_bits(mask, clkdm->prcm_partition,
397 clkdm->cm_inst, clkdm->clkdm_offs +
402 static int omap4_clkdm_sleep(struct clockdomain *clkdm)
404 if (clkdm->flags & CLKDM_CAN_HWSUP)
405 omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition,
406 clkdm->cm_inst,
407 clkdm->clkdm_offs);
408 else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP)
409 omap4_cminst_clkdm_force_sleep(clkdm->prcm_partition,
410 clkdm->cm_inst,
411 clkdm->clkdm_offs);
418 static int omap4_clkdm_wakeup(struct clockdomain *clkdm)
420 omap4_cminst_clkdm_force_wakeup(clkdm->prcm_partition,
421 clkdm->cm_inst, clkdm->clkdm_offs);
425 static void omap4_clkdm_allow_idle(struct clockdomain *clkdm)
427 omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition,
428 clkdm->cm_inst, clkdm->clkdm_offs);
431 static void omap4_clkdm_deny_idle(struct clockdomain *clkdm)
433 if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)
434 omap4_clkdm_wakeup(clkdm);
436 omap4_cminst_clkdm_disable_hwsup(clkdm->prcm_partition,
437 clkdm->cm_inst,
438 clkdm->clkdm_offs);
441 static int omap4_clkdm_clk_enable(struct clockdomain *clkdm)
443 if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)
444 return omap4_clkdm_wakeup(clkdm);
449 static int omap4_clkdm_clk_disable(struct clockdomain *clkdm)
453 if (!clkdm->prcm_partition)
461 if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING &&
462 !(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) {
463 omap4_clkdm_allow_idle(clkdm);
467 hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition,
468 clkdm->cm_inst, clkdm->clkdm_offs);
470 if (!hwsup && (clkdm->flags & CLKDM_CAN_FORCE_SLEEP))
471 omap4_clkdm_sleep(clkdm);
483 * @clkdm: The clockdomain pointer whose context needs to be saved
487 static int omap4_clkdm_save_context(struct clockdomain *clkdm)
489 clkdm->context = omap4_cminst_read_inst_reg(clkdm->prcm_partition,
490 clkdm->cm_inst,
491 clkdm->clkdm_offs +
493 clkdm->context &= OMAP4430_MODULEMODE_MASK;
499 * @clkdm: The clockdomain pointer whose context needs to be restored
503 static int omap4_clkdm_restore_context(struct clockdomain *clkdm)
505 switch (clkdm->context) {
507 omap4_clkdm_deny_idle(clkdm);
510 omap4_clkdm_sleep(clkdm);
513 omap4_clkdm_wakeup(clkdm);
516 omap4_clkdm_allow_idle(clkdm);