|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
/*
|
|
|
|
|
* Copyright 2004 Freescale Semiconductor. |
|
|
|
|
* Jeff Brown (jeffrey@freescale.com) |
|
|
|
|
* Jeff Brown |
|
|
|
|
* Srikanth Srinivasan (srikanth.srinivasan@freescale.com) |
|
|
|
|
* |
|
|
|
|
* (C) Copyright 2000-2002 |
|
|
|
@ -29,9 +29,6 @@ |
|
|
|
|
#include <mpc86xx.h> |
|
|
|
|
#include <asm/processor.h> |
|
|
|
|
|
|
|
|
|
unsigned long get_board_sys_clk(ulong dummy); |
|
|
|
|
unsigned long get_sysclk_from_px_regs(void); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void get_sys_info (sys_info_t *sysInfo) |
|
|
|
|
{ |
|
|
|
@ -39,11 +36,11 @@ void get_sys_info (sys_info_t *sysInfo) |
|
|
|
|
volatile ccsr_gur_t *gur = &immap->im_gur; |
|
|
|
|
uint plat_ratio, e600_ratio; |
|
|
|
|
|
|
|
|
|
plat_ratio = (gur->porpllsr) & 0x0000003e; |
|
|
|
|
plat_ratio = (gur->porpllsr) & 0x0000003e; |
|
|
|
|
plat_ratio >>= 1; |
|
|
|
|
|
|
|
|
|
switch(plat_ratio) { |
|
|
|
|
case 0x0: |
|
|
|
|
case 0x0: |
|
|
|
|
sysInfo->freqSystemBus = 16 * CONFIG_SYS_CLK_FREQ; |
|
|
|
|
break; |
|
|
|
|
case 0x02: |
|
|
|
@ -55,19 +52,14 @@ void get_sys_info (sys_info_t *sysInfo) |
|
|
|
|
case 0x09: |
|
|
|
|
case 0x0a: |
|
|
|
|
case 0x0c: |
|
|
|
|
case 0x10: |
|
|
|
|
sysInfo->freqSystemBus = plat_ratio * CONFIG_SYS_CLK_FREQ; |
|
|
|
|
break; |
|
|
|
|
case 0x10: |
|
|
|
|
sysInfo->freqSystemBus = plat_ratio * CONFIG_SYS_CLK_FREQ; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
sysInfo->freqSystemBus = 0; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
printf("assigned system bus freq = %d for plat ratio 0x%08lx\n", |
|
|
|
|
sysInfo->freqSystemBus, plat_ratio); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
e600_ratio = (gur->porpllsr) & 0x003f0000; |
|
|
|
|
e600_ratio >>= 16; |
|
|
|
|
|
|
|
|
@ -75,13 +67,13 @@ void get_sys_info (sys_info_t *sysInfo) |
|
|
|
|
case 0x10: |
|
|
|
|
sysInfo->freqProcessor = 2 * sysInfo->freqSystemBus; |
|
|
|
|
break; |
|
|
|
|
case 0x19: |
|
|
|
|
case 0x19: |
|
|
|
|
sysInfo->freqProcessor = 5 * sysInfo->freqSystemBus/2; |
|
|
|
|
break; |
|
|
|
|
case 0x20: |
|
|
|
|
sysInfo->freqProcessor = 3 * sysInfo->freqSystemBus; |
|
|
|
|
break; |
|
|
|
|
case 0x39: |
|
|
|
|
case 0x39: |
|
|
|
|
sysInfo->freqProcessor = 7 * sysInfo->freqSystemBus/2; |
|
|
|
|
break; |
|
|
|
|
case 0x28: |
|
|
|
@ -90,16 +82,10 @@ void get_sys_info (sys_info_t *sysInfo) |
|
|
|
|
case 0x1d: |
|
|
|
|
sysInfo->freqProcessor = 9 * sysInfo->freqSystemBus/2; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
/* JB - Emulator workaround until real cop is plugged in */ |
|
|
|
|
/* sysInfo->freqProcessor = 3 * sysInfo->freqSystemBus; */ |
|
|
|
|
default: |
|
|
|
|
sysInfo->freqProcessor = e600_ratio + sysInfo->freqSystemBus; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
#if 0 |
|
|
|
|
printf("assigned processor freq = %d for e600 ratio 0x%08lx\n", |
|
|
|
|
sysInfo->freqProcessor, e600_ratio); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -128,6 +114,7 @@ int get_clocks(void) |
|
|
|
|
* get_bus_freq |
|
|
|
|
* Return system bus freq in Hz |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
ulong get_bus_freq(ulong dummy) |
|
|
|
|
{ |
|
|
|
|
ulong val; |
|
|
|
@ -139,42 +126,6 @@ ulong get_bus_freq(ulong dummy) |
|
|
|
|
return val; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
unsigned long get_sysclk_from_px_regs() |
|
|
|
|
{ |
|
|
|
|
ulong val; |
|
|
|
|
u8 vclkh, vclkl; |
|
|
|
|
|
|
|
|
|
vclkh = in8(PIXIS_BASE + PIXIS_VCLKH); |
|
|
|
|
vclkl = in8(PIXIS_BASE + PIXIS_VCLKL); |
|
|
|
|
|
|
|
|
|
if ((vclkh == 0x84) && (vclkl == 0x07)) { |
|
|
|
|
val = 33000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0x3F) && (vclkl == 0x20)) { |
|
|
|
|
val = 40000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0x3F) && (vclkl == 0x2A)) { |
|
|
|
|
val = 50000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0x24) && (vclkl == 0x04)) { |
|
|
|
|
val = 66000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0x3F) && (vclkl == 0x4B)) { |
|
|
|
|
val = 83000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0x3F) && (vclkl == 0x5C)) { |
|
|
|
|
val = 100000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0xDF) && (vclkl == 0x3B)) { |
|
|
|
|
val = 134000000; |
|
|
|
|
} |
|
|
|
|
if ((vclkh == 0xDF) && (vclkl == 0x4B)) { |
|
|
|
|
val = 166000000; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return val; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* get_board_sys_clk |
|
|
|
|