cpu.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/include/asm-arm/arch-omap/cpu.h
  3.  *
  4.  * OMAP cpu type detection
  5.  *
  6.  * Copyright (C) 2004 Nokia Corporation
  7.  *
  8.  * Written by Tony Lindgren <tony.lindgren@nokia.com>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23.  *
  24.  */
  25. #ifndef __ASM_ARCH_OMAP_CPU_H
  26. #define __ASM_ARCH_OMAP_CPU_H
  27. extern unsigned int system_rev;
  28. #define OMAP_DIE_ID_0 0xfffe1800
  29. #define OMAP_DIE_ID_1 0xfffe1804
  30. #define OMAP_PRODUCTION_ID_0 0xfffe2000
  31. #define OMAP_PRODUCTION_ID_1 0xfffe2004
  32. #define OMAP32_ID_0 0xfffed400
  33. #define OMAP32_ID_1 0xfffed404
  34. /*
  35.  * Test if multicore OMAP support is needed
  36.  */
  37. #undef MULTI_OMAP1
  38. #undef MULTI_OMAP2
  39. #undef OMAP_NAME
  40. #ifdef CONFIG_ARCH_OMAP730
  41. # ifdef OMAP_NAME
  42. #  undef  MULTI_OMAP1
  43. #  define MULTI_OMAP1
  44. # else
  45. #  define OMAP_NAME omap730
  46. # endif
  47. #endif
  48. #ifdef CONFIG_ARCH_OMAP1510
  49. # ifdef OMAP_NAME
  50. #  undef  MULTI_OMAP1
  51. #  define MULTI_OMAP1
  52. # else
  53. #  define OMAP_NAME omap1510
  54. # endif
  55. #endif
  56. #ifdef CONFIG_ARCH_OMAP16XX
  57. # ifdef OMAP_NAME
  58. #  undef  MULTI_OMAP1
  59. #  define MULTI_OMAP1
  60. # else
  61. #  define OMAP_NAME omap16xx
  62. # endif
  63. #endif
  64. #ifdef CONFIG_ARCH_OMAP24XX
  65. # if (defined(OMAP_NAME) || defined(MULTI_OMAP1))
  66. #  error "OMAP1 and OMAP2 can't be selected at the same time"
  67. # else
  68. #  undef  MULTI_OMAP2
  69. #  define OMAP_NAME omap24xx
  70. # endif
  71. #endif
  72. /*
  73.  * Macros to group OMAP into cpu classes.
  74.  * These can be used in most places.
  75.  * cpu_is_omap7xx(): True for OMAP730
  76.  * cpu_is_omap15xx(): True for OMAP1510 and OMAP5910
  77.  * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710
  78.  * cpu_is_omap24xx(): True for OMAP2420
  79.  */
  80. #define GET_OMAP_CLASS (system_rev & 0xff)
  81. #define IS_OMAP_CLASS(class, id)
  82. static inline int is_omap ##class (void)
  83. {
  84. return (GET_OMAP_CLASS == (id)) ? 1 : 0;
  85. }
  86. IS_OMAP_CLASS(7xx, 0x07)
  87. IS_OMAP_CLASS(15xx, 0x15)
  88. IS_OMAP_CLASS(16xx, 0x16)
  89. IS_OMAP_CLASS(24xx, 0x24)
  90. #define cpu_is_omap7xx() 0
  91. #define cpu_is_omap15xx() 0
  92. #define cpu_is_omap16xx() 0
  93. #define cpu_is_omap24xx() 0
  94. #if defined(MULTI_OMAP1)
  95. # if defined(CONFIG_ARCH_OMAP730)
  96. #  undef  cpu_is_omap7xx
  97. #  define cpu_is_omap7xx() is_omap7xx()
  98. # endif
  99. # if defined(CONFIG_ARCH_OMAP1510)
  100. #  undef  cpu_is_omap15xx
  101. #  define cpu_is_omap15xx() is_omap15xx()
  102. # endif
  103. # if defined(CONFIG_ARCH_OMAP16XX)
  104. #  undef  cpu_is_omap16xx
  105. #  define cpu_is_omap16xx() is_omap16xx()
  106. # endif
  107. #else
  108. # if defined(CONFIG_ARCH_OMAP730)
  109. #  undef  cpu_is_omap7xx
  110. #  define cpu_is_omap7xx() 1
  111. # endif
  112. # if defined(CONFIG_ARCH_OMAP1510)
  113. #  undef  cpu_is_omap15xx
  114. #  define cpu_is_omap15xx() 1
  115. # endif
  116. # if defined(CONFIG_ARCH_OMAP16XX)
  117. #  undef  cpu_is_omap16xx
  118. #  define cpu_is_omap16xx() 1
  119. # endif
  120. # if defined(CONFIG_ARCH_OMAP24XX)
  121. #  undef  cpu_is_omap24xx
  122. #  define cpu_is_omap24xx() 1
  123. # endif
  124. #endif
  125. /*
  126.  * Macros to detect individual cpu types.
  127.  * These are only rarely needed.
  128.  * cpu_is_omap730(): True for OMAP730
  129.  * cpu_is_omap1510(): True for OMAP1510
  130.  * cpu_is_omap1610(): True for OMAP1610
  131.  * cpu_is_omap1611(): True for OMAP1611
  132.  * cpu_is_omap5912(): True for OMAP5912
  133.  * cpu_is_omap1621(): True for OMAP1621
  134.  * cpu_is_omap1710(): True for OMAP1710
  135.  * cpu_is_omap2420(): True for OMAP2420
  136.  */
  137. #define GET_OMAP_TYPE ((system_rev >> 16) & 0xffff)
  138. #define IS_OMAP_TYPE(type, id)
  139. static inline int is_omap ##type (void)
  140. {
  141. return (GET_OMAP_TYPE == (id)) ? 1 : 0;
  142. }
  143. IS_OMAP_TYPE(730, 0x0730)
  144. IS_OMAP_TYPE(1510, 0x1510)
  145. IS_OMAP_TYPE(1610, 0x1610)
  146. IS_OMAP_TYPE(1611, 0x1611)
  147. IS_OMAP_TYPE(5912, 0x1611)
  148. IS_OMAP_TYPE(1621, 0x1621)
  149. IS_OMAP_TYPE(1710, 0x1710)
  150. IS_OMAP_TYPE(2420, 0x2420)
  151. #define cpu_is_omap730() 0
  152. #define cpu_is_omap1510() 0
  153. #define cpu_is_omap1610() 0
  154. #define cpu_is_omap5912() 0
  155. #define cpu_is_omap1611() 0
  156. #define cpu_is_omap1621() 0
  157. #define cpu_is_omap1710() 0
  158. #define cpu_is_omap2420() 0
  159. #if defined(MULTI_OMAP1)
  160. # if defined(CONFIG_ARCH_OMAP730)
  161. #  undef  cpu_is_omap730
  162. #  define cpu_is_omap730() is_omap730()
  163. # endif
  164. # if defined(CONFIG_ARCH_OMAP1510)
  165. #  undef  cpu_is_omap1510
  166. #  define cpu_is_omap1510() is_omap1510()
  167. # endif
  168. #else
  169. # if defined(CONFIG_ARCH_OMAP730)
  170. #  undef  cpu_is_omap730
  171. #  define cpu_is_omap730() 1
  172. # endif
  173. # if defined(CONFIG_ARCH_OMAP1510)
  174. #  undef  cpu_is_omap1510
  175. #  define cpu_is_omap1510() 1
  176. # endif
  177. #endif
  178. /*
  179.  * Whether we have MULTI_OMAP1 or not, we still need to distinguish
  180.  * between 1611B/5912 and 1710.
  181.  */
  182. #if defined(CONFIG_ARCH_OMAP16XX)
  183. # undef  cpu_is_omap1610
  184. # undef  cpu_is_omap1611
  185. # undef  cpu_is_omap5912
  186. # undef  cpu_is_omap1621
  187. # undef  cpu_is_omap1710
  188. # define cpu_is_omap1610() is_omap1610()
  189. # define cpu_is_omap1611() is_omap1611()
  190. # define cpu_is_omap5912() is_omap5912()
  191. # define cpu_is_omap1621() is_omap1621()
  192. # define cpu_is_omap1710() is_omap1710()
  193. #endif
  194. #if defined(CONFIG_ARCH_OMAP2420)
  195. #  undef  cpu_is_omap2420
  196. #  define cpu_is_omap2420() 1
  197. #endif
  198. #endif