ARM: EXYNOS: use chip_id reg in uncompress to select uart base phys
authorDima Zavin <dima@android.com>
Wed, 4 Apr 2012 16:27:37 +0000 (09:27 -0700)
committerKukjin Kim <kgene.kim@samsung.com>
Wed, 4 Apr 2012 16:27:37 +0000 (09:27 -0700)
Signed-off-by: Dima Zavin <dima@android.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>

arch/arm/mach-exynos/include/mach/uncompress.h

index 493f4f3..2979995 100644 (file)
@@ -20,9 +20,24 @@ volatile u8 *uart_base;
 
 #include <plat/uncompress.h>
 
+static unsigned int __raw_readl(unsigned int ptr)
+{
+       return *((volatile unsigned int *)ptr);
+}
+
 static void arch_detect_cpu(void)
 {
-       if (machine_is_smdk5250())
+       u32 chip_id = __raw_readl(EXYNOS_PA_CHIPID);
+
+       /*
+        * product_id is bits 31:12
+        *    bits 23:20 describe the exynosX family
+        *
+        */
+       chip_id >>= 20;
+       chip_id &= 0xf;
+
+       if (chip_id == 0x5)
                uart_base = (volatile u8 *)EXYNOS5_PA_UART + (S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT);
        else
                uart_base = (volatile u8 *)EXYNOS4_PA_UART + (S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT);