Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  Author: Nicolas Pitre
0004  *  Created:    Jun 15, 2001
0005  *  Copyright:  MontaVista Software Inc.
0006  */
0007 
0008 #ifndef __SOC_PXA_CPU_H
0009 #define __SOC_PXA_CPU_H
0010 
0011 #ifdef CONFIG_ARM
0012 #include <asm/cputype.h>
0013 #endif
0014 
0015 /*
0016  *   CPU     Stepping     CPU_ID         JTAG_ID
0017  *
0018  *  PXA210  B0  0x69052922  0x2926C013
0019  *  PXA210  B1  0x69052923  0x3926C013
0020  *  PXA210  B2  0x69052924  0x4926C013
0021  *  PXA210  C0  0x69052D25  0x5926C013
0022  *
0023  *  PXA250  A0  0x69052100  0x09264013
0024  *  PXA250  A1  0x69052101  0x19264013
0025  *  PXA250  B0  0x69052902  0x29264013
0026  *  PXA250  B1  0x69052903  0x39264013
0027  *  PXA250  B2  0x69052904  0x49264013
0028  *  PXA250  C0  0x69052D05  0x59264013
0029  *
0030  *  PXA255  A0  0x69052D06  0x69264013
0031  *
0032  *  PXA26x  A0  0x69052903  0x39264013
0033  *  PXA26x  B0  0x69052D05  0x59264013
0034  *
0035  *  PXA27x  A0  0x69054110  0x09265013
0036  *  PXA27x  A1  0x69054111  0x19265013
0037  *  PXA27x  B0  0x69054112  0x29265013
0038  *  PXA27x  B1  0x69054113  0x39265013
0039  *  PXA27x  C0  0x69054114  0x49265013
0040  *  PXA27x  C5  0x69054117  0x79265013
0041  *
0042  *  PXA30x  A0  0x69056880  0x0E648013
0043  *  PXA30x  A1  0x69056881  0x1E648013
0044  *  PXA31x  A0  0x69056890  0x0E649013
0045  *  PXA31x  A1  0x69056891  0x1E649013
0046  *  PXA31x  A2  0x69056892  0x2E649013
0047  *  PXA32x  B1  0x69056825  0x5E642013
0048  *  PXA32x  B2  0x69056826  0x6E642013
0049  *
0050  *  PXA930  B0  0x69056835  0x5E643013
0051  *  PXA930  B1  0x69056837  0x7E643013
0052  *  PXA930  B2  0x69056838  0x8E643013
0053  *
0054  *  PXA935  A0  0x56056931  0x1E653013
0055  *  PXA935  B0  0x56056936  0x6E653013
0056  *  PXA935  B1  0x56056938  0x8E653013
0057  */
0058 #ifdef CONFIG_PXA25x
0059 #define __cpu_is_pxa210(id)             \
0060     ({                      \
0061         unsigned int _id = (id) & 0xf3f0;   \
0062         _id == 0x2120;              \
0063     })
0064 
0065 #define __cpu_is_pxa250(id)             \
0066     ({                      \
0067         unsigned int _id = (id) & 0xf3ff;   \
0068         _id <= 0x2105;              \
0069     })
0070 
0071 #define __cpu_is_pxa255(id)             \
0072     ({                      \
0073         unsigned int _id = (id) & 0xffff;   \
0074         _id == 0x2d06;              \
0075     })
0076 
0077 #define __cpu_is_pxa25x(id)             \
0078     ({                      \
0079         unsigned int _id = (id) & 0xf300;   \
0080         _id == 0x2100;              \
0081     })
0082 #else
0083 #define __cpu_is_pxa210(id) (0)
0084 #define __cpu_is_pxa250(id) (0)
0085 #define __cpu_is_pxa255(id) (0)
0086 #define __cpu_is_pxa25x(id) (0)
0087 #endif
0088 
0089 #ifdef CONFIG_PXA27x
0090 #define __cpu_is_pxa27x(id)             \
0091     ({                      \
0092         unsigned int _id = (id) >> 4 & 0xfff;   \
0093         _id == 0x411;               \
0094     })
0095 #else
0096 #define __cpu_is_pxa27x(id) (0)
0097 #endif
0098 
0099 #ifdef CONFIG_CPU_PXA300
0100 #define __cpu_is_pxa300(id)             \
0101     ({                      \
0102         unsigned int _id = (id) >> 4 & 0xfff;   \
0103         _id == 0x688;               \
0104      })
0105 #else
0106 #define __cpu_is_pxa300(id) (0)
0107 #endif
0108 
0109 #ifdef CONFIG_CPU_PXA310
0110 #define __cpu_is_pxa310(id)             \
0111     ({                      \
0112         unsigned int _id = (id) >> 4 & 0xfff;   \
0113         _id == 0x689;               \
0114      })
0115 #else
0116 #define __cpu_is_pxa310(id) (0)
0117 #endif
0118 
0119 #ifdef CONFIG_CPU_PXA320
0120 #define __cpu_is_pxa320(id)             \
0121     ({                      \
0122         unsigned int _id = (id) >> 4 & 0xfff;   \
0123         _id == 0x603 || _id == 0x682;       \
0124      })
0125 #else
0126 #define __cpu_is_pxa320(id) (0)
0127 #endif
0128 
0129 #ifdef CONFIG_CPU_PXA930
0130 #define __cpu_is_pxa930(id)             \
0131     ({                      \
0132         unsigned int _id = (id) >> 4 & 0xfff;   \
0133         _id == 0x683;               \
0134      })
0135 #else
0136 #define __cpu_is_pxa930(id) (0)
0137 #endif
0138 
0139 #ifdef CONFIG_CPU_PXA935
0140 #define __cpu_is_pxa935(id)             \
0141     ({                      \
0142         unsigned int _id = (id) >> 4 & 0xfff;   \
0143         _id == 0x693;               \
0144      })
0145 #else
0146 #define __cpu_is_pxa935(id) (0)
0147 #endif
0148 
0149 #define cpu_is_pxa210()                 \
0150     ({                      \
0151         __cpu_is_pxa210(read_cpuid_id());   \
0152     })
0153 
0154 #define cpu_is_pxa250()                 \
0155     ({                      \
0156         __cpu_is_pxa250(read_cpuid_id());   \
0157     })
0158 
0159 #define cpu_is_pxa255()                                 \
0160     ({                                              \
0161         __cpu_is_pxa255(read_cpuid_id());       \
0162     })
0163 
0164 #define cpu_is_pxa25x()                 \
0165     ({                      \
0166         __cpu_is_pxa25x(read_cpuid_id());   \
0167     })
0168 
0169 #define cpu_is_pxa27x()                 \
0170     ({                      \
0171         __cpu_is_pxa27x(read_cpuid_id());   \
0172     })
0173 
0174 #define cpu_is_pxa300()                 \
0175     ({                      \
0176         __cpu_is_pxa300(read_cpuid_id());   \
0177      })
0178 
0179 #define cpu_is_pxa310()                 \
0180     ({                      \
0181         __cpu_is_pxa310(read_cpuid_id());   \
0182      })
0183 
0184 #define cpu_is_pxa320()                 \
0185     ({                      \
0186         __cpu_is_pxa320(read_cpuid_id());   \
0187      })
0188 
0189 #define cpu_is_pxa930()                 \
0190     ({                      \
0191         __cpu_is_pxa930(read_cpuid_id());   \
0192      })
0193 
0194 #define cpu_is_pxa935()                 \
0195     ({                      \
0196         __cpu_is_pxa935(read_cpuid_id());   \
0197      })
0198 
0199 
0200 
0201 /*
0202  * CPUID Core Generation Bit
0203  * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
0204  */
0205 #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
0206 #define __cpu_is_pxa2xx(id)             \
0207     ({                      \
0208         unsigned int _id = (id) >> 13 & 0x7;    \
0209         _id <= 0x2;             \
0210      })
0211 #else
0212 #define __cpu_is_pxa2xx(id) (0)
0213 #endif
0214 
0215 #ifdef CONFIG_PXA3xx
0216 #define __cpu_is_pxa3xx(id)             \
0217     ({                      \
0218         __cpu_is_pxa300(id)         \
0219             || __cpu_is_pxa310(id)      \
0220             || __cpu_is_pxa320(id)      \
0221             || __cpu_is_pxa93x(id);     \
0222      })
0223 #else
0224 #define __cpu_is_pxa3xx(id) (0)
0225 #endif
0226 
0227 #if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
0228 #define __cpu_is_pxa93x(id)             \
0229     ({                      \
0230         __cpu_is_pxa930(id)         \
0231             || __cpu_is_pxa935(id);     \
0232      })
0233 #else
0234 #define __cpu_is_pxa93x(id) (0)
0235 #endif
0236 
0237 #define cpu_is_pxa2xx()                 \
0238     ({                      \
0239         __cpu_is_pxa2xx(read_cpuid_id());   \
0240      })
0241 
0242 #define cpu_is_pxa3xx()                 \
0243     ({                      \
0244         __cpu_is_pxa3xx(read_cpuid_id());   \
0245      })
0246 
0247 #define cpu_is_pxa93x()                 \
0248     ({                      \
0249         __cpu_is_pxa93x(read_cpuid_id());   \
0250      })
0251 
0252 #endif