diff options
| author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-10-23 11:21:27 -0400 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2006-10-31 15:13:23 -0500 |
| commit | 16b7b2ac0148e839da86af8747b6fa4aad43a9b7 (patch) | |
| tree | 93912ae2e9c64f71a8cca028677fd918b9edf0fa /include | |
| parent | 70e46f48cb5933119712ee27945309a4bfc98282 (diff) | |
[MIPS] Fixup migration to GENERIC_TIME
Since we already moved to GENERIC_TIME, we should implement alternatives
of old do_gettimeoffset routines to get sub-jiffies resolution from
gettimeofday(). This patch includes:
* MIPS clocksource support (based on works by Manish Lachwani).
* remove unused gettimeoffset routines and related codes.
* remove unised 64bit do_div64_32().
* simplify mips_hpt_init. (no argument needed, __init tag)
* simplify c0_hpt_timer_init. (no need to write to c0_count)
* remove some hpt_init routines.
* mips_hpt_mask variable to specify bitmask of hpt value.
* convert jmr3927_do_gettimeoffset to jmr3927_hpt_read.
* convert ip27_do_gettimeoffset to ip27_hpt_read.
* convert bcm1480_do_gettimeoffset to bcm1480_hpt_read.
* simplify sb1250 hpt functions. (no need to subtract and shift)
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-mips/div64.h | 21 | ||||
| -rw-r--r-- | include/asm-mips/sibyte/sb1250.h | 2 | ||||
| -rw-r--r-- | include/asm-mips/time.h | 10 |
3 files changed, 3 insertions, 30 deletions
diff --git a/include/asm-mips/div64.h b/include/asm-mips/div64.h index 5f7dcf5452e7..d107832de1b6 100644 --- a/include/asm-mips/div64.h +++ b/include/asm-mips/div64.h | |||
| @@ -83,27 +83,6 @@ | |||
| 83 | #if (_MIPS_SZLONG == 64) | 83 | #if (_MIPS_SZLONG == 64) |
| 84 | 84 | ||
| 85 | /* | 85 | /* |
| 86 | * Don't use this one in new code | ||
| 87 | */ | ||
| 88 | #define do_div64_32(res, high, low, base) ({ \ | ||
| 89 | unsigned int __quot, __mod; \ | ||
| 90 | unsigned long __div; \ | ||
| 91 | unsigned int __low, __high, __base; \ | ||
| 92 | \ | ||
| 93 | __high = (high); \ | ||
| 94 | __low = (low); \ | ||
| 95 | __div = __high; \ | ||
| 96 | __div = __div << 32 | __low; \ | ||
| 97 | __base = (base); \ | ||
| 98 | \ | ||
| 99 | __mod = __div % __base; \ | ||
| 100 | __div = __div / __base; \ | ||
| 101 | \ | ||
| 102 | __quot = __div; \ | ||
| 103 | (res) = __quot; \ | ||
| 104 | __mod; }) | ||
| 105 | |||
| 106 | /* | ||
| 107 | * Hey, we're already 64-bit, no | 86 | * Hey, we're already 64-bit, no |
| 108 | * need to play games.. | 87 | * need to play games.. |
| 109 | */ | 88 | */ |
diff --git a/include/asm-mips/sibyte/sb1250.h b/include/asm-mips/sibyte/sb1250.h index b09e16c93ca0..2ba6988ddc8e 100644 --- a/include/asm-mips/sibyte/sb1250.h +++ b/include/asm-mips/sibyte/sb1250.h | |||
| @@ -51,8 +51,8 @@ extern void sb1250_mask_irq(int cpu, int irq); | |||
| 51 | extern void sb1250_unmask_irq(int cpu, int irq); | 51 | extern void sb1250_unmask_irq(int cpu, int irq); |
| 52 | extern void sb1250_smp_finish(void); | 52 | extern void sb1250_smp_finish(void); |
| 53 | 53 | ||
| 54 | extern void bcm1480_hpt_setup(void); | ||
| 54 | extern void bcm1480_time_init(void); | 55 | extern void bcm1480_time_init(void); |
| 55 | extern unsigned long bcm1480_gettimeoffset(void); | ||
| 56 | extern void bcm1480_mask_irq(int cpu, int irq); | 56 | extern void bcm1480_mask_irq(int cpu, int irq); |
| 57 | extern void bcm1480_unmask_irq(int cpu, int irq); | 57 | extern void bcm1480_unmask_irq(int cpu, int irq); |
| 58 | extern void bcm1480_smp_finish(void); | 58 | extern void bcm1480_smp_finish(void); |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index 28512ba2266e..625acd337bc3 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
| @@ -48,7 +48,8 @@ extern void (*mips_timer_ack)(void); | |||
| 48 | * If mips_hpt_read is NULL, an R4k-compatible timer setup is attempted. | 48 | * If mips_hpt_read is NULL, an R4k-compatible timer setup is attempted. |
| 49 | */ | 49 | */ |
| 50 | extern unsigned int (*mips_hpt_read)(void); | 50 | extern unsigned int (*mips_hpt_read)(void); |
| 51 | extern void (*mips_hpt_init)(unsigned int); | 51 | extern void (*mips_hpt_init)(void); |
| 52 | extern unsigned int mips_hpt_mask; | ||
| 52 | 53 | ||
| 53 | /* | 54 | /* |
| 54 | * to_tm() converts system time back to (year, mon, day, hour, min, sec). | 55 | * to_tm() converts system time back to (year, mon, day, hour, min, sec). |
| @@ -58,13 +59,6 @@ extern void (*mips_hpt_init)(unsigned int); | |||
| 58 | extern void to_tm(unsigned long tim, struct rtc_time *tm); | 59 | extern void to_tm(unsigned long tim, struct rtc_time *tm); |
| 59 | 60 | ||
| 60 | /* | 61 | /* |
| 61 | * do_gettimeoffset(). By default, this func pointer points to | ||
| 62 | * do_null_gettimeoffset(), which leads to the same resolution as HZ. | ||
| 63 | * Higher resolution versions are available, which give ~1us resolution. | ||
| 64 | */ | ||
| 65 | extern unsigned long (*do_gettimeoffset)(void); | ||
| 66 | |||
| 67 | /* | ||
| 68 | * high-level timer interrupt routines. | 62 | * high-level timer interrupt routines. |
| 69 | */ | 63 | */ |
| 70 | extern irqreturn_t timer_interrupt(int irq, void *dev_id); | 64 | extern irqreturn_t timer_interrupt(int irq, void *dev_id); |
