cpu.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Author: Nicolas Pitre
  4. * Created: Jun 15, 2001
  5. * Copyright: MontaVista Software Inc.
  6. */
  7. #ifndef __SOC_PXA_CPU_H
  8. #define __SOC_PXA_CPU_H
  9. #ifdef CONFIG_ARM
  10. #include <asm/cputype.h>
  11. #endif
  12. /*
  13. * CPU Stepping CPU_ID JTAG_ID
  14. *
  15. * PXA210 B0 0x69052922 0x2926C013
  16. * PXA210 B1 0x69052923 0x3926C013
  17. * PXA210 B2 0x69052924 0x4926C013
  18. * PXA210 C0 0x69052D25 0x5926C013
  19. *
  20. * PXA250 A0 0x69052100 0x09264013
  21. * PXA250 A1 0x69052101 0x19264013
  22. * PXA250 B0 0x69052902 0x29264013
  23. * PXA250 B1 0x69052903 0x39264013
  24. * PXA250 B2 0x69052904 0x49264013
  25. * PXA250 C0 0x69052D05 0x59264013
  26. *
  27. * PXA255 A0 0x69052D06 0x69264013
  28. *
  29. * PXA26x A0 0x69052903 0x39264013
  30. * PXA26x B0 0x69052D05 0x59264013
  31. *
  32. * PXA27x A0 0x69054110 0x09265013
  33. * PXA27x A1 0x69054111 0x19265013
  34. * PXA27x B0 0x69054112 0x29265013
  35. * PXA27x B1 0x69054113 0x39265013
  36. * PXA27x C0 0x69054114 0x49265013
  37. * PXA27x C5 0x69054117 0x79265013
  38. *
  39. * PXA30x A0 0x69056880 0x0E648013
  40. * PXA30x A1 0x69056881 0x1E648013
  41. * PXA31x A0 0x69056890 0x0E649013
  42. * PXA31x A1 0x69056891 0x1E649013
  43. * PXA31x A2 0x69056892 0x2E649013
  44. * PXA32x B1 0x69056825 0x5E642013
  45. * PXA32x B2 0x69056826 0x6E642013
  46. *
  47. * PXA930 B0 0x69056835 0x5E643013
  48. * PXA930 B1 0x69056837 0x7E643013
  49. * PXA930 B2 0x69056838 0x8E643013
  50. *
  51. * PXA935 A0 0x56056931 0x1E653013
  52. * PXA935 B0 0x56056936 0x6E653013
  53. * PXA935 B1 0x56056938 0x8E653013
  54. */
  55. #ifdef CONFIG_PXA25x
  56. #define __cpu_is_pxa210(id) \
  57. ({ \
  58. unsigned int _id = (id) & 0xf3f0; \
  59. _id == 0x2120; \
  60. })
  61. #define __cpu_is_pxa250(id) \
  62. ({ \
  63. unsigned int _id = (id) & 0xf3ff; \
  64. _id <= 0x2105; \
  65. })
  66. #define __cpu_is_pxa255(id) \
  67. ({ \
  68. unsigned int _id = (id) & 0xffff; \
  69. _id == 0x2d06; \
  70. })
  71. #define __cpu_is_pxa25x(id) \
  72. ({ \
  73. unsigned int _id = (id) & 0xf300; \
  74. _id == 0x2100; \
  75. })
  76. #else
  77. #define __cpu_is_pxa210(id) (0)
  78. #define __cpu_is_pxa250(id) (0)
  79. #define __cpu_is_pxa255(id) (0)
  80. #define __cpu_is_pxa25x(id) (0)
  81. #endif
  82. #ifdef CONFIG_PXA27x
  83. #define __cpu_is_pxa27x(id) \
  84. ({ \
  85. unsigned int _id = (id) >> 4 & 0xfff; \
  86. _id == 0x411; \
  87. })
  88. #else
  89. #define __cpu_is_pxa27x(id) (0)
  90. #endif
  91. #ifdef CONFIG_CPU_PXA300
  92. #define __cpu_is_pxa300(id) \
  93. ({ \
  94. unsigned int _id = (id) >> 4 & 0xfff; \
  95. _id == 0x688; \
  96. })
  97. #else
  98. #define __cpu_is_pxa300(id) (0)
  99. #endif
  100. #ifdef CONFIG_CPU_PXA310
  101. #define __cpu_is_pxa310(id) \
  102. ({ \
  103. unsigned int _id = (id) >> 4 & 0xfff; \
  104. _id == 0x689; \
  105. })
  106. #else
  107. #define __cpu_is_pxa310(id) (0)
  108. #endif
  109. #ifdef CONFIG_CPU_PXA320
  110. #define __cpu_is_pxa320(id) \
  111. ({ \
  112. unsigned int _id = (id) >> 4 & 0xfff; \
  113. _id == 0x603 || _id == 0x682; \
  114. })
  115. #else
  116. #define __cpu_is_pxa320(id) (0)
  117. #endif
  118. #ifdef CONFIG_CPU_PXA930
  119. #define __cpu_is_pxa930(id) \
  120. ({ \
  121. unsigned int _id = (id) >> 4 & 0xfff; \
  122. _id == 0x683; \
  123. })
  124. #else
  125. #define __cpu_is_pxa930(id) (0)
  126. #endif
  127. #ifdef CONFIG_CPU_PXA935
  128. #define __cpu_is_pxa935(id) \
  129. ({ \
  130. unsigned int _id = (id) >> 4 & 0xfff; \
  131. _id == 0x693; \
  132. })
  133. #else
  134. #define __cpu_is_pxa935(id) (0)
  135. #endif
  136. #define cpu_is_pxa210() \
  137. ({ \
  138. __cpu_is_pxa210(read_cpuid_id()); \
  139. })
  140. #define cpu_is_pxa250() \
  141. ({ \
  142. __cpu_is_pxa250(read_cpuid_id()); \
  143. })
  144. #define cpu_is_pxa255() \
  145. ({ \
  146. __cpu_is_pxa255(read_cpuid_id()); \
  147. })
  148. #define cpu_is_pxa25x() \
  149. ({ \
  150. __cpu_is_pxa25x(read_cpuid_id()); \
  151. })
  152. #define cpu_is_pxa27x() \
  153. ({ \
  154. __cpu_is_pxa27x(read_cpuid_id()); \
  155. })
  156. #define cpu_is_pxa300() \
  157. ({ \
  158. __cpu_is_pxa300(read_cpuid_id()); \
  159. })
  160. #define cpu_is_pxa310() \
  161. ({ \
  162. __cpu_is_pxa310(read_cpuid_id()); \
  163. })
  164. #define cpu_is_pxa320() \
  165. ({ \
  166. __cpu_is_pxa320(read_cpuid_id()); \
  167. })
  168. #define cpu_is_pxa930() \
  169. ({ \
  170. __cpu_is_pxa930(read_cpuid_id()); \
  171. })
  172. #define cpu_is_pxa935() \
  173. ({ \
  174. __cpu_is_pxa935(read_cpuid_id()); \
  175. })
  176. /*
  177. * CPUID Core Generation Bit
  178. * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
  179. */
  180. #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
  181. #define __cpu_is_pxa2xx(id) \
  182. ({ \
  183. unsigned int _id = (id) >> 13 & 0x7; \
  184. _id <= 0x2; \
  185. })
  186. #else
  187. #define __cpu_is_pxa2xx(id) (0)
  188. #endif
  189. #ifdef CONFIG_PXA3xx
  190. #define __cpu_is_pxa3xx(id) \
  191. ({ \
  192. __cpu_is_pxa300(id) \
  193. || __cpu_is_pxa310(id) \
  194. || __cpu_is_pxa320(id) \
  195. || __cpu_is_pxa93x(id); \
  196. })
  197. #else
  198. #define __cpu_is_pxa3xx(id) (0)
  199. #endif
  200. #if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
  201. #define __cpu_is_pxa93x(id) \
  202. ({ \
  203. __cpu_is_pxa930(id) \
  204. || __cpu_is_pxa935(id); \
  205. })
  206. #else
  207. #define __cpu_is_pxa93x(id) (0)
  208. #endif
  209. #define cpu_is_pxa2xx() \
  210. ({ \
  211. __cpu_is_pxa2xx(read_cpuid_id()); \
  212. })
  213. #define cpu_is_pxa3xx() \
  214. ({ \
  215. __cpu_is_pxa3xx(read_cpuid_id()); \
  216. })
  217. #define cpu_is_pxa93x() \
  218. ({ \
  219. __cpu_is_pxa93x(read_cpuid_id()); \
  220. })
  221. #endif