setup.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Setup pointers to hardware dependent routines.
  3.  *
  4.  * This file is subject to the terms and conditions of the GNU General Public
  5.  * License.  See the file "COPYING" in the main directory of this archive
  6.  * for more details.
  7.  *
  8.  * Copyright (C) 1996, 1997 by Ralf Baechle
  9.  * Copyright (C) 2001 by Liam Davies (ldavies@agile.tv)
  10.  *
  11.  */
  12. #include <linux/config.h>
  13. #include <linux/interrupt.h>
  14. #include <linux/pci.h>
  15. #include <linux/mc146818rtc.h>
  16. #include <linux/init.h>
  17. #include <linux/ide.h>
  18. #include <asm/bootinfo.h>
  19. #include <asm/time.h>
  20. #include <asm/io.h>
  21. #include <asm/irq.h>
  22. #include <asm/cobalt/cobalt.h>
  23. #include <asm/pci.h>
  24. #include <asm/processor.h>
  25. #include <asm/reboot.h>
  26. #include <asm/traps.h>
  27. extern void cobalt_machine_restart(char *command);
  28. extern void cobalt_machine_halt(void);
  29. extern void cobalt_machine_power_off(void);
  30. extern struct rtc_ops std_rtc_ops;
  31. extern struct ide_ops std_ide_ops;
  32. char arcs_cmdline[CL_SIZE] = {
  33.  "console=ttyS0,115200 "
  34. #ifdef CONFIG_IP_PNP
  35.  "ip=on "
  36. #endif
  37. #ifdef CONFIG_ROOT_NFS
  38.  "root=/dev/nfs "
  39. #else
  40.  "root=/dev/hda1 "
  41. #endif
  42.  };
  43. const char *get_system_type(void)
  44. {
  45. return "MIPS Cobalt";
  46. }
  47. #define GALILEO_T0_VAL 0xb4000850
  48. #define GALILEO_TIMER_CTRL 0xb4000864
  49. #define GALILEO_CPU_MASK 0xb4000c1c
  50. #define GALILEO_ENTC0 0x01
  51. #define GALILEO_SELTC0 0x02
  52. static void __init cobalt_time_init(void)
  53. {
  54. rtc_ops = &std_rtc_ops;
  55. }
  56. static void __init cobalt_timer_setup(struct irqaction *irq)
  57. {
  58. /* Load timer value for 150 Hz */
  59. volatile unsigned long *timer_reg = (volatile unsigned long *)GALILEO_T0_VAL;
  60. *timer_reg = 500000;
  61. /* Register our timer interrupt */
  62. setup_irq(COBALT_TIMER_IRQ, irq);
  63. /* Enable timer ints */
  64. *((volatile unsigned long *) GALILEO_TIMER_CTRL) =
  65. (unsigned long) (GALILEO_ENTC0 | GALILEO_SELTC0);
  66. /* Unmask timer int */
  67. *((volatile unsigned long *) GALILEO_CPU_MASK) = (unsigned long) 0x00000100;
  68. }
  69. void __init bus_error_init(void) { /* nothing */ }
  70. void __init cobalt_setup(void)
  71. {
  72. _machine_restart = cobalt_machine_restart;
  73. _machine_halt = cobalt_machine_halt;
  74. _machine_power_off = cobalt_machine_power_off;
  75. board_time_init = cobalt_time_init;
  76. board_timer_setup = cobalt_timer_setup;
  77. #ifdef CONFIG_BLK_DEV_IDE
  78. ide_ops = &std_ide_ops;
  79. #endif
  80.         set_io_port_base(0xb0000000);
  81. /*
  82.  * This is a prom style console. We just poke at the
  83.  *  UART to make it talk.
  84.  * Only use this console if you really screw up and can't
  85.  *  get to the stage of setting up a real serial console.
  86.  */
  87. /*ns16550_setup_console();*/
  88. }
  89. /* Prom init. We read our one and only communication with the
  90.     firmware. Grab the amount of installed memory */
  91. void __init prom_init(int argc)
  92. {
  93. mips_machgroup = MACH_GROUP_COBALT;
  94. add_memory_region(0x0, argc & 0x7fffffff, BOOT_MEM_RAM);
  95. }
  96. void __init prom_free_prom_memory(void)
  97. {
  98. /* Nothing to do! */
  99. }