mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 17:51:43 +00:00
81b34fbecb
In preparation for multi-OMAP2 kernels, split mach-omap2/clock2xxx_data.c into mach-omap2/clock2420_data.c and mach-omap2/clock2430_data.c. 2430 uses a different device space physical memory layout than past or future OMAPs, and we use a different virtual memory layout as well, which causes trouble for architecture-level code/data that tries to support both. We tried using offsets from the virtual base last year, but those patches never made it upstream; so after some discussion with Tony about the best all-around approach, we'll just grit our teeth and duplicate the structures. The maintenance advantages of a single kernel config that can compile and boot on OMAP2, 3, and 4 platforms are simply too compelling. This approach does have some nice benefits beyond multi-OMAP 2 kernel support. The runtime size of OMAP2420-specific and OMAP2430-specific kernels is smaller, since unused clocks for the other OMAP2 chip will no longer be compiled in. (At some point we will mark the clock data __initdata and allocate it during registration, which will eliminate the runtime memory advantage.) It also makes the clock trees slightly easier to read, since 2420-specific and 2430-specific clocks are no longer mixed together. This patch also splits 2430-specific clock code into its own file, mach-omap2/clock2430.c, which is only compiled in for 2430 builds - mostly for organizational clarity. While here, fix a bug in the OMAP2430 clock tree: "emul_ck" was incorrectly marked as being 2420-only, when actually it is present on both OMAP2420 and OMAP2430. Thanks to Tony for some good discussions about how to approach this problem. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Tony Lindgren <tony@atomide.com> Cc: Richard Woodruff <r-woodruff2@ti.com>
45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
/*
|
|
* OMAP2 clock function prototypes and macros
|
|
*
|
|
* Copyright (C) 2005-2010 Texas Instruments, Inc.
|
|
* Copyright (C) 2004-2010 Nokia Corporation
|
|
*/
|
|
|
|
#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
|
|
#define __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
|
|
|
|
unsigned long omap2_table_mpu_recalc(struct clk *clk);
|
|
int omap2_select_table_rate(struct clk *clk, unsigned long rate);
|
|
long omap2_round_to_table_rate(struct clk *clk, unsigned long rate);
|
|
unsigned long omap2xxx_sys_clk_recalc(struct clk *clk);
|
|
unsigned long omap2_osc_clk_recalc(struct clk *clk);
|
|
unsigned long omap2_dpllcore_recalc(struct clk *clk);
|
|
int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate);
|
|
unsigned long omap2xxx_clk_get_core_rate(struct clk *clk);
|
|
u32 omap2xxx_get_apll_clkin(void);
|
|
u32 omap2xxx_get_sysclkdiv(void);
|
|
void omap2xxx_clk_prepare_for_reboot(void);
|
|
|
|
#ifdef CONFIG_ARCH_OMAP2420
|
|
int omap2420_clk_init(void);
|
|
#else
|
|
#define omap2420_clk_init() 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_ARCH_OMAP2430
|
|
int omap2430_clk_init(void);
|
|
#else
|
|
#define omap2430_clk_init() 0
|
|
#endif
|
|
|
|
extern void __iomem *prcm_clksrc_ctrl, *cm_idlest_pll;
|
|
|
|
extern struct clk *dclk;
|
|
|
|
extern const struct clkops clkops_omap2430_i2chs_wait;
|
|
extern const struct clkops clkops_oscck;
|
|
extern const struct clkops clkops_apll96;
|
|
extern const struct clkops clkops_apll54;
|
|
|
|
#endif
|