aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/au1000/common/setup.c6
-rw-r--r--arch/mips/au1000/common/time.c29
-rw-r--r--arch/mips/au1000/pb1200/board_setup.c9
-rw-r--r--arch/mips/kernel/branch.c5
-rw-r--r--arch/mips/kernel/traps.c8
-rw-r--r--arch/mips/math-emu/cp1emu.c19
-rw-r--r--arch/mips/math-emu/dsemul.c12
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c19
-rw-r--r--drivers/char/Kconfig14
-rw-r--r--include/asm-mips/compat.h3
-rw-r--r--include/asm-mips/mach-tx49xx/ioremap.h3
11 files changed, 27 insertions, 100 deletions
diff --git a/arch/mips/au1000/common/setup.c b/arch/mips/au1000/common/setup.c
index fdf2b85a69c8..a95b37773196 100644
--- a/arch/mips/au1000/common/setup.c
+++ b/arch/mips/au1000/common/setup.c
@@ -103,12 +103,6 @@ void __init plat_mem_setup(void)
103 } 103 }
104#endif 104#endif
105 105
106#ifdef CONFIG_FB_XPERT98
107 if ((argptr = strstr(argptr, "video=")) == NULL) {
108 argptr = prom_getcmdline();
109 strcat(argptr, " video=atyfb:1024x768-8@70");
110 }
111#endif
112 106
113#if defined(CONFIG_SOUND_AU1X00) && !defined(CONFIG_SOC_AU1000) 107#if defined(CONFIG_SOUND_AU1X00) && !defined(CONFIG_SOC_AU1000)
114 /* au1000 does not support vra, au1500 and au1100 do */ 108 /* au1000 does not support vra, au1500 and au1100 do */
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c
index fa1c62f05515..8fc29982d700 100644
--- a/arch/mips/au1000/common/time.c
+++ b/arch/mips/au1000/common/time.c
@@ -203,11 +203,7 @@ wakeup_counter0_set(int ticks)
203/* I haven't found anyone that doesn't use a 12 MHz source clock, 203/* I haven't found anyone that doesn't use a 12 MHz source clock,
204 * but just in case..... 204 * but just in case.....
205 */ 205 */
206#ifdef CONFIG_AU1000_SRC_CLK
207#define AU1000_SRC_CLK CONFIG_AU1000_SRC_CLK
208#else
209#define AU1000_SRC_CLK 12000000 206#define AU1000_SRC_CLK 12000000
210#endif
211 207
212/* 208/*
213 * We read the real processor speed from the PLL. This is important 209 * We read the real processor speed from the PLL. This is important
@@ -247,33 +243,8 @@ unsigned long cal_r4koff(void)
247 au_writel (0, SYS_TOYWRITE); 243 au_writel (0, SYS_TOYWRITE);
248 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); 244 while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S);
249 245
250#if defined(CONFIG_AU1000_USE32K)
251 {
252 unsigned long start, end, count;
253
254 start = au_readl(SYS_RTCREAD);
255 start += 2;
256 /* wait for the beginning of a new tick
257 */
258 while (au_readl(SYS_RTCREAD) < start);
259
260 /* Start r4k counter.
261 */
262 write_c0_count(0);
263
264 /* Wait 0.5 seconds.
265 */
266 end = start + (32768 / trim_divide)/2;
267
268 while (end > au_readl(SYS_RTCREAD));
269
270 count = read_c0_count();
271 cpu_speed = count * 2;
272 }
273#else
274 cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * 246 cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) *
275 AU1000_SRC_CLK; 247 AU1000_SRC_CLK;
276#endif
277 } 248 }
278 else { 249 else {
279 /* The 32KHz oscillator isn't running, so assume there 250 /* The 32KHz oscillator isn't running, so assume there
diff --git a/arch/mips/au1000/pb1200/board_setup.c b/arch/mips/au1000/pb1200/board_setup.c
index 043302b7fe58..eea2092bde8d 100644
--- a/arch/mips/au1000/pb1200/board_setup.c
+++ b/arch/mips/au1000/pb1200/board_setup.c
@@ -131,14 +131,7 @@ void __init board_setup(void)
131 /* The Pb1200 development board uses external MUX for PSC0 to 131 /* The Pb1200 development board uses external MUX for PSC0 to
132 support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI 132 support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI
133 */ 133 */
134#if defined(CONFIG_AU1XXX_PSC_SPI) && defined(CONFIG_I2C_AU1550) 134#ifdef CONFIG_I2C_AU1550
135 #error I2C and SPI are mutually exclusive. Both are physically connected to PSC0.\
136 Refer to Pb1200/Db1200 documentation.
137#elif defined( CONFIG_AU1XXX_PSC_SPI )
138 bcsr->resets |= BCSR_RESETS_PCS0MUX;
139 /*Hard Coding Value to enable Temp Sensors [bit 14] Value for SOC Au1200. Pls refer documentation*/
140 bcsr->resets =0x900f;
141#elif defined( CONFIG_I2C_AU1550 )
142 bcsr->resets &= (~BCSR_RESETS_PCS0MUX); 135 bcsr->resets &= (~BCSR_RESETS_PCS0MUX);
143#endif 136#endif
144 au_sync(); 137 au_sync();
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c
index 76fd3f22c766..6b5df8bfab85 100644
--- a/arch/mips/kernel/branch.c
+++ b/arch/mips/kernel/branch.c
@@ -22,7 +22,8 @@
22 */ 22 */
23int __compute_return_epc(struct pt_regs *regs) 23int __compute_return_epc(struct pt_regs *regs)
24{ 24{
25 unsigned int *addr, bit, fcr31, dspcontrol; 25 unsigned int __user *addr;
26 unsigned int bit, fcr31, dspcontrol;
26 long epc; 27 long epc;
27 union mips_instruction insn; 28 union mips_instruction insn;
28 29
@@ -33,7 +34,7 @@ int __compute_return_epc(struct pt_regs *regs)
33 /* 34 /*
34 * Read the instruction 35 * Read the instruction
35 */ 36 */
36 addr = (unsigned int *) epc; 37 addr = (unsigned int __user *) epc;
37 if (__get_user(insn.word, addr)) { 38 if (__get_user(insn.word, addr)) {
38 force_sig(SIGSEGV, current); 39 force_sig(SIGSEGV, current);
39 return -EFAULT; 40 return -EFAULT;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 5e9fa83c4ef0..37c562c4c817 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -131,7 +131,7 @@ static void show_stacktrace(struct task_struct *task, struct pt_regs *regs)
131 const int field = 2 * sizeof(unsigned long); 131 const int field = 2 * sizeof(unsigned long);
132 long stackdata; 132 long stackdata;
133 int i; 133 int i;
134 unsigned long *sp = (unsigned long *)regs->regs[29]; 134 unsigned long __user *sp = (unsigned long __user *)regs->regs[29];
135 135
136 printk("Stack :"); 136 printk("Stack :");
137 i = 0; 137 i = 0;
@@ -187,7 +187,7 @@ void dump_stack(void)
187 187
188EXPORT_SYMBOL(dump_stack); 188EXPORT_SYMBOL(dump_stack);
189 189
190void show_code(unsigned int *pc) 190static void show_code(unsigned int __user *pc)
191{ 191{
192 long i; 192 long i;
193 193
@@ -305,7 +305,7 @@ void show_registers(struct pt_regs *regs)
305 printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n", 305 printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n",
306 current->comm, current->pid, current_thread_info(), current); 306 current->comm, current->pid, current_thread_info(), current);
307 show_stacktrace(current, regs); 307 show_stacktrace(current, regs);
308 show_code((unsigned int *) regs->cp0_epc); 308 show_code((unsigned int __user *) regs->cp0_epc);
309 printk("\n"); 309 printk("\n");
310} 310}
311 311
@@ -865,7 +865,7 @@ asmlinkage void do_mcheck(struct pt_regs *regs)
865 dump_tlb_all(); 865 dump_tlb_all();
866 } 866 }
867 867
868 show_code((unsigned int *) regs->cp0_epc); 868 show_code((unsigned int __user *) regs->cp0_epc);
869 869
870 /* 870 /*
871 * Some chips may have other causes of machine check (e.g. SB1 871 * Some chips may have other causes of machine check (e.g. SB1
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index d7f05b0abe17..17419e11ecad 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -205,7 +205,7 @@ static int isBranchInstr(mips_instruction * i)
205static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) 205static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
206{ 206{
207 mips_instruction ir; 207 mips_instruction ir;
208 void * emulpc, *contpc; 208 unsigned long emulpc, contpc;
209 unsigned int cond; 209 unsigned int cond;
210 210
211 if (get_user(ir, (mips_instruction __user *) xcp->cp0_epc)) { 211 if (get_user(ir, (mips_instruction __user *) xcp->cp0_epc)) {
@@ -230,7 +230,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
230 * Linux MIPS branch emulator operates on context, updating the 230 * Linux MIPS branch emulator operates on context, updating the
231 * cp0_epc. 231 * cp0_epc.
232 */ 232 */
233 emulpc = (void *) (xcp->cp0_epc + 4); /* Snapshot emulation target */ 233 emulpc = xcp->cp0_epc + 4; /* Snapshot emulation target */
234 234
235 if (__compute_return_epc(xcp)) { 235 if (__compute_return_epc(xcp)) {
236#ifdef CP1DBG 236#ifdef CP1DBG
@@ -244,12 +244,12 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
244 return SIGBUS; 244 return SIGBUS;
245 } 245 }
246 /* __compute_return_epc() will have updated cp0_epc */ 246 /* __compute_return_epc() will have updated cp0_epc */
247 contpc = (void *) xcp->cp0_epc; 247 contpc = xcp->cp0_epc;
248 /* In order not to confuse ptrace() et al, tweak context */ 248 /* In order not to confuse ptrace() et al, tweak context */
249 xcp->cp0_epc = (unsigned long) emulpc - 4; 249 xcp->cp0_epc = emulpc - 4;
250 } else { 250 } else {
251 emulpc = (void *) xcp->cp0_epc; 251 emulpc = xcp->cp0_epc;
252 contpc = (void *) (xcp->cp0_epc + 4); 252 contpc = xcp->cp0_epc + 4;
253 } 253 }
254 254
255 emul: 255 emul:
@@ -427,8 +427,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
427 * instruction 427 * instruction
428 */ 428 */
429 xcp->cp0_epc += 4; 429 xcp->cp0_epc += 4;
430 contpc = (void *) 430 contpc = (xcp->cp0_epc +
431 (xcp->cp0_epc +
432 (MIPSInst_SIMM(ir) << 2)); 431 (MIPSInst_SIMM(ir) << 2));
433 432
434 if (get_user(ir, 433 if (get_user(ir,
@@ -462,7 +461,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
462 * Single step the non-cp1 461 * Single step the non-cp1
463 * instruction in the dslot 462 * instruction in the dslot
464 */ 463 */
465 return mips_dsemul(xcp, ir, (unsigned long) contpc); 464 return mips_dsemul(xcp, ir, contpc);
466 } 465 }
467 else { 466 else {
468 /* branch not taken */ 467 /* branch not taken */
@@ -521,7 +520,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
521 } 520 }
522 521
523 /* we did it !! */ 522 /* we did it !! */
524 xcp->cp0_epc = (unsigned long) contpc; 523 xcp->cp0_epc = contpc;
525 xcp->cp0_cause &= ~CAUSEF_BD; 524 xcp->cp0_cause &= ~CAUSEF_BD;
526 525
527 return 0; 526 return 0;
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c
index ea6ba7248489..653e325849e4 100644
--- a/arch/mips/math-emu/dsemul.c
+++ b/arch/mips/math-emu/dsemul.c
@@ -54,8 +54,7 @@ struct emuframe {
54int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) 54int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc)
55{ 55{
56 extern asmlinkage void handle_dsemulret(void); 56 extern asmlinkage void handle_dsemulret(void);
57 mips_instruction *dsemul_insns; 57 struct emuframe __user *fr;
58 struct emuframe *fr;
59 int err; 58 int err;
60 59
61 if (ir == 0) { /* a nop is easy */ 60 if (ir == 0) { /* a nop is easy */
@@ -87,8 +86,8 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc)
87 */ 86 */
88 87
89 /* Ensure that the two instructions are in the same cache line */ 88 /* Ensure that the two instructions are in the same cache line */
90 dsemul_insns = (mips_instruction *) ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); 89 fr = (struct emuframe __user *)
91 fr = (struct emuframe *) dsemul_insns; 90 ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7);
92 91
93 /* Verify that the stack pointer is not competely insane */ 92 /* Verify that the stack pointer is not competely insane */
94 if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) 93 if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe))))
@@ -113,12 +112,13 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc)
113 112
114int do_dsemulret(struct pt_regs *xcp) 113int do_dsemulret(struct pt_regs *xcp)
115{ 114{
116 struct emuframe *fr; 115 struct emuframe __user *fr;
117 unsigned long epc; 116 unsigned long epc;
118 u32 insn, cookie; 117 u32 insn, cookie;
119 int err = 0; 118 int err = 0;
120 119
121 fr = (struct emuframe *) (xcp->cp0_epc - sizeof(mips_instruction)); 120 fr = (struct emuframe __user *)
121 (xcp->cp0_epc - sizeof(mips_instruction));
122 122
123 /* 123 /*
124 * If we can't even access the area, something is very wrong, but we'll 124 * If we can't even access the area, something is very wrong, but we'll
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index a0c11efeaeeb..40c7c3eeafaf 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -138,7 +138,6 @@ extern void toshiba_rbtx4927_irq_setup(void);
138char *prom_getcmdline(void); 138char *prom_getcmdline(void);
139 139
140#ifdef CONFIG_PCI 140#ifdef CONFIG_PCI
141#define CONFIG_TX4927BUG_WORKAROUND
142#undef TX4927_SUPPORT_COMMAND_IO 141#undef TX4927_SUPPORT_COMMAND_IO
143#undef TX4927_SUPPORT_PCI_66 142#undef TX4927_SUPPORT_PCI_66
144int tx4927_cpu_clock = 100000000; /* 100MHz */ 143int tx4927_cpu_clock = 100000000; /* 100MHz */
@@ -669,15 +668,7 @@ void tx4927_pci_setup(void)
669 668
670 /* PCI->GB mappings (MEM 16MB) -not used */ 669 /* PCI->GB mappings (MEM 16MB) -not used */
671 tx4927_pcicptr->p2gm1plbase = 0xffffffff; 670 tx4927_pcicptr->p2gm1plbase = 0xffffffff;
672#ifdef CONFIG_TX4927BUG_WORKAROUND
673 /*
674 * TX4927-PCIC-BUG: P2GM1PUBASE must be 0
675 * if P2GM0PUBASE was 0.
676 */
677 tx4927_pcicptr->p2gm1pubase = 0;
678#else
679 tx4927_pcicptr->p2gm1pubase = 0xffffffff; 671 tx4927_pcicptr->p2gm1pubase = 0xffffffff;
680#endif
681 tx4927_pcicptr->p2gmgbase[1] = 0; 672 tx4927_pcicptr->p2gmgbase[1] = 0;
682 673
683 /* PCI->GB mappings (MEM 1MB) -not used */ 674 /* PCI->GB mappings (MEM 1MB) -not used */
@@ -910,16 +901,6 @@ void __init toshiba_rbtx4927_setup(void)
910 if (tx4927_ccfg_toeon) 901 if (tx4927_ccfg_toeon)
911 tx4927_ccfgptr->ccfg |= TX4927_CCFG_TOE; 902 tx4927_ccfgptr->ccfg |= TX4927_CCFG_TOE;
912 903
913 /* SDRAMC fixup */
914#ifdef CONFIG_TX4927BUG_WORKAROUND
915 /*
916 * TX4927-BUG: INF 01-01-18/ BUG 01-01-22
917 * G-bus timeout error detection is incorrect
918 */
919 if (tx4927_ccfg_toeon)
920 tx4927_sdramcptr->tr |= 0x02000000; /* RCD:3tck */
921#endif
922
923 tx4927_pci_setup(); 904 tx4927_pci_setup();
924 if (tx4927_using_backplane == 1) 905 if (tx4927_using_backplane == 1)
925 printk("backplane board IS installed\n"); 906 printk("backplane board IS installed\n");
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index a31c6d2c061f..f6648682b43a 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -374,20 +374,6 @@ config ISTALLION
374 To compile this driver as a module, choose M here: the 374 To compile this driver as a module, choose M here: the
375 module will be called istallion. 375 module will be called istallion.
376 376
377config AU1000_UART
378 bool "Enable Au1000 UART Support"
379 depends on SERIAL_NONSTANDARD && MIPS
380 help
381 If you have an Alchemy AU1000 processor (MIPS based) and you want
382 to use serial ports, say Y. Otherwise, say N.
383
384config AU1000_SERIAL_CONSOLE
385 bool "Enable Au1000 serial console"
386 depends on AU1000_UART
387 help
388 If you have an Alchemy AU1000 processor (MIPS based) and you want
389 to use a console on a serial port, say Y. Otherwise, say N.
390
391config SERIAL_DEC 377config SERIAL_DEC
392 bool "DECstation serial support" 378 bool "DECstation serial support"
393 depends on MACH_DECSTATION 379 depends on MACH_DECSTATION
diff --git a/include/asm-mips/compat.h b/include/asm-mips/compat.h
index 432653d7ae09..67c3f8ec0303 100644
--- a/include/asm-mips/compat.h
+++ b/include/asm-mips/compat.h
@@ -132,7 +132,8 @@ typedef u32 compat_uptr_t;
132 132
133static inline void __user *compat_ptr(compat_uptr_t uptr) 133static inline void __user *compat_ptr(compat_uptr_t uptr)
134{ 134{
135 return (void __user *)(long)uptr; 135 /* cast to a __user pointer via "unsigned long" makes sparse happy */
136 return (void __user *)(unsigned long)(long)uptr;
136} 137}
137 138
138static inline compat_uptr_t ptr_to_compat(void __user *uptr) 139static inline compat_uptr_t ptr_to_compat(void __user *uptr)
diff --git a/include/asm-mips/mach-tx49xx/ioremap.h b/include/asm-mips/mach-tx49xx/ioremap.h
index 88cf546719b8..1e7beae72229 100644
--- a/include/asm-mips/mach-tx49xx/ioremap.h
+++ b/include/asm-mips/mach-tx49xx/ioremap.h
@@ -36,7 +36,8 @@ static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size,
36 36
37static inline int plat_iounmap(const volatile void __iomem *addr) 37static inline int plat_iounmap(const volatile void __iomem *addr)
38{ 38{
39 return (unsigned long)addr >= (unsigned long)(int)TXX9_DIRECTMAP_BASE; 39 return (unsigned long)addr >=
40 (unsigned long)(int)(TXX9_DIRECTMAP_BASE & 0xffffffff);
40} 41}
41 42
42#endif /* __ASM_MACH_TX49XX_IOREMAP_H */ 43#endif /* __ASM_MACH_TX49XX_IOREMAP_H */