Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162848
b: refs/heads/master
c: 2882b0c
h: refs/heads/master
v: v3
  • Loading branch information
Manuel Lauss authored and Ralf Baechle committed Sep 17, 2009
1 parent 94ba979 commit d879c17
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9d24bafb0d1ecf636f71a56f9d6f071f5c7a882d
refs/heads/master: 2882b0c63ac6085fd5c18959240b6f7d6ffb8d5b
15 changes: 9 additions & 6 deletions trunk/arch/mips/alchemy/common/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,13 @@
#include <linux/interrupt.h>
#include <linux/spinlock.h>

#include <asm/processor.h>
#include <asm/time.h>
#include <asm/mach-au1x00/au1000.h>

/* 32kHz clock enabled and detected */
#define CNTR_OK (SYS_CNTRL_E0 | SYS_CNTRL_32S)

extern int allow_au1k_wait; /* default off for CP0 Counter */

static cycle_t au1x_counter1_read(struct clocksource *cs)
{
return au_readl(SYS_RTCREAD);
Expand Down Expand Up @@ -153,13 +152,17 @@ void __init plat_time_init(void)

printk(KERN_INFO "Alchemy clocksource installed\n");

/* can now use 'wait' */
allow_au1k_wait = 1;
return;

cntr_err:
/* counters unusable, use C0 counter */
/*
* MIPS kernel assigns 'au1k_wait' to 'cpu_wait' before this
* function is called. Because the Alchemy counters are unusable
* the C0 timekeeping code is installed and use of the 'wait'
* instruction must be prohibited, which is done most easily by
* assigning NULL to cpu_wait.
*/
cpu_wait = NULL;
r4k_clockevent_init();
init_r4k_clocksource();
allow_au1k_wait = 0;
}
13 changes: 5 additions & 8 deletions trunk/arch/mips/kernel/cpu-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,13 @@ static void rm7k_wait_irqoff(void)
local_irq_enable();
}

/* The Au1xxx wait is available only if using 32khz counter or
* external timer source, but specifically not CP0 Counter. */
int allow_au1k_wait;

/*
* The Au1xxx wait is available only if using 32khz counter or
* external timer source, but specifically not CP0 Counter.
* alchemy/common/time.c may override cpu_wait!
*/
static void au1k_wait(void)
{
if (!allow_au1k_wait)
return;

/* using the wait instruction makes CP0 counter unusable */
__asm__(" .set mips3 \n"
" cache 0x14, 0(%0) \n"
" cache 0x14, 32(%0) \n"
Expand Down

0 comments on commit d879c17

Please sign in to comment.