diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/Makefile | 3 | ||||
-rw-r--r-- | arch/mips/arc/misc.c | 19 | ||||
-rw-r--r-- | arch/mips/au1000/common/reset.c | 10 | ||||
-rw-r--r-- | arch/mips/kernel/time.c | 6 | ||||
-rw-r--r-- | arch/mips/mm/c-r4k.c | 13 | ||||
-rw-r--r-- | arch/mips/mm/c-tx39.c | 1 | ||||
-rw-r--r-- | arch/mips/sibyte/sb1250/time.c | 77 | ||||
-rw-r--r-- | arch/mips/sibyte/swarm/setup.c | 7 |
8 files changed, 87 insertions, 49 deletions
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index fe9da16f3a40..3d8dac681c63 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile | |||
@@ -108,7 +108,8 @@ MODFLAGS += -mlong-calls | |||
108 | cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB) | 108 | cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB) |
109 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL) | 109 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL) |
110 | 110 | ||
111 | cflags-$(CONFIG_SB1XXX_CORELIS) += -mno-sched-prolog -fno-omit-frame-pointer | 111 | cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \ |
112 | -fno-omit-frame-pointer | ||
112 | 113 | ||
113 | # | 114 | # |
114 | # Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>) | 115 | # Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>) |
diff --git a/arch/mips/arc/misc.c b/arch/mips/arc/misc.c index 84867de22028..b2e10b9e9452 100644 --- a/arch/mips/arc/misc.c +++ b/arch/mips/arc/misc.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org) | 9 | * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org) |
10 | * Copyright (C) 1999 Silicon Graphics, Inc. | 10 | * Copyright (C) 1999 Silicon Graphics, Inc. |
11 | */ | 11 | */ |
12 | #include <linux/config.h> | ||
13 | #include <linux/init.h> | 12 | #include <linux/init.h> |
14 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
15 | 14 | ||
@@ -20,17 +19,11 @@ | |||
20 | #include <asm/bootinfo.h> | 19 | #include <asm/bootinfo.h> |
21 | #include <asm/system.h> | 20 | #include <asm/system.h> |
22 | 21 | ||
23 | extern void *sgiwd93_host; | ||
24 | extern void reset_wd33c93(void *instance); | ||
25 | |||
26 | VOID | 22 | VOID |
27 | ArcHalt(VOID) | 23 | ArcHalt(VOID) |
28 | { | 24 | { |
29 | bc_disable(); | 25 | bc_disable(); |
30 | local_irq_disable(); | 26 | local_irq_disable(); |
31 | #ifdef CONFIG_SCSI_SGIWD93 | ||
32 | reset_wd33c93(sgiwd93_host); | ||
33 | #endif | ||
34 | ARC_CALL0(halt); | 27 | ARC_CALL0(halt); |
35 | never: goto never; | 28 | never: goto never; |
36 | } | 29 | } |
@@ -40,9 +33,6 @@ ArcPowerDown(VOID) | |||
40 | { | 33 | { |
41 | bc_disable(); | 34 | bc_disable(); |
42 | local_irq_disable(); | 35 | local_irq_disable(); |
43 | #ifdef CONFIG_SCSI_SGIWD93 | ||
44 | reset_wd33c93(sgiwd93_host); | ||
45 | #endif | ||
46 | ARC_CALL0(pdown); | 36 | ARC_CALL0(pdown); |
47 | never: goto never; | 37 | never: goto never; |
48 | } | 38 | } |
@@ -53,9 +43,6 @@ ArcRestart(VOID) | |||
53 | { | 43 | { |
54 | bc_disable(); | 44 | bc_disable(); |
55 | local_irq_disable(); | 45 | local_irq_disable(); |
56 | #ifdef CONFIG_SCSI_SGIWD93 | ||
57 | reset_wd33c93(sgiwd93_host); | ||
58 | #endif | ||
59 | ARC_CALL0(restart); | 46 | ARC_CALL0(restart); |
60 | never: goto never; | 47 | never: goto never; |
61 | } | 48 | } |
@@ -65,9 +52,6 @@ ArcReboot(VOID) | |||
65 | { | 52 | { |
66 | bc_disable(); | 53 | bc_disable(); |
67 | local_irq_disable(); | 54 | local_irq_disable(); |
68 | #ifdef CONFIG_SCSI_SGIWD93 | ||
69 | reset_wd33c93(sgiwd93_host); | ||
70 | #endif | ||
71 | ARC_CALL0(reboot); | 55 | ARC_CALL0(reboot); |
72 | never: goto never; | 56 | never: goto never; |
73 | } | 57 | } |
@@ -77,9 +61,6 @@ ArcEnterInteractiveMode(VOID) | |||
77 | { | 61 | { |
78 | bc_disable(); | 62 | bc_disable(); |
79 | local_irq_disable(); | 63 | local_irq_disable(); |
80 | #ifdef CONFIG_SCSI_SGIWD93 | ||
81 | reset_wd33c93(sgiwd93_host); | ||
82 | #endif | ||
83 | ARC_CALL0(imode); | 64 | ARC_CALL0(imode); |
84 | never: goto never; | 65 | never: goto never; |
85 | } | 66 | } |
diff --git a/arch/mips/au1000/common/reset.c b/arch/mips/au1000/common/reset.c index 4ffccedf5967..c93af224c1b3 100644 --- a/arch/mips/au1000/common/reset.c +++ b/arch/mips/au1000/common/reset.c | |||
@@ -164,17 +164,20 @@ void au1000_restart(char *command) | |||
164 | 164 | ||
165 | void au1000_halt(void) | 165 | void au1000_halt(void) |
166 | { | 166 | { |
167 | #if defined(CONFIG_MIPS_PB1550) | 167 | #if defined(CONFIG_MIPS_PB1550) || defined(CONFIG_MIPS_DB1550) |
168 | /* power off system */ | 168 | /* power off system */ |
169 | printk("\n** Powering off Pb1550\n"); | 169 | printk("\n** Powering off...\n"); |
170 | au_writew(au_readw(0xAF00001C) | (3<<14), 0xAF00001C); | 170 | au_writew(au_readw(0xAF00001C) | (3<<14), 0xAF00001C); |
171 | au_sync(); | 171 | au_sync(); |
172 | while(1); /* should not get here */ | 172 | while(1); /* should not get here */ |
173 | #endif | 173 | #else |
174 | printk(KERN_NOTICE "\n** You can safely turn off the power\n"); | 174 | printk(KERN_NOTICE "\n** You can safely turn off the power\n"); |
175 | #ifdef CONFIG_MIPS_MIRAGE | 175 | #ifdef CONFIG_MIPS_MIRAGE |
176 | au_writel((1 << 26) | (1 << 10), GPIO2_OUTPUT); | 176 | au_writel((1 << 26) | (1 << 10), GPIO2_OUTPUT); |
177 | #endif | 177 | #endif |
178 | #ifdef CONFIG_MIPS_DB1200 | ||
179 | au_writew(au_readw(0xB980001C) | (1<<14), 0xB980001C); | ||
180 | #endif | ||
178 | #ifdef CONFIG_PM | 181 | #ifdef CONFIG_PM |
179 | au_sleep(); | 182 | au_sleep(); |
180 | 183 | ||
@@ -187,6 +190,7 @@ void au1000_halt(void) | |||
187 | "wait\n\t" | 190 | "wait\n\t" |
188 | ".set\tmips0"); | 191 | ".set\tmips0"); |
189 | #endif | 192 | #endif |
193 | #endif /* defined(CONFIG_MIPS_PB1550) || defined(CONFIG_MIPS_DB1550) */ | ||
190 | } | 194 | } |
191 | 195 | ||
192 | void au1000_power_off(void) | 196 | void au1000_power_off(void) |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 42c94c771afb..51273b7297a7 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -424,6 +424,8 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
424 | unsigned long j; | 424 | unsigned long j; |
425 | unsigned int count; | 425 | unsigned int count; |
426 | 426 | ||
427 | write_seqlock(&xtime_lock); | ||
428 | |||
427 | count = mips_hpt_read(); | 429 | count = mips_hpt_read(); |
428 | mips_timer_ack(); | 430 | mips_timer_ack(); |
429 | 431 | ||
@@ -441,7 +443,6 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
441 | * CMOS clock accordingly every ~11 minutes. rtc_set_time() has to be | 443 | * CMOS clock accordingly every ~11 minutes. rtc_set_time() has to be |
442 | * called as close as possible to 500 ms before the new second starts. | 444 | * called as close as possible to 500 ms before the new second starts. |
443 | */ | 445 | */ |
444 | write_seqlock(&xtime_lock); | ||
445 | if (ntp_synced() && | 446 | if (ntp_synced() && |
446 | xtime.tv_sec > last_rtc_update + 660 && | 447 | xtime.tv_sec > last_rtc_update + 660 && |
447 | (xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 && | 448 | (xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 && |
@@ -453,7 +454,6 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
453 | last_rtc_update = xtime.tv_sec - 600; | 454 | last_rtc_update = xtime.tv_sec - 600; |
454 | } | 455 | } |
455 | } | 456 | } |
456 | write_sequnlock(&xtime_lock); | ||
457 | 457 | ||
458 | /* | 458 | /* |
459 | * If jiffies has overflown in this timer_interrupt, we must | 459 | * If jiffies has overflown in this timer_interrupt, we must |
@@ -496,6 +496,8 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
496 | } | 496 | } |
497 | } | 497 | } |
498 | 498 | ||
499 | write_sequnlock(&xtime_lock); | ||
500 | |||
499 | /* | 501 | /* |
500 | * In UP mode, we call local_timer_interrupt() to do profiling | 502 | * In UP mode, we call local_timer_interrupt() to do profiling |
501 | * and process accouting. | 503 | * and process accouting. |
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 0668e9bfce41..9572ed44f0d5 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -375,6 +375,7 @@ static void r4k_flush_cache_mm(struct mm_struct *mm) | |||
375 | struct flush_cache_page_args { | 375 | struct flush_cache_page_args { |
376 | struct vm_area_struct *vma; | 376 | struct vm_area_struct *vma; |
377 | unsigned long addr; | 377 | unsigned long addr; |
378 | unsigned long pfn; | ||
378 | }; | 379 | }; |
379 | 380 | ||
380 | static inline void local_r4k_flush_cache_page(void *args) | 381 | static inline void local_r4k_flush_cache_page(void *args) |
@@ -382,6 +383,7 @@ static inline void local_r4k_flush_cache_page(void *args) | |||
382 | struct flush_cache_page_args *fcp_args = args; | 383 | struct flush_cache_page_args *fcp_args = args; |
383 | struct vm_area_struct *vma = fcp_args->vma; | 384 | struct vm_area_struct *vma = fcp_args->vma; |
384 | unsigned long addr = fcp_args->addr; | 385 | unsigned long addr = fcp_args->addr; |
386 | unsigned long paddr = fcp_args->pfn << PAGE_SHIFT; | ||
385 | int exec = vma->vm_flags & VM_EXEC; | 387 | int exec = vma->vm_flags & VM_EXEC; |
386 | struct mm_struct *mm = vma->vm_mm; | 388 | struct mm_struct *mm = vma->vm_mm; |
387 | pgd_t *pgdp; | 389 | pgd_t *pgdp; |
@@ -431,11 +433,12 @@ static inline void local_r4k_flush_cache_page(void *args) | |||
431 | * Do indexed flush, too much work to get the (possible) TLB refills | 433 | * Do indexed flush, too much work to get the (possible) TLB refills |
432 | * to work correctly. | 434 | * to work correctly. |
433 | */ | 435 | */ |
434 | addr = INDEX_BASE + (addr & (dcache_size - 1)); | ||
435 | if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) { | 436 | if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) { |
436 | r4k_blast_dcache_page_indexed(addr); | 437 | r4k_blast_dcache_page_indexed(cpu_has_pindexed_dcache ? |
437 | if (exec && !cpu_icache_snoops_remote_store) | 438 | paddr : addr); |
438 | r4k_blast_scache_page_indexed(addr); | 439 | if (exec && !cpu_icache_snoops_remote_store) { |
440 | r4k_blast_scache_page_indexed(paddr); | ||
441 | } | ||
439 | } | 442 | } |
440 | if (exec) { | 443 | if (exec) { |
441 | if (cpu_has_vtag_icache) { | 444 | if (cpu_has_vtag_icache) { |
@@ -455,6 +458,7 @@ static void r4k_flush_cache_page(struct vm_area_struct *vma, | |||
455 | 458 | ||
456 | args.vma = vma; | 459 | args.vma = vma; |
457 | args.addr = addr; | 460 | args.addr = addr; |
461 | args.pfn = pfn; | ||
458 | 462 | ||
459 | on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1); | 463 | on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1); |
460 | } | 464 | } |
@@ -956,6 +960,7 @@ static void __init probe_pcache(void) | |||
956 | switch (c->cputype) { | 960 | switch (c->cputype) { |
957 | case CPU_20KC: | 961 | case CPU_20KC: |
958 | case CPU_25KF: | 962 | case CPU_25KF: |
963 | c->dcache.flags |= MIPS_CACHE_PINDEX; | ||
959 | case CPU_R10000: | 964 | case CPU_R10000: |
960 | case CPU_R12000: | 965 | case CPU_R12000: |
961 | case CPU_SB1: | 966 | case CPU_SB1: |
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c index 7c572bea4a98..fe232e3988e3 100644 --- a/arch/mips/mm/c-tx39.c +++ b/arch/mips/mm/c-tx39.c | |||
@@ -210,7 +210,6 @@ static void tx39_flush_cache_page(struct vm_area_struct *vma, unsigned long page | |||
210 | * Do indexed flush, too much work to get the (possible) TLB refills | 210 | * Do indexed flush, too much work to get the (possible) TLB refills |
211 | * to work correctly. | 211 | * to work correctly. |
212 | */ | 212 | */ |
213 | page = (KSEG0 + (page & (dcache_size - 1))); | ||
214 | if (cpu_has_dc_aliases || exec) | 213 | if (cpu_has_dc_aliases || exec) |
215 | tx39_blast_dcache_page_indexed(page); | 214 | tx39_blast_dcache_page_indexed(page); |
216 | if (exec) | 215 | if (exec) |
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c index 511c89d65f38..1588f6debd90 100644 --- a/arch/mips/sibyte/sb1250/time.c +++ b/arch/mips/sibyte/sb1250/time.c | |||
@@ -47,23 +47,51 @@ | |||
47 | #define IMR_IP3_VAL K_INT_MAP_I1 | 47 | #define IMR_IP3_VAL K_INT_MAP_I1 |
48 | #define IMR_IP4_VAL K_INT_MAP_I2 | 48 | #define IMR_IP4_VAL K_INT_MAP_I2 |
49 | 49 | ||
50 | #define SB1250_HPT_NUM 3 | ||
51 | #define SB1250_HPT_VALUE M_SCD_TIMER_CNT /* max value */ | ||
52 | #define SB1250_HPT_SHIFT ((sizeof(unsigned int)*8)-V_SCD_TIMER_WIDTH) | ||
53 | |||
54 | |||
50 | extern int sb1250_steal_irq(int irq); | 55 | extern int sb1250_steal_irq(int irq); |
51 | 56 | ||
57 | static unsigned int sb1250_hpt_read(void); | ||
58 | static void sb1250_hpt_init(unsigned int); | ||
59 | |||
60 | static unsigned int hpt_offset; | ||
61 | |||
62 | void __init sb1250_hpt_setup(void) | ||
63 | { | ||
64 | int cpu = smp_processor_id(); | ||
65 | |||
66 | if (!cpu) { | ||
67 | /* Setup hpt using timer #3 but do not enable irq for it */ | ||
68 | __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG))); | ||
69 | __raw_writeq(SB1250_HPT_VALUE, | ||
70 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_INIT))); | ||
71 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | ||
72 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG))); | ||
73 | |||
74 | /* | ||
75 | * we need to fill 32 bits, so just use the upper 23 bits and pretend | ||
76 | * the timer is going 512Mhz instead of 1Mhz | ||
77 | */ | ||
78 | mips_hpt_frequency = V_SCD_TIMER_FREQ << SB1250_HPT_SHIFT; | ||
79 | mips_hpt_init = sb1250_hpt_init; | ||
80 | mips_hpt_read = sb1250_hpt_read; | ||
81 | } | ||
82 | } | ||
83 | |||
84 | |||
52 | void sb1250_time_init(void) | 85 | void sb1250_time_init(void) |
53 | { | 86 | { |
54 | int cpu = smp_processor_id(); | 87 | int cpu = smp_processor_id(); |
55 | int irq = K_INT_TIMER_0+cpu; | 88 | int irq = K_INT_TIMER_0+cpu; |
56 | 89 | ||
57 | /* Only have 4 general purpose timers */ | 90 | /* Only have 4 general purpose timers, and we use last one as hpt */ |
58 | if (cpu > 3) { | 91 | if (cpu > 2) { |
59 | BUG(); | 92 | BUG(); |
60 | } | 93 | } |
61 | 94 | ||
62 | if (!cpu) { | ||
63 | /* Use our own gettimeoffset() routine */ | ||
64 | do_gettimeoffset = sb1250_gettimeoffset; | ||
65 | } | ||
66 | |||
67 | sb1250_mask_irq(cpu, irq); | 95 | sb1250_mask_irq(cpu, irq); |
68 | 96 | ||
69 | /* Map the timer interrupt to ip[4] of this cpu */ | 97 | /* Map the timer interrupt to ip[4] of this cpu */ |
@@ -75,10 +103,10 @@ void sb1250_time_init(void) | |||
75 | /* Disable the timer and set up the count */ | 103 | /* Disable the timer and set up the count */ |
76 | __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | 104 | __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); |
77 | #ifdef CONFIG_SIMULATION | 105 | #ifdef CONFIG_SIMULATION |
78 | __raw_writeq(50000 / HZ, | 106 | __raw_writeq((50000 / HZ) - 1, |
79 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); | 107 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); |
80 | #else | 108 | #else |
81 | __raw_writeq(1000000 / HZ, | 109 | __raw_writeq((V_SCD_TIMER_FREQ / HZ) - 1, |
82 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); | 110 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_INIT))); |
83 | #endif | 111 | #endif |
84 | 112 | ||
@@ -103,7 +131,7 @@ void sb1250_timer_interrupt(struct pt_regs *regs) | |||
103 | int cpu = smp_processor_id(); | 131 | int cpu = smp_processor_id(); |
104 | int irq = K_INT_TIMER_0 + cpu; | 132 | int irq = K_INT_TIMER_0 + cpu; |
105 | 133 | ||
106 | /* Reset the timer */ | 134 | /* ACK interrupt */ |
107 | ____raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | 135 | ____raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, |
108 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | 136 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); |
109 | 137 | ||
@@ -122,15 +150,26 @@ void sb1250_timer_interrupt(struct pt_regs *regs) | |||
122 | } | 150 | } |
123 | 151 | ||
124 | /* | 152 | /* |
125 | * We use our own do_gettimeoffset() instead of the generic one, | 153 | * The HPT is free running from SB1250_HPT_VALUE down to 0 then starts over |
126 | * because the generic one does not work for SMP case. | 154 | * again. There's no easy way to set to a specific value so store init value |
127 | * In addition, since we use general timer 0 for system time, | 155 | * in hpt_offset and subtract each time. |
128 | * we can get accurate intra-jiffy offset without calibration. | 156 | * |
157 | * Note: Timer isn't full 32bits so shift it into the upper part making | ||
158 | * it appear to run at a higher frequency. | ||
129 | */ | 159 | */ |
130 | unsigned long sb1250_gettimeoffset(void) | 160 | static unsigned int sb1250_hpt_read(void) |
131 | { | 161 | { |
132 | unsigned long count = | 162 | unsigned int count; |
133 | __raw_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT))); | ||
134 | 163 | ||
135 | return 1000000/HZ - count; | 164 | count = G_SCD_TIMER_CNT(__raw_readq(IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CNT)))); |
136 | } | 165 | |
166 | count = (SB1250_HPT_VALUE - count) << SB1250_HPT_SHIFT; | ||
167 | |||
168 | return count - hpt_offset; | ||
169 | } | ||
170 | |||
171 | static void sb1250_hpt_init(unsigned int count) | ||
172 | { | ||
173 | hpt_offset = count; | ||
174 | return; | ||
175 | } | ||
diff --git a/arch/mips/sibyte/swarm/setup.c b/arch/mips/sibyte/swarm/setup.c index b614ca0ddb69..b661d2425a36 100644 --- a/arch/mips/sibyte/swarm/setup.c +++ b/arch/mips/sibyte/swarm/setup.c | |||
@@ -70,6 +70,12 @@ const char *get_system_type(void) | |||
70 | return "SiByte " SIBYTE_BOARD_NAME; | 70 | return "SiByte " SIBYTE_BOARD_NAME; |
71 | } | 71 | } |
72 | 72 | ||
73 | void __init swarm_time_init(void) | ||
74 | { | ||
75 | /* Setup HPT */ | ||
76 | sb1250_hpt_setup(); | ||
77 | } | ||
78 | |||
73 | void __init swarm_timer_setup(struct irqaction *irq) | 79 | void __init swarm_timer_setup(struct irqaction *irq) |
74 | { | 80 | { |
75 | /* | 81 | /* |
@@ -109,6 +115,7 @@ void __init plat_setup(void) | |||
109 | 115 | ||
110 | panic_timeout = 5; /* For debug. */ | 116 | panic_timeout = 5; /* For debug. */ |
111 | 117 | ||
118 | board_time_init = swarm_time_init; | ||
112 | board_timer_setup = swarm_timer_setup; | 119 | board_timer_setup = swarm_timer_setup; |
113 | board_be_handler = swarm_be_handler; | 120 | board_be_handler = swarm_be_handler; |
114 | 121 | ||