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)

Reply via email to