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/mm.h> 34#include <linux/sched.h> 35#include <linux/bootmem.h> 36 37#include <asm/addrspace.h> 38#include <asm/bootinfo.h> 39#include <asm/cpu.h> 40#include <asm/tx4927/tx4927.h> 41 42void __init prom_init_cmdline(void) 43{ 44 int argc = (int) fw_arg0; 45 char **argv = (char **) fw_arg1; 46 int i; /* Always ignore the "-c" at argv[0] */ 47 48 /* ignore all built-in args if any f/w args given */ 49 if (argc > 1) { 50 *arcs_cmdline = '\0'; 51 } 52 53 for (i = 1; i < argc; i++) { 54 if (i != 1) { 55 strcat(arcs_cmdline, " "); 56 } 57 strcat(arcs_cmdline, argv[i]); 58 } 59} 60 61void __init prom_init(void) 62{ 63 extern int tx4927_get_mem_size(void); 64 extern char* toshiba_name; 65 int msize; 66 67 prom_init_cmdline(); 68 69 if ((read_c0_prid() & 0xff) == PRID_REV_TX4927) { 70 mips_machtype = MACH_TOSHIBA_RBTX4927; 71 toshiba_name = "TX4927"; 72 } else { 73 mips_machtype = MACH_TOSHIBA_RBTX4937; 74 toshiba_name = "TX4937"; 75 } 76 77 msize = tx4927_get_mem_size(); 78 add_memory_region(0, msize << 20, BOOT_MEM_RAM); 79} 80 81void __init prom_free_prom_memory(void) 82{ 83} 84 85const char *get_system_type(void) 86{ 87 return "Toshiba RBTX4927/RBTX4937"; 88} 89 90char * __init prom_getcmdline(void) 91{ 92 return &(arcs_cmdline[0]); 93} 94 95