toshiba_rbtx4927_prom.c 2.6 KB

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