/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_prom.c

https://bitbucket.org/evzijst/gittest · C · 97 lines · 51 code · 14 blank · 32 comment · 6 complexity · 96a7352c767840b8cfc447c8e30a3708 MD5 · raw file

  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. const char* toshiba_name_list[] = GROUP_TOSHIBA_NAMES;
  59. extern int tx4927_get_mem_size(void);
  60. extern char* toshiba_name;
  61. int msize;
  62. prom_init_cmdline();
  63. mips_machgroup = MACH_GROUP_TOSHIBA;
  64. if ((read_c0_prid() & 0xff) == PRID_REV_TX4927)
  65. mips_machtype = MACH_TOSHIBA_RBTX4927;
  66. else
  67. mips_machtype = MACH_TOSHIBA_RBTX4937;
  68. toshiba_name = toshiba_name_list[mips_machtype];
  69. msize = tx4927_get_mem_size();
  70. add_memory_region(0, msize << 20, BOOT_MEM_RAM);
  71. }
  72. unsigned long __init prom_free_prom_memory(void)
  73. {
  74. return 0;
  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. }