1 /* 2 * rbtx4927 specific prom routines 3 * 4 * Author: MontaVista Software, Inc. 5 * source@mvista.com 6 * 7 * Copyright 2001-2002 MontaVista Software Inc. 8 * 9 * Copyright (C) 2004 MontaVista Software Inc. 10 * Author: Manish Lachwani, mlachwani@mvista.com 11 * 12 * This program is free software; you can redistribute it and/or modify it 13 * under the terms of the GNU General Public License as published by the 14 * Free Software Foundation; either version 2 of the License, or (at your 15 * option) any later version. 16 * 17 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 26 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * You should have received a copy of the GNU General Public License along 29 * with this program; if not, write to the Free Software Foundation, Inc., 30 * 675 Mass Ave, Cambridge, MA 02139, USA. 31 */ 32 #include <linux/init.h> 33 #include <linux/string.h> 34 #include <asm/bootinfo.h> 35 #include <asm/cpu.h> 36 #include <asm/mipsregs.h> 37 #include <asm/txx9/tx4927.h> 38 39 void __init prom_init_cmdline(void) 40 { 41 int argc = (int) fw_arg0; 42 char **argv = (char **) fw_arg1; 43 int i; /* Always ignore the "-c" at argv[0] */ 44 45 /* ignore all built-in args if any f/w args given */ 46 if (argc > 1) { 47 *arcs_cmdline = '\0'; 48 } 49 50 for (i = 1; i < argc; i++) { 51 if (i != 1) { 52 strcat(arcs_cmdline, " "); 53 } 54 strcat(arcs_cmdline, argv[i]); 55 } 56 } 57 58 void __init prom_init(void) 59 { 60 extern int tx4927_get_mem_size(void); 61 extern char* toshiba_name; 62 int msize; 63 64 prom_init_cmdline(); 65 66 if ((read_c0_prid() & 0xff) == PRID_REV_TX4927) { 67 mips_machtype = MACH_TOSHIBA_RBTX4927; 68 toshiba_name = "TX4927"; 69 } else { 70 mips_machtype = MACH_TOSHIBA_RBTX4937; 71 toshiba_name = "TX4937"; 72 } 73 74 msize = tx4927_get_mem_size(); 75 add_memory_region(0, msize << 20, BOOT_MEM_RAM); 76 } 77 78 void __init prom_free_prom_memory(void) 79 { 80 } 81 82 const char *get_system_type(void) 83 { 84 return "Toshiba RBTX4927/RBTX4937"; 85 } 86 87 char * __init prom_getcmdline(void) 88 { 89 return &(arcs_cmdline[0]); 90 } 91 92