[PATCH] ARM: EXYNOS: fix uncompress.h and debug-macro.S for EXYNOS5440
Kukjin Kim
kgene.kim at samsung.com
Thu Dec 27 13:27:14 EST 2012
This patch fixes uart base address for uncompress and debug-macro
on EXYNOS5440.
Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
---
arch/arm/mach-exynos/include/mach/debug-macro.S | 25 +++++++++++++++++------
arch/arm/mach-exynos/include/mach/map.h | 1 +
arch/arm/mach-exynos/include/mach/uncompress.h | 20 +++++++++++-------
3 files changed, 33 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-exynos/include/mach/debug-macro.S b/arch/arm/mach-exynos/include/mach/debug-macro.S
index e0c86ea..69e3e52 100644
--- a/arch/arm/mach-exynos/include/mach/debug-macro.S
+++ b/arch/arm/mach-exynos/include/mach/debug-macro.S
@@ -21,12 +21,25 @@
*/
.macro addruart, rp, rv, tmp
- mrc p15, 0, \tmp, c0, c0, 0
- and \tmp, \tmp, #0xf0
- teq \tmp, #0xf0 @@ A15
- ldreq \rp, =EXYNOS5_PA_UART
- movne \rp, #EXYNOS4_PA_UART @@ EXYNOS4
- ldr \rv, =S3C_VA_UART
+ mov \rp, #0x10000000
+ ldr \rp, [\rp, #0]
+ and \rp, \rp, #0x0ff00000
+ teq \rp, #0x03200000 @ EXYNOS4210, EXYNOS4212
+ beq 4f
+ teq \rp, #0x04400000 @ EXYNOS4412
+ beq 4f
+ teq \rp, #0x03500000 @ EXYNOS5250
+ beq 5f
+ b 54f
+
+4: mov \rp, #EXYNOS4_PA_UART
+ b 99f
+5: mov \rp, #EXYNOS5_PA_UART
+ b 99f
+54: mov \rp, #EXYNOS5440_PA_UART
+ b 99f
+99: ldr \rv, =S3C_VA_UART
+
#if CONFIG_DEBUG_S3C_UART != 0
add \rp, \rp, #(0x10000 * CONFIG_DEBUG_S3C_UART)
add \rv, \rv, #(0x10000 * CONFIG_DEBUG_S3C_UART)
diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h
index 1df6abb..cba083e 100644
--- a/arch/arm/mach-exynos/include/mach/map.h
+++ b/arch/arm/mach-exynos/include/mach/map.h
@@ -203,6 +203,7 @@
#define EXYNOS4_PA_UART 0x13800000
#define EXYNOS5_PA_UART 0x12C00000
+#define EXYNOS5440_PA_UART 0x000B0000
#define EXYNOS4_PA_VP 0x12C00000
#define EXYNOS4_PA_MIXER 0x12C10000
diff --git a/arch/arm/mach-exynos/include/mach/uncompress.h b/arch/arm/mach-exynos/include/mach/uncompress.h
index 2979995..ace9be2 100644
--- a/arch/arm/mach-exynos/include/mach/uncompress.h
+++ b/arch/arm/mach-exynos/include/mach/uncompress.h
@@ -31,16 +31,22 @@ static void arch_detect_cpu(void)
/*
* product_id is bits 31:12
- * bits 23:20 describe the exynosX family
- *
+ * bits 27: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);
+ chip_id &= 0xff;
+
+ if (chip_id == 0x32 || chip_id == 0x44)
+ /* EXYNOS4210, EXYNOS4212 and EXYNOS4412 */
+ uart_base = (volatile u8 *)EXYNOS4_PA_UART;
+ else if (chip_id == 0x35)
+ /* EXYNOS5250 */
+ uart_base = (volatile u8 *)EXYNOS5_PA_UART;
else
- uart_base = (volatile u8 *)EXYNOS4_PA_UART + (S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT);
+ /* EXYNOS5440 */
+ uart_base = (volatile u8 *)EXYNOS5440_PA_UART;
+
+ uart_base += S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT;
/*
* For preventing FIFO overrun or infinite loop of UART console,
--
1.7.10.4
More information about the linux-arm-kernel
mailing list