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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/include/asm-arm/arch-ebsa285/system.h
  3.  *
  4.  *  Copyright (C) 1996-1999 Russell King.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #include <asm/hardware/dec21285.h>
  11. #include <asm/io.h>
  12. #include <asm/hardware.h>
  13. #include <asm/leds.h>
  14. #include <asm/mach-types.h>
  15. static void arch_idle(void)
  16. {
  17. unsigned long start_idle;
  18. start_idle = jiffies;
  19. do {
  20. if (current->need_resched || hlt_counter)
  21. goto slow_out;
  22. cpu_do_idle(IDLE_WAIT_FAST);
  23. } while (time_before(jiffies, start_idle + HZ/50));
  24. cpu_do_idle(IDLE_CLOCK_SLOW);
  25. while (!current->need_resched && !hlt_counter) {
  26. cpu_do_idle(IDLE_WAIT_SLOW);
  27. }
  28. cpu_do_idle(IDLE_CLOCK_FAST);
  29. slow_out:
  30. }
  31. static inline void arch_reset(char mode)
  32. {
  33. if (mode == 's') {
  34. /*
  35.  * Jump into the ROM
  36.  */
  37. cpu_reset(0x41000000);
  38. } else {
  39. if (machine_is_netwinder()) {
  40. /* open up the SuperIO chip
  41.  */
  42. outb(0x87, 0x370);
  43. outb(0x87, 0x370);
  44. /* aux function group 1 (logical device 7)
  45.  */
  46. outb(0x07, 0x370);
  47. outb(0x07, 0x371);
  48. /* set GP16 for WD-TIMER output
  49.  */
  50. outb(0xe6, 0x370);
  51. outb(0x00, 0x371);
  52. /* set a RED LED and toggle WD_TIMER for rebooting
  53.  */
  54. outb(0xc4, 0x338);
  55. } else {
  56. /* 
  57.  * Force the watchdog to do a CPU reset.
  58.  *
  59.  * After making sure that the watchdog is disabled
  60.  * (so we can change the timer registers) we first
  61.  * enable the timer to autoreload itself.  Next, the
  62.  * timer interval is set really short and any
  63.  * current interrupt request is cleared (so we can
  64.  * see an edge transition).  Finally, TIMER4 is
  65.  * enabled as the watchdog.
  66.  */
  67. *CSR_SA110_CNTL &= ~(1 << 13);
  68. *CSR_TIMER4_CNTL = TIMER_CNTL_ENABLE |
  69.    TIMER_CNTL_AUTORELOAD |
  70.    TIMER_CNTL_DIV16;
  71. *CSR_TIMER4_LOAD = 0x2;
  72. *CSR_TIMER4_CLR  = 0;
  73. *CSR_SA110_CNTL |= (1 << 13);
  74. }
  75. }
  76. }