|
@@ -24,6 +24,7 @@
|
|
|
|
|
|
#define DEVICE_NOT_AVAILABLE 0
|
|
|
|
|
|
+#define EXYNOS_CPU_NAME "Exynos"
|
|
|
#define EXYNOS4_ADDR_BASE 0x10000000
|
|
|
|
|
|
/* EXYNOS4 */
|
|
@@ -93,29 +94,42 @@ static inline int s5p_get_cpu_rev(void)
|
|
|
|
|
|
static inline void s5p_set_cpu_id(void)
|
|
|
{
|
|
|
- s5p_cpu_id = readl(EXYNOS4_PRO_ID);
|
|
|
- s5p_cpu_id = (0xC000 | ((s5p_cpu_id & 0x00FFF000) >> 12));
|
|
|
-
|
|
|
- /*
|
|
|
- * 0xC200: EXYNOS4210 EVT0
|
|
|
- * 0xC210: EXYNOS4210 EVT1
|
|
|
- */
|
|
|
- if (s5p_cpu_id == 0xC200) {
|
|
|
- s5p_cpu_id |= 0x10;
|
|
|
+ unsigned int pro_id = (readl(EXYNOS4_PRO_ID) & 0x00FFF000) >> 12;
|
|
|
+
|
|
|
+ switch (pro_id) {
|
|
|
+ case 0x200:
|
|
|
+ /* Exynos4210 EVT0 */
|
|
|
+ s5p_cpu_id = 0x4210;
|
|
|
s5p_cpu_rev = 0;
|
|
|
- } else if (s5p_cpu_id == 0xC210) {
|
|
|
- s5p_cpu_rev = 1;
|
|
|
+ break;
|
|
|
+ case 0x210:
|
|
|
+ /* Exynos4210 EVT1 */
|
|
|
+ s5p_cpu_id = 0x4210;
|
|
|
+ break;
|
|
|
+ case 0x412:
|
|
|
+ /* Exynos4412 */
|
|
|
+ s5p_cpu_id = 0x4412;
|
|
|
+ break;
|
|
|
+ case 0x520:
|
|
|
+ /* Exynos5250 */
|
|
|
+ s5p_cpu_id = 0x5250;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static inline char *s5p_get_cpu_name(void)
|
|
|
+{
|
|
|
+ return EXYNOS_CPU_NAME;
|
|
|
+}
|
|
|
+
|
|
|
#define IS_SAMSUNG_TYPE(type, id) \
|
|
|
static inline int cpu_is_##type(void) \
|
|
|
{ \
|
|
|
- return s5p_cpu_id == id ? 1 : 0; \
|
|
|
+ return (s5p_cpu_id >> 12) == id; \
|
|
|
}
|
|
|
|
|
|
-IS_SAMSUNG_TYPE(exynos4, 0xc210)
|
|
|
-IS_SAMSUNG_TYPE(exynos5, 0xc520)
|
|
|
+IS_SAMSUNG_TYPE(exynos4, 0x4)
|
|
|
+IS_SAMSUNG_TYPE(exynos5, 0x5)
|
|
|
|
|
|
#define SAMSUNG_BASE(device, base) \
|
|
|
static inline unsigned int samsung_get_base_##device(void) \
|