diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-30 17:53:32 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-30 17:53:32 -0400 |
commit | 65fb0d23fcddd8697c871047b700c78817bdaa43 (patch) | |
tree | 119e6e5f276622c4c862f6c9b6d795264ba1603a /arch/powerpc/platforms/52xx/mpc52xx_common.c | |
parent | 8c083f081d0014057901c68a0a3e0f8ca7ac8d23 (diff) | |
parent | dfbbe89e197a77f2c8046a51c74e33e35f878080 (diff) |
Merge branch 'linus' into cpumask-for-linus
Conflicts:
arch/x86/kernel/cpu/common.c
Diffstat (limited to 'arch/powerpc/platforms/52xx/mpc52xx_common.c')
-rw-r--r-- | arch/powerpc/platforms/52xx/mpc52xx_common.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index 98367a0255f3..8e3dd5a0f228 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c | |||
@@ -28,9 +28,10 @@ static struct of_device_id mpc52xx_xlb_ids[] __initdata = { | |||
28 | static struct of_device_id mpc52xx_bus_ids[] __initdata = { | 28 | static struct of_device_id mpc52xx_bus_ids[] __initdata = { |
29 | { .compatible = "fsl,mpc5200-immr", }, | 29 | { .compatible = "fsl,mpc5200-immr", }, |
30 | { .compatible = "fsl,mpc5200b-immr", }, | 30 | { .compatible = "fsl,mpc5200b-immr", }, |
31 | { .compatible = "fsl,lpb", }, | 31 | { .compatible = "simple-bus", }, |
32 | 32 | ||
33 | /* depreciated matches; shouldn't be used in new device trees */ | 33 | /* depreciated matches; shouldn't be used in new device trees */ |
34 | { .compatible = "fsl,lpb", }, | ||
34 | { .type = "builtin", .compatible = "mpc5200", }, /* efika */ | 35 | { .type = "builtin", .compatible = "mpc5200", }, /* efika */ |
35 | { .type = "soc", .compatible = "mpc5200", }, /* lite5200 */ | 36 | { .type = "soc", .compatible = "mpc5200", }, /* lite5200 */ |
36 | {} | 37 | {} |
@@ -205,6 +206,43 @@ int mpc52xx_set_psc_clkdiv(int psc_id, int clkdiv) | |||
205 | EXPORT_SYMBOL(mpc52xx_set_psc_clkdiv); | 206 | EXPORT_SYMBOL(mpc52xx_set_psc_clkdiv); |
206 | 207 | ||
207 | /** | 208 | /** |
209 | * mpc52xx_get_xtal_freq - Get SYS_XTAL_IN frequency for a device | ||
210 | * | ||
211 | * @node: device node | ||
212 | * | ||
213 | * Returns the frequency of the external oscillator clock connected | ||
214 | * to the SYS_XTAL_IN pin, or 0 if it cannot be determined. | ||
215 | */ | ||
216 | unsigned int mpc52xx_get_xtal_freq(struct device_node *node) | ||
217 | { | ||
218 | u32 val; | ||
219 | unsigned int freq; | ||
220 | |||
221 | if (!mpc52xx_cdm) | ||
222 | return 0; | ||
223 | |||
224 | freq = mpc52xx_find_ipb_freq(node); | ||
225 | if (!freq) | ||
226 | return 0; | ||
227 | |||
228 | if (in_8(&mpc52xx_cdm->ipb_clk_sel) & 0x1) | ||
229 | freq *= 2; | ||
230 | |||
231 | val = in_be32(&mpc52xx_cdm->rstcfg); | ||
232 | if (val & (1 << 5)) | ||
233 | freq *= 8; | ||
234 | else | ||
235 | freq *= 4; | ||
236 | if (val & (1 << 6)) | ||
237 | freq /= 12; | ||
238 | else | ||
239 | freq /= 16; | ||
240 | |||
241 | return freq; | ||
242 | } | ||
243 | EXPORT_SYMBOL(mpc52xx_get_xtal_freq); | ||
244 | |||
245 | /** | ||
208 | * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer | 246 | * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer |
209 | */ | 247 | */ |
210 | void | 248 | void |