Lines Matching refs:clk
34 struct clk *api_ck_p, *ck_dpll1_p, *ck_ref_p;
44 unsigned long omap1_uart_recalc(struct clk *clk) in omap1_uart_recalc() argument
46 unsigned int val = __raw_readl(clk->enable_reg); in omap1_uart_recalc()
47 return val & clk->enable_bit ? 48000000 : 12000000; in omap1_uart_recalc()
50 unsigned long omap1_sossi_recalc(struct clk *clk) in omap1_sossi_recalc() argument
57 return clk->parent->rate / div; in omap1_sossi_recalc()
60 static void omap1_clk_allow_idle(struct clk *clk) in omap1_clk_allow_idle() argument
62 struct arm_idlect1_clk * iclk = (struct arm_idlect1_clk *)clk; in omap1_clk_allow_idle()
64 if (!(clk->flags & CLOCK_IDLE_CONTROL)) in omap1_clk_allow_idle()
71 static void omap1_clk_deny_idle(struct clk *clk) in omap1_clk_deny_idle() argument
73 struct arm_idlect1_clk * iclk = (struct arm_idlect1_clk *)clk; in omap1_clk_deny_idle()
75 if (!(clk->flags & CLOCK_IDLE_CONTROL)) in omap1_clk_deny_idle()
135 static int calc_dsor_exp(struct clk *clk, unsigned long rate) in calc_dsor_exp() argument
149 struct clk * parent; in calc_dsor_exp()
152 parent = clk->parent; in calc_dsor_exp()
167 unsigned long omap1_ckctl_recalc(struct clk *clk) in omap1_ckctl_recalc() argument
170 int dsor = 1 << (3 & (omap_readw(ARM_CKCTL) >> clk->rate_offset)); in omap1_ckctl_recalc()
172 return clk->parent->rate / dsor; in omap1_ckctl_recalc()
175 unsigned long omap1_ckctl_recalc_dsp_domain(struct clk *clk) in omap1_ckctl_recalc_dsp_domain() argument
187 dsor = 1 << (3 & (__raw_readw(DSP_CKCTL) >> clk->rate_offset)); in omap1_ckctl_recalc_dsp_domain()
190 return clk->parent->rate / dsor; in omap1_ckctl_recalc_dsp_domain()
194 int omap1_select_table_rate(struct clk *clk, unsigned long rate) in omap1_select_table_rate() argument
229 int omap1_clk_set_rate_dsp_domain(struct clk *clk, unsigned long rate) in omap1_clk_set_rate_dsp_domain() argument
234 dsor_exp = calc_dsor_exp(clk, rate); in omap1_clk_set_rate_dsp_domain()
241 regval &= ~(3 << clk->rate_offset); in omap1_clk_set_rate_dsp_domain()
242 regval |= dsor_exp << clk->rate_offset; in omap1_clk_set_rate_dsp_domain()
244 clk->rate = clk->parent->rate / (1 << dsor_exp); in omap1_clk_set_rate_dsp_domain()
249 long omap1_clk_round_rate_ckctl_arm(struct clk *clk, unsigned long rate) in omap1_clk_round_rate_ckctl_arm() argument
251 int dsor_exp = calc_dsor_exp(clk, rate); in omap1_clk_round_rate_ckctl_arm()
256 return clk->parent->rate / (1 << dsor_exp); in omap1_clk_round_rate_ckctl_arm()
259 int omap1_clk_set_rate_ckctl_arm(struct clk *clk, unsigned long rate) in omap1_clk_set_rate_ckctl_arm() argument
264 dsor_exp = calc_dsor_exp(clk, rate); in omap1_clk_set_rate_ckctl_arm()
271 regval &= ~(3 << clk->rate_offset); in omap1_clk_set_rate_ckctl_arm()
272 regval |= dsor_exp << clk->rate_offset; in omap1_clk_set_rate_ckctl_arm()
275 clk->rate = clk->parent->rate / (1 << dsor_exp); in omap1_clk_set_rate_ckctl_arm()
279 long omap1_round_to_table_rate(struct clk *clk, unsigned long rate) in omap1_round_to_table_rate() argument
330 int omap1_set_uart_rate(struct clk *clk, unsigned long rate) in omap1_set_uart_rate() argument
334 val = __raw_readl(clk->enable_reg); in omap1_set_uart_rate()
336 val &= ~(1 << clk->enable_bit); in omap1_set_uart_rate()
338 val |= (1 << clk->enable_bit); in omap1_set_uart_rate()
341 __raw_writel(val, clk->enable_reg); in omap1_set_uart_rate()
342 clk->rate = rate; in omap1_set_uart_rate()
348 int omap1_set_ext_clk_rate(struct clk *clk, unsigned long rate) in omap1_set_ext_clk_rate() argument
354 clk->rate = 96000000 / dsor; in omap1_set_ext_clk_rate()
360 ratio_bits |= __raw_readw(clk->enable_reg) & ~0xfd; in omap1_set_ext_clk_rate()
361 __raw_writew(ratio_bits, clk->enable_reg); in omap1_set_ext_clk_rate()
366 int omap1_set_sossi_rate(struct clk *clk, unsigned long rate) in omap1_set_sossi_rate() argument
372 p_rate = clk->parent->rate; in omap1_set_sossi_rate()
384 clk->rate = p_rate / (div + 1); in omap1_set_sossi_rate()
389 long omap1_round_ext_clk_rate(struct clk *clk, unsigned long rate) in omap1_round_ext_clk_rate() argument
394 void omap1_init_ext_clk(struct clk *clk) in omap1_init_ext_clk() argument
400 ratio_bits = __raw_readw(clk->enable_reg) & ~1; in omap1_init_ext_clk()
401 __raw_writew(ratio_bits, clk->enable_reg); in omap1_init_ext_clk()
409 clk-> rate = 96000000 / dsor; in omap1_init_ext_clk()
412 int omap1_clk_enable(struct clk *clk) in omap1_clk_enable() argument
416 if (clk->usecount++ == 0) { in omap1_clk_enable()
417 if (clk->parent) { in omap1_clk_enable()
418 ret = omap1_clk_enable(clk->parent); in omap1_clk_enable()
422 if (clk->flags & CLOCK_NO_IDLE_PARENT) in omap1_clk_enable()
423 omap1_clk_deny_idle(clk->parent); in omap1_clk_enable()
426 ret = clk->ops->enable(clk); in omap1_clk_enable()
428 if (clk->parent) in omap1_clk_enable()
429 omap1_clk_disable(clk->parent); in omap1_clk_enable()
436 clk->usecount--; in omap1_clk_enable()
440 void omap1_clk_disable(struct clk *clk) in omap1_clk_disable() argument
442 if (clk->usecount > 0 && !(--clk->usecount)) { in omap1_clk_disable()
443 clk->ops->disable(clk); in omap1_clk_disable()
444 if (likely(clk->parent)) { in omap1_clk_disable()
445 omap1_clk_disable(clk->parent); in omap1_clk_disable()
446 if (clk->flags & CLOCK_NO_IDLE_PARENT) in omap1_clk_disable()
447 omap1_clk_allow_idle(clk->parent); in omap1_clk_disable()
452 static int omap1_clk_enable_generic(struct clk *clk) in omap1_clk_enable_generic() argument
457 if (unlikely(clk->enable_reg == NULL)) { in omap1_clk_enable_generic()
459 clk->name); in omap1_clk_enable_generic()
463 if (clk->flags & ENABLE_REG_32BIT) { in omap1_clk_enable_generic()
464 regval32 = __raw_readl(clk->enable_reg); in omap1_clk_enable_generic()
465 regval32 |= (1 << clk->enable_bit); in omap1_clk_enable_generic()
466 __raw_writel(regval32, clk->enable_reg); in omap1_clk_enable_generic()
468 regval16 = __raw_readw(clk->enable_reg); in omap1_clk_enable_generic()
469 regval16 |= (1 << clk->enable_bit); in omap1_clk_enable_generic()
470 __raw_writew(regval16, clk->enable_reg); in omap1_clk_enable_generic()
476 static void omap1_clk_disable_generic(struct clk *clk) in omap1_clk_disable_generic() argument
481 if (clk->enable_reg == NULL) in omap1_clk_disable_generic()
484 if (clk->flags & ENABLE_REG_32BIT) { in omap1_clk_disable_generic()
485 regval32 = __raw_readl(clk->enable_reg); in omap1_clk_disable_generic()
486 regval32 &= ~(1 << clk->enable_bit); in omap1_clk_disable_generic()
487 __raw_writel(regval32, clk->enable_reg); in omap1_clk_disable_generic()
489 regval16 = __raw_readw(clk->enable_reg); in omap1_clk_disable_generic()
490 regval16 &= ~(1 << clk->enable_bit); in omap1_clk_disable_generic()
491 __raw_writew(regval16, clk->enable_reg); in omap1_clk_disable_generic()
500 static int omap1_clk_enable_dsp_domain(struct clk *clk) in omap1_clk_enable_dsp_domain() argument
506 retval = omap1_clk_enable_generic(clk); in omap1_clk_enable_dsp_domain()
513 static void omap1_clk_disable_dsp_domain(struct clk *clk) in omap1_clk_disable_dsp_domain() argument
516 omap1_clk_disable_generic(clk); in omap1_clk_disable_dsp_domain()
527 static int omap1_clk_enable_uart_functional_16xx(struct clk *clk) in omap1_clk_enable_uart_functional_16xx() argument
532 ret = omap1_clk_enable_generic(clk); in omap1_clk_enable_uart_functional_16xx()
535 uclk = (struct uart_clk *)clk; in omap1_clk_enable_uart_functional_16xx()
544 static void omap1_clk_disable_uart_functional_16xx(struct clk *clk) in omap1_clk_disable_uart_functional_16xx() argument
549 uclk = (struct uart_clk *)clk; in omap1_clk_disable_uart_functional_16xx()
552 omap1_clk_disable_generic(clk); in omap1_clk_disable_uart_functional_16xx()
561 long omap1_clk_round_rate(struct clk *clk, unsigned long rate) in omap1_clk_round_rate() argument
563 if (clk->round_rate != NULL) in omap1_clk_round_rate()
564 return clk->round_rate(clk, rate); in omap1_clk_round_rate()
566 return clk->rate; in omap1_clk_round_rate()
569 int omap1_clk_set_rate(struct clk *clk, unsigned long rate) in omap1_clk_set_rate() argument
573 if (clk->set_rate) in omap1_clk_set_rate()
574 ret = clk->set_rate(clk, rate); in omap1_clk_set_rate()
584 void omap1_clk_disable_unused(struct clk *clk) in omap1_clk_disable_unused() argument
590 if (clk->enable_reg == DSP_IDLECT2) { in omap1_clk_disable_unused()
592 clk->name); in omap1_clk_disable_unused()
597 if (clk->flags & ENABLE_REG_32BIT) in omap1_clk_disable_unused()
598 regval32 = __raw_readl(clk->enable_reg); in omap1_clk_disable_unused()
600 regval32 = __raw_readw(clk->enable_reg); in omap1_clk_disable_unused()
602 if ((regval32 & (1 << clk->enable_bit)) == 0) in omap1_clk_disable_unused()
605 printk(KERN_INFO "Disabling unused clock \"%s\"... ", clk->name); in omap1_clk_disable_unused()
606 clk->ops->disable(clk); in omap1_clk_disable_unused()
613 int clk_enable(struct clk *clk) in clk_enable() argument
618 if (clk == NULL || IS_ERR(clk)) in clk_enable()
622 ret = omap1_clk_enable(clk); in clk_enable()
629 void clk_disable(struct clk *clk) in clk_disable() argument
633 if (clk == NULL || IS_ERR(clk)) in clk_disable()
637 if (clk->usecount == 0) { in clk_disable()
639 clk->name); in clk_disable()
644 omap1_clk_disable(clk); in clk_disable()
651 unsigned long clk_get_rate(struct clk *clk) in clk_get_rate() argument
656 if (clk == NULL || IS_ERR(clk)) in clk_get_rate()
660 ret = clk->rate; in clk_get_rate()
671 long clk_round_rate(struct clk *clk, unsigned long rate) in clk_round_rate() argument
676 if (clk == NULL || IS_ERR(clk)) in clk_round_rate()
680 ret = omap1_clk_round_rate(clk, rate); in clk_round_rate()
687 int clk_set_rate(struct clk *clk, unsigned long rate) in clk_set_rate() argument
692 if (clk == NULL || IS_ERR(clk)) in clk_set_rate()
696 ret = omap1_clk_set_rate(clk, rate); in clk_set_rate()
698 propagate_rate(clk); in clk_set_rate()
705 int clk_set_parent(struct clk *clk, struct clk *parent) in clk_set_parent() argument
713 struct clk *clk_get_parent(struct clk *clk) in clk_get_parent() argument
715 return clk->parent; in clk_get_parent()
744 unsigned long followparent_recalc(struct clk *clk) in followparent_recalc() argument
746 return clk->parent->rate; in followparent_recalc()
753 unsigned long omap_fixed_divisor_recalc(struct clk *clk) in omap_fixed_divisor_recalc() argument
755 WARN_ON(!clk->fixed_div); in omap_fixed_divisor_recalc()
757 return clk->parent->rate / clk->fixed_div; in omap_fixed_divisor_recalc()
760 void clk_reparent(struct clk *child, struct clk *parent) in clk_reparent()
772 void propagate_rate(struct clk *tclk) in propagate_rate()
774 struct clk *clkp; in propagate_rate()
794 struct clk *clkp; in recalculate_root_clocks()
810 void clk_preinit(struct clk *clk) in clk_preinit() argument
812 INIT_LIST_HEAD(&clk->children); in clk_preinit()
815 int clk_register(struct clk *clk) in clk_register() argument
817 if (clk == NULL || IS_ERR(clk)) in clk_register()
823 if (clk->node.next || clk->node.prev) in clk_register()
827 if (clk->parent) in clk_register()
828 list_add(&clk->sibling, &clk->parent->children); in clk_register()
830 list_add(&clk->sibling, &root_clks); in clk_register()
832 list_add(&clk->node, &clocks); in clk_register()
833 if (clk->init) in clk_register()
834 clk->init(clk); in clk_register()
841 void clk_unregister(struct clk *clk) in clk_unregister() argument
843 if (clk == NULL || IS_ERR(clk)) in clk_unregister()
847 list_del(&clk->sibling); in clk_unregister()
848 list_del(&clk->node); in clk_unregister()
855 struct clk *clkp; in clk_enable_init_clocks()
870 struct clk *omap_clk_get_by_name(const char *name) in omap_clk_get_by_name()
872 struct clk *c; in omap_clk_get_by_name()
873 struct clk *ret = NULL; in omap_clk_get_by_name()
891 struct clk *c; in omap_clk_enable_autoidle_all()
907 struct clk *c; in omap_clk_disable_autoidle_all()
924 static int clkll_enable_null(struct clk *clk) in clkll_enable_null() argument
929 static void clkll_disable_null(struct clk *clk) in clkll_disable_null() argument
943 struct clk dummy_ck = {
958 struct clk *ck; in clk_disable_unused()
993 struct clk *c; in clk_dbg_show_summary()
994 struct clk *pa; in clk_dbg_show_summary()
1023 static int clk_debugfs_register_one(struct clk *c) in clk_debugfs_register_one()
1027 struct clk *pa = c->parent; in clk_debugfs_register_one()
1056 static int clk_debugfs_register(struct clk *c) in clk_debugfs_register()
1059 struct clk *pa = c->parent; in clk_debugfs_register()
1077 struct clk *c; in clk_debugfs_init()