Module Name: src
Committed By: matt
Date: Wed Nov 5 17:46:51 UTC 2014
Modified Files:
src/sys/arch/evbarm/awin: awin_start.S
Log Message:
Only look at the ID register if we are configured for multiple SoCs.
Make sure that the ID register is dealt with correctly for BE as well.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/evbarm/awin/awin_start.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/evbarm/awin/awin_start.S
diff -u src/sys/arch/evbarm/awin/awin_start.S:1.5 src/sys/arch/evbarm/awin/awin_start.S:1.6
--- src/sys/arch/evbarm/awin/awin_start.S:1.5 Thu Oct 30 01:15:30 2014
+++ src/sys/arch/evbarm/awin/awin_start.S Wed Nov 5 17:46:51 2014
@@ -41,7 +41,7 @@
#include <arm/allwinner/awin_reg.h>
#include <evbarm/awin/platform.h>
-RCSID("$NetBSD: awin_start.S,v 1.5 2014/10/30 01:15:30 jmcneill Exp $")
+RCSID("$NetBSD: awin_start.S,v 1.6 2014/11/05 17:46:51 matt Exp $")
#if defined(VERBOSE_INIT_ARM)
#define XPUTC(n) mov r0, n; bl xputc
@@ -151,26 +151,43 @@ _C_LABEL(awin_start):
// Make sure the cache is flushed out to RAM for the other CPUs
bl _C_LABEL(armv7_dcache_wbinv_all)
+#if defined(ALLWINNER_A20) + defined(ALLWINNER_A31) + defined(ALLWINNER_A80) > 1
// Read SoC ID
movw r5, #:lower16:(AWIN_CORE_PBASE+AWIN_SRAM_OFFSET)
movt r5, #:upper16:(AWIN_CORE_PBASE+AWIN_SRAM_OFFSET)
ldr r1, [r5, #AWIN_SRAM_VER_REG]
- orr r1, r1, AWIN_SRAM_VER_R_EN
+#ifdef __ARMEB__
+ orr r1, r1, #(AWIN_SRAM_VER_R_EN << 8) # it's bit 15
+#else
+ orr r1, r1, #AWIN_SRAM_VER_R_EN
+#endif
str r1, [r5, #AWIN_SRAM_VER_REG]
dsb
ldr r1, [r5, #AWIN_SRAM_VER_REG]
+#ifdef __ARMEB__
+ rev r1, r1
+#endif
lsr r1, r1, #16
+#endif /* ALLWINNER_A20 + ALLWINNER_A31 + ALLWINNER_A80 > 1 */
// MP init based on SoC ID
#if defined(ALLWINNER_A20)
+# if defined(ALLWINNER_A31) || defined(ALLWINNER_A80)
movw r0, #AWIN_SRAM_VER_KEY_A20
cmp r1, r0
bleq a20_mpinit
+# else
+ bl a20_mpinit
+# endif
#endif
#if defined(ALLWINNER_A31)
+# if defined(ALLWINNER_A20) || defined(ALLWINNER_A80)
movw r0, #AWIN_SRAM_VER_KEY_A31
cmp r1, r0
bleq a31_mpinit
+# else
+ bl a31_mpinit
+# endif
#endif
XPUTC2(#62)