gemini.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.gemini.h 1.5 05/17/01 18:14:24 cort
  3.  */
  4. /*
  5.  *  include/asm-ppc/gemini.h
  6.  *
  7.  *
  8.  *  Onboard registers and descriptions for Synergy Microsystems' 
  9.  *  "Gemini" boards.
  10.  *
  11.  */
  12. #ifdef __KERNEL__
  13. #ifndef __PPC_GEMINI_H
  14. #define __PPC_GEMINI_H
  15. /*  Registers  */
  16. #define GEMINI_SERIAL_B     (0xffeffb00)
  17. #define GEMINI_SERIAL_A     (0xffeffb08)
  18. #define GEMINI_USWITCH      (0xffeffd00)
  19. #define GEMINI_BREV         (0xffeffe00)
  20. #define GEMINI_BECO         (0xffeffe08)
  21. #define GEMINI_FEAT         (0xffeffe10)
  22. #define GEMINI_BSTAT        (0xffeffe18)
  23. #define GEMINI_CPUSTAT      (0xffeffe20)
  24. #define GEMINI_L2CFG        (0xffeffe30)
  25. #define GEMINI_MEMCFG       (0xffeffe38)
  26. #define GEMINI_FLROM        (0xffeffe40)
  27. #define GEMINI_P0PCI        (0xffeffe48)
  28. #define GEMINI_FLWIN        (0xffeffe50)
  29. #define GEMINI_P0INTMASK    (0xffeffe60)
  30. #define GEMINI_P0INTAP      (0xffeffe68)
  31. #define GEMINI_PCIERR       (0xffeffe70)
  32. #define GEMINI_LEDBASE      (0xffeffe80)
  33. #define GEMINI_RTC          (0xffe9fff8)
  34. #define GEMINI_LEDS         8
  35. #define GEMINI_SWITCHES     8
  36. /* Flash ROM bit definitions */
  37. #define GEMINI_FLS_WEN      (1<<0)
  38. #define GEMINI_FLS_JMP      (1<<6)
  39. #define GEMINI_FLS_BOOT     (1<<7)
  40. /* Memory bit definitions */
  41. #define GEMINI_MEM_TYPE_MASK 0xc0
  42. #define GEMINI_MEM_SIZE_MASK 0x38
  43. #define GEMINI_MEM_BANK_MASK 0x07
  44. /* L2 cache bit definitions */
  45. #define GEMINI_L2_SIZE_MASK  0xc0
  46. #define GEMINI_L2_RATIO_MASK 0x03
  47. /* Timebase register bit definitons */
  48. #define GEMINI_TIMEB0_EN     (1<<0)
  49. #define GEMINI_TIMEB1_EN     (1<<1)
  50. #define GEMINI_TIMEB2_EN     (1<<2)
  51. #define GEMINI_TIMEB3_EN     (1<<3)
  52. /* CPU status bit definitions */
  53. #define GEMINI_CPU_ID_MASK   0x03
  54. #define GEMINI_CPU_COUNT_MASK 0x0c
  55. #define GEMINI_CPU0_HALTED   (1<<4)
  56. #define GEMINI_CPU1_HALTED   (1<<5)
  57. #define GEMINI_CPU2_HALTED   (1<<6)
  58. #define GEMINI_CPU3_HALTED   (1<<7)
  59. /* Board status bit definitions */
  60. #define GEMINI_BRD_FAIL      (1<<0)   /* FAIL led is lit */
  61. #define GEMINI_BRD_BUS_MASK  0x0c     /* PowerPC bus speed */
  62. /* Board family/feature bit descriptions */
  63. #define GEMINI_FEAT_HAS_FLASH (1<<0)
  64. #define GEMINI_FEAT_HAS_ETH   (1<<1)
  65. #define GEMINI_FEAT_HAS_SCSI  (1<<2)
  66. #define GEMINI_FEAT_HAS_P0    (1<<3)
  67. #define GEMINI_FEAT_FAM_MASK  0xf0
  68. /* Mod/ECO bit definitions */
  69. #define GEMINI_ECO_LEVEL_MASK 0x0f
  70. #define GEMINI_MOD_MASK       0xf0
  71. /* Type/revision bit definitions */
  72. #define GEMINI_REV_MASK       0x0f
  73. #define GEMINI_TYPE_MASK      0xf0
  74. /* User switch definitions */
  75. #define GEMINI_SWITCH_VERBOSE    1     /* adds "debug" to boot cmd line */
  76. #define GEMINI_SWITCH_SINGLE_USER 7    /* boots into "single-user" mode */
  77. #define SGS_RTC_CONTROL  0
  78. #define SGS_RTC_SECONDS  1
  79. #define SGS_RTC_MINUTES  2
  80. #define SGS_RTC_HOURS    3
  81. #define SGS_RTC_DAY      4
  82. #define SGS_RTC_DAY_OF_MONTH 5
  83. #define SGS_RTC_MONTH    6
  84. #define SGS_RTC_YEAR     7
  85. #define SGS_RTC_SET  0x80
  86. #define SGS_RTC_IS_STOPPED 0x80
  87. #define GRACKLE_CONFIG_ADDR_ADDR  (0xfec00000)
  88. #define GRACKLE_CONFIG_DATA_ADDR  (0xfee00000)
  89. #define GEMINI_BOOT_INIT  (0xfff00100)
  90. #ifndef __ASSEMBLY__
  91. static inline void grackle_write( unsigned long addr, unsigned long data )
  92. {
  93.   __asm__ __volatile__(
  94.   " stwbrx %1, 0, %0n 
  95.     syncn 
  96.     stwbrx %3, 0, %2n 
  97.     sync "
  98.   : /* no output */
  99.   : "r" (GRACKLE_CONFIG_ADDR_ADDR), "r" (addr),
  100.     "r" (GRACKLE_CONFIG_DATA_ADDR), "r" (data));
  101. }
  102. static inline unsigned long grackle_read( unsigned long addr )
  103. {
  104.   unsigned long val;
  105.   __asm__ __volatile__(
  106.   " stwbrx %1, 0, %2n 
  107.     syncn 
  108.     lwbrx %0, 0, %3n 
  109.     sync "
  110.   : "=r" (val)
  111.   : "r" (addr), "r" (GRACKLE_CONFIG_ADDR_ADDR),
  112.     "r" (GRACKLE_CONFIG_DATA_ADDR));
  113.   return val;
  114. }
  115. static inline void gemini_led_on( int led )
  116. {
  117.   if (led >= 0 && led < GEMINI_LEDS)
  118.     *(unsigned char *)(GEMINI_LEDBASE + (led<<3)) = 1;
  119. }
  120. static inline void gemini_led_off(int led)
  121. {
  122.   if (led >= 0 && led < GEMINI_LEDS)
  123.     *(unsigned char *)(GEMINI_LEDBASE + (led<<3)) = 0;
  124. }
  125. static inline int gemini_led_val(int led)
  126. {
  127.   int val = 0;
  128.   if (led >= 0 && led < GEMINI_LEDS)
  129.     val = *(unsigned char *)(GEMINI_LEDBASE + (led<<3));
  130.   return (val & 0x1);
  131. }
  132. /* returns processor id from the board */
  133. static inline int gemini_processor(void)
  134. {
  135.   unsigned char cpu = *(unsigned char *)(GEMINI_CPUSTAT);
  136.   return (int) ((cpu == 0) ? 4 : (cpu & GEMINI_CPU_ID_MASK));
  137. }
  138. extern void _gemini_reboot(void);
  139. extern void gemini_prom_init(void);
  140. extern void gemini_init_l2(void);
  141. #endif /* __ASSEMBLY__ */
  142. #endif
  143. #endif /* __KERNEL__ */