2008-03-18 17:24:28 +08:00
|
|
|
/*
|
2009-12-09 07:18:47 +08:00
|
|
|
* OMAP3 clock function prototypes and macros
|
2008-03-18 17:24:28 +08:00
|
|
|
*
|
2009-12-09 07:18:47 +08:00
|
|
|
* Copyright (C) 2007-2009 Texas Instruments, Inc.
|
|
|
|
* Copyright (C) 2007-2009 Nokia Corporation
|
2008-03-18 17:24:28 +08:00
|
|
|
*/
|
|
|
|
|
2009-12-09 07:18:47 +08:00
|
|
|
#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H
|
|
|
|
#define __ARCH_ARM_MACH_OMAP2_CLOCK_34XX_H
|
2008-03-18 17:24:28 +08:00
|
|
|
|
2009-12-09 07:18:47 +08:00
|
|
|
unsigned long omap3_dpll_recalc(struct clk *clk);
|
|
|
|
unsigned long omap3_clkoutx2_recalc(struct clk *clk);
|
|
|
|
void omap3_dpll_allow_idle(struct clk *clk);
|
|
|
|
void omap3_dpll_deny_idle(struct clk *clk);
|
|
|
|
u32 omap3_dpll_autoidle_read(struct clk *clk);
|
|
|
|
int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate);
|
|
|
|
int omap3_dpll4_set_rate(struct clk *clk, unsigned long rate);
|
|
|
|
int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
|
|
|
|
void omap3_clk_lock_dpll5(void);
|
[ARM] omap: add support for bypassing DPLLs
This roughly corresponds with OMAP commits: 7d06c48, 3241b19,
88b5d9b, 18a5500, 9c909ac, 5c6497b, 8b1f0bd, 2ac1da8.
For both OMAP2 and OMAP3, we note the reference and bypass clocks in
the DPLL data structure. Whenever we modify the DPLL rate, we first
ensure that both the reference and bypass clocks are enabled. Then,
we decide whether to use the reference and DPLL, or the bypass clock
if the desired rate is identical to the bypass rate, and program the
DPLL appropriately. Finally, we update the clock's parent, and then
disable the unused clocks.
This keeps the parents correctly balanced, and more importantly ensures
that the bypass clock is running whenever we reprogram the DPLL. This
is especially important because the procedure for reprogramming the DPLL
involves switching to the bypass clock.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-02-19 21:29:22 +08:00
|
|
|
|
2008-07-03 17:24:45 +08:00
|
|
|
/* CM_CLKEN_PLL*.EN* bit values - not all are available for every DPLL */
|
|
|
|
#define DPLL_LOW_POWER_STOP 0x1
|
|
|
|
#define DPLL_LOW_POWER_BYPASS 0x5
|
|
|
|
#define DPLL_LOCKED 0x7
|
|
|
|
|
2009-12-09 07:18:47 +08:00
|
|
|
extern struct clk *sdrc_ick_p;
|
|
|
|
extern struct clk *arm_fck_p;
|
2008-03-18 17:24:28 +08:00
|
|
|
|
2009-12-09 07:18:47 +08:00
|
|
|
/* OMAP34xx-specific clkops */
|
|
|
|
extern const struct clkops clkops_omap3430es2_ssi_wait;
|
|
|
|
extern const struct clkops clkops_omap3430es2_hsotgusb_wait;
|
|
|
|
extern const struct clkops clkops_omap3430es2_dss_usbhost_wait;
|
|
|
|
extern const struct clkops clkops_noncore_dpll_ops;
|
2008-03-18 17:24:28 +08:00
|
|
|
|
|
|
|
#endif
|