| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (C) 2005 MIPS Technologies, Inc.  All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  This program is free software; you can distribute it and/or modify it | 
					
						
							|  |  |  |  *  under the terms of the GNU General Public License (Version 2) as | 
					
						
							|  |  |  |  *  published by the Free Software Foundation. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  This program is distributed in the hope it will be useful, but WITHOUT | 
					
						
							|  |  |  |  *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | 
					
						
							|  |  |  |  *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | 
					
						
							|  |  |  |  *  for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  You should have received a copy of the GNU General Public License along | 
					
						
							|  |  |  |  *  with this program; if not, write to the Free Software Foundation, Inc., | 
					
						
							|  |  |  |  *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/init.h>
 | 
					
						
							|  |  |  | #include <linux/string.h>
 | 
					
						
							|  |  |  | #include <linux/kernel.h>
 | 
					
						
							| 
									
										
										
										
											2007-07-10 17:32:56 +01:00
										 |  |  | #include <linux/io.h>
 | 
					
						
							|  |  |  | #include <linux/irq.h>
 | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | #include <linux/ioport.h>
 | 
					
						
							|  |  |  | #include <linux/tty.h>
 | 
					
						
							|  |  |  | #include <linux/serial.h>
 | 
					
						
							|  |  |  | #include <linux/serial_core.h>
 | 
					
						
							| 
									
										
										
										
											2007-07-18 00:49:10 -07:00
										 |  |  | #include <linux/serial_8250.h>
 | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <asm/cpu.h>
 | 
					
						
							|  |  |  | #include <asm/bootinfo.h>
 | 
					
						
							|  |  |  | #include <asm/mips-boards/generic.h>
 | 
					
						
							|  |  |  | #include <asm/mips-boards/prom.h>
 | 
					
						
							|  |  |  | #include <asm/time.h>
 | 
					
						
							|  |  |  | #include <asm/mips-boards/sim.h>
 | 
					
						
							|  |  |  | #include <asm/mips-boards/simint.h>
 | 
					
						
							| 
									
										
										
										
											2011-06-06 01:17:25 +01:00
										 |  |  | #include <asm/smp-ops.h>
 | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void __init serial_init(void); | 
					
						
							| 
									
										
										
										
											2009-09-17 02:25:07 +02:00
										 |  |  | unsigned int _isbonito; | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | const char *get_system_type(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return "MIPSsim"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-18 01:32:22 +01:00
										 |  |  | void __init plat_mem_setup(void) | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | { | 
					
						
							|  |  |  | 	set_io_port_base(0xbfd00000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	serial_init(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-19 12:23:51 +00:00
										 |  |  | extern struct plat_smp_ops ssmtc_smp_ops; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-10 17:32:56 +01:00
										 |  |  | void __init prom_init(void) | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | { | 
					
						
							|  |  |  | 	set_io_port_base(0xbfd00000); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	prom_meminit(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-28 15:27:59 +01:00
										 |  |  | 	if (cpu_has_mipsmt) { | 
					
						
							|  |  |  | 		if (!register_vsmp_smp_ops()) | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-19 12:23:51 +00:00
										 |  |  | #ifdef CONFIG_MIPS_MT_SMTC
 | 
					
						
							|  |  |  | 		register_smp_ops(&ssmtc_smp_ops); | 
					
						
							| 
									
										
										
										
											2011-05-28 15:27:59 +01:00
										 |  |  | 			return; | 
					
						
							| 
									
										
										
										
											2007-11-19 12:23:51 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2011-05-28 15:27:59 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	register_up_smp_ops(); | 
					
						
							| 
									
										
										
										
											2007-11-19 12:23:51 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | static void __init serial_init(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #ifdef CONFIG_SERIAL_8250
 | 
					
						
							|  |  |  | 	struct uart_port s; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	memset(&s, 0, sizeof(s)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	s.iobase = 0x3f8; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* hardware int 4 - the serial int, is CPU int 6
 | 
					
						
							|  |  |  | 	 but poll for now */ | 
					
						
							|  |  |  | 	s.irq =  0; | 
					
						
							| 
									
										
										
										
											2007-07-12 17:41:14 +01:00
										 |  |  | 	s.uartclk = 1843200; | 
					
						
							| 
									
										
										
										
											2006-02-05 10:52:29 +00:00
										 |  |  | 	s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; | 
					
						
							| 
									
										
										
										
											2006-02-05 10:48:10 +00:00
										 |  |  | 	s.iotype = UPIO_PORT; | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 	s.regshift = 0; | 
					
						
							|  |  |  | 	s.timeout = 4; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (early_serial_setup(&s) != 0) { | 
					
						
							| 
									
										
										
										
											2007-03-01 11:56:43 +00:00
										 |  |  | 		printk(KERN_ERR "Serial setup failed!\n"); | 
					
						
							| 
									
										
										
										
											2005-09-30 13:59:37 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | } |