mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
[POWERPC] support ibm,extended-*-frequency properties
Support the ibm,extended-*-frequency properties found in recent POWER5 firmware: cpus/PowerPC,POWER5@0/clock-frequency 59aa5880 (1504336000) cpus/PowerPC,POWER5@0/ibm,extended-clock-frequency 00000000 59aa5880 cpus/PowerPC,POWER5@0/timebase-frequency 0b354b10 (188042000) cpus/PowerPC,POWER5@0/ibm,extended-timebase-frequency 00000000 0b354b10 Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
ccba051c37
commit
0bb474a48e
1 changed files with 31 additions and 28 deletions
|
@ -857,42 +857,50 @@ int do_settimeofday(struct timespec *tv)
|
|||
|
||||
EXPORT_SYMBOL(do_settimeofday);
|
||||
|
||||
void __init generic_calibrate_decr(void)
|
||||
static int __init get_freq(char *name, int cells, unsigned long *val)
|
||||
{
|
||||
struct device_node *cpu;
|
||||
unsigned int *fp;
|
||||
int node_found;
|
||||
int found = 0;
|
||||
|
||||
/*
|
||||
* The cpu node should have a timebase-frequency property
|
||||
* to tell us the rate at which the decrementer counts.
|
||||
*/
|
||||
/* The cpu node should have timebase and clock frequency properties */
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
|
||||
ppc_tb_freq = DEFAULT_TB_FREQ; /* hardcoded default */
|
||||
node_found = 0;
|
||||
if (cpu) {
|
||||
fp = (unsigned int *)get_property(cpu, "timebase-frequency",
|
||||
NULL);
|
||||
fp = (unsigned int *)get_property(cpu, name, NULL);
|
||||
if (fp) {
|
||||
node_found = 1;
|
||||
ppc_tb_freq = *fp;
|
||||
found = 1;
|
||||
*val = 0;
|
||||
while (cells--)
|
||||
*val = (*val << 32) | *fp++;
|
||||
}
|
||||
|
||||
of_node_put(cpu);
|
||||
}
|
||||
if (!node_found)
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
void __init generic_calibrate_decr(void)
|
||||
{
|
||||
ppc_tb_freq = DEFAULT_TB_FREQ; /* hardcoded default */
|
||||
|
||||
if (!get_freq("ibm,extended-timebase-frequency", 2, &ppc_tb_freq) &&
|
||||
!get_freq("timebase-frequency", 1, &ppc_tb_freq)) {
|
||||
|
||||
printk(KERN_ERR "WARNING: Estimating decrementer frequency "
|
||||
"(not found)\n");
|
||||
|
||||
ppc_proc_freq = DEFAULT_PROC_FREQ;
|
||||
node_found = 0;
|
||||
if (cpu) {
|
||||
fp = (unsigned int *)get_property(cpu, "clock-frequency",
|
||||
NULL);
|
||||
if (fp) {
|
||||
node_found = 1;
|
||||
ppc_proc_freq = *fp;
|
||||
}
|
||||
}
|
||||
|
||||
ppc_proc_freq = DEFAULT_PROC_FREQ; /* hardcoded default */
|
||||
|
||||
if (!get_freq("ibm,extended-clock-frequency", 2, &ppc_proc_freq) &&
|
||||
!get_freq("clock-frequency", 1, &ppc_proc_freq)) {
|
||||
|
||||
printk(KERN_ERR "WARNING: Estimating processor frequency "
|
||||
"(not found)\n");
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BOOKE
|
||||
/* Set the time base to zero */
|
||||
mtspr(SPRN_TBWL, 0);
|
||||
|
@ -904,11 +912,6 @@ void __init generic_calibrate_decr(void)
|
|||
/* Enable decrementer interrupt */
|
||||
mtspr(SPRN_TCR, TCR_DIE);
|
||||
#endif
|
||||
if (!node_found)
|
||||
printk(KERN_ERR "WARNING: Estimating processor frequency "
|
||||
"(not found)\n");
|
||||
|
||||
of_node_put(cpu);
|
||||
}
|
||||
|
||||
unsigned long get_boot_time(void)
|
||||
|
|
Loading…
Reference in a new issue