Module Name:    src
Committed By:   jmcneill
Date:           Mon Dec 22 00:07:24 UTC 2014

Modified Files:
        src/sys/arch/arm/allwinner: awin_board.c awin_io.c awin_reg.h
            awin_var.h
        src/sys/arch/evbarm/awin: awin_start.S

Log Message:
read chip ID from SRAM ver reg on A80; the chip ID is 0x1639


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/arm/allwinner/awin_board.c \
    src/sys/arch/arm/allwinner/awin_var.h
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/arm/allwinner/awin_io.c
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/arm/allwinner/awin_reg.h
cvs rdiff -u -r1.8 -r1.9 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/arm/allwinner/awin_board.c
diff -u src/sys/arch/arm/allwinner/awin_board.c:1.33 src/sys/arch/arm/allwinner/awin_board.c:1.34
--- src/sys/arch/arm/allwinner/awin_board.c:1.33	Sun Dec  7 18:32:13 2014
+++ src/sys/arch/arm/allwinner/awin_board.c	Mon Dec 22 00:07:24 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: awin_board.c,v 1.33 2014/12/07 18:32:13 jmcneill Exp $	*/
+/*	$NetBSD: awin_board.c,v 1.34 2014/12/22 00:07:24 jmcneill Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.33 2014/12/07 18:32:13 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_board.c,v 1.34 2014/12/22 00:07:24 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -59,6 +59,7 @@ __KERNEL_RCSID(1, "$NetBSD: awin_board.c
 
 bus_space_handle_t awin_core_bsh;
 #if defined(ALLWINNER_A80)
+bus_space_handle_t awin_core2_bsh;
 bus_space_handle_t awin_rcpus_bsh;
 #endif
 
@@ -194,6 +195,11 @@ awin_bootstrap(vaddr_t iobase, vaddr_t u
 	KASSERT(awin_core_bsh == iobase);
 
 #ifdef ALLWINNER_A80
+	error = bus_space_map(&awin_bs_tag, AWIN_A80_CORE2_PBASE,
+	    AWIN_A80_CORE2_SIZE, 0, &awin_core2_bsh);
+	if (error)
+		panic("%s: failed to map awin %s registers: %d",
+		    __func__, "core2", error);
 	error = bus_space_map(&awin_bs_tag, AWIN_A80_RCPUS_PBASE,
 	    AWIN_A80_RCPUS_SIZE, 0, &awin_rcpus_bsh);
 	if (error)
@@ -301,25 +307,26 @@ uint16_t
 awin_chip_id(void)
 {
 #if defined(ALLWINNER_A80)
-	return AWIN_CHIP_ID_A80;
+	bus_space_handle_t bsh = awin_core2_bsh;
 #else
+	bus_space_handle_t bsh = awin_core_bsh;
+#endif
 	static uint16_t chip_id = 0;
 	uint32_t ver;
 
 	if (!chip_id) {
-		ver = bus_space_read_4(&awin_bs_tag, awin_core_bsh,
+		ver = bus_space_read_4(&awin_bs_tag, bsh,
 		    AWIN_SRAM_OFFSET + AWIN_SRAM_VER_REG);
 		ver |= AWIN_SRAM_VER_R_EN;
-		bus_space_write_4(&awin_bs_tag, awin_core_bsh,
+		bus_space_write_4(&awin_bs_tag, bsh,
 		    AWIN_SRAM_OFFSET + AWIN_SRAM_VER_REG, ver);
-		ver = bus_space_read_4(&awin_bs_tag, awin_core_bsh,
+		ver = bus_space_read_4(&awin_bs_tag, bsh,
 		    AWIN_SRAM_OFFSET + AWIN_SRAM_VER_REG);
 
 		chip_id = __SHIFTOUT(ver, AWIN_SRAM_VER_KEY_FIELD);
 	}
 
 	return chip_id;
-#endif
 }
 
 const char *
Index: src/sys/arch/arm/allwinner/awin_var.h
diff -u src/sys/arch/arm/allwinner/awin_var.h:1.33 src/sys/arch/arm/allwinner/awin_var.h:1.34
--- src/sys/arch/arm/allwinner/awin_var.h:1.33	Sun Dec  7 18:32:13 2014
+++ src/sys/arch/arm/allwinner/awin_var.h	Mon Dec 22 00:07:24 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_var.h,v 1.33 2014/12/07 18:32:13 jmcneill Exp $ */
+/* $NetBSD: awin_var.h,v 1.34 2014/12/22 00:07:24 jmcneill Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -94,6 +94,7 @@ extern struct bus_space awin_bs_tag;
 extern struct bus_space awin_a4x_bs_tag;
 extern bus_space_handle_t awin_core_bsh;
 #if defined(ALLWINNER_A80)
+extern bus_space_handle_t awin_core2_bsh;
 extern bus_space_handle_t awin_rcpus_bsh;
 #endif
 extern struct arm32_bus_dma_tag awin_dma_tag;
@@ -117,7 +118,7 @@ void	awin_cpu_hatch(struct cpu_info *);
 #define AWIN_CHIP_ID_A31	AWIN_SRAM_VER_KEY_A31
 #define AWIN_CHIP_ID_A23	AWIN_SRAM_VER_KEY_A23
 #define AWIN_CHIP_ID_A20	AWIN_SRAM_VER_KEY_A20
-#define AWIN_CHIP_ID_A80	0xff80	/* fake; no chip ID register */
+#define AWIN_CHIP_ID_A80	AWIN_SRAM_VER_KEY_A80
 uint16_t awin_chip_id(void);
 const char *awin_chip_name(void);
 

Index: src/sys/arch/arm/allwinner/awin_io.c
diff -u src/sys/arch/arm/allwinner/awin_io.c:1.40 src/sys/arch/arm/allwinner/awin_io.c:1.41
--- src/sys/arch/arm/allwinner/awin_io.c:1.40	Sun Dec 21 17:40:17 2014
+++ src/sys/arch/arm/allwinner/awin_io.c	Mon Dec 22 00:07:24 2014
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.40 2014/12/21 17:40:17 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.41 2014/12/22 00:07:24 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -228,13 +228,12 @@ awinio_attach(device_t parent, device_t 
 	switch (awin_chip_id()) {
 #ifdef ALLWINNER_A80
 	case AWIN_CHIP_ID_A80:
+		sc->sc_a80_core2_bsh = awin_core2_bsh;
 		sc->sc_a80_rcpus_bsh = awin_rcpus_bsh;
 		bus_space_subregion(sc->sc_bst, sc->sc_bsh,
 		    AWIN_A80_CCU_SCLK_OFFSET, 0x1000, &sc->sc_ccm_bsh);
 		bus_space_map(sc->sc_bst, AWIN_A80_USB_PBASE,
 		    AWIN_A80_USB_SIZE, 0, &sc->sc_a80_usb_bsh);
-		bus_space_map(sc->sc_bst, AWIN_A80_CORE2_PBASE,
-		    AWIN_A80_CORE2_SIZE, 0, &sc->sc_a80_core2_bsh);
 		break;
 #endif
 	default:

Index: src/sys/arch/arm/allwinner/awin_reg.h
diff -u src/sys/arch/arm/allwinner/awin_reg.h:1.75 src/sys/arch/arm/allwinner/awin_reg.h:1.76
--- src/sys/arch/arm/allwinner/awin_reg.h:1.75	Sun Dec 21 17:37:40 2014
+++ src/sys/arch/arm/allwinner/awin_reg.h	Mon Dec 22 00:07:24 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_reg.h,v 1.75 2014/12/21 17:37:40 jmcneill Exp $ */
+/* $NetBSD: awin_reg.h,v 1.76 2014/12/22 00:07:24 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -185,6 +185,7 @@
 #define AWIN_SRAM_VER_KEY_A10		0x1623
 #define AWIN_SRAM_VER_KEY_A13		0x1625
 #define AWIN_SRAM_VER_KEY_A31		0x1633
+#define AWIN_SRAM_VER_KEY_A80		0x1639
 #define AWIN_SRAM_VER_KEY_A23		0x1650
 #define AWIN_SRAM_VER_KEY_A20		0x1651
 

Index: src/sys/arch/evbarm/awin/awin_start.S
diff -u src/sys/arch/evbarm/awin/awin_start.S:1.8 src/sys/arch/evbarm/awin/awin_start.S:1.9
--- src/sys/arch/evbarm/awin/awin_start.S:1.8	Thu Dec 11 23:35:11 2014
+++ src/sys/arch/evbarm/awin/awin_start.S	Mon Dec 22 00:07:24 2014
@@ -41,7 +41,7 @@
 #include <arm/allwinner/awin_reg.h>
 #include <evbarm/awin/platform.h>  
 
-RCSID("$NetBSD: awin_start.S,v 1.8 2014/12/11 23:35:11 jmcneill Exp $")
+RCSID("$NetBSD: awin_start.S,v 1.9 2014/12/22 00:07:24 jmcneill Exp $")
 
 #if defined(VERBOSE_INIT_ARM)
 #define	XPUTC(n)	mov r0, n; bl xputc
@@ -590,6 +590,16 @@ ASEND(a80_mpinit)
 		L1_S_PROTO_armv7 | L1_S_APv7_KRW | L1_S_V6_XN)
 
 #if defined(ALLWINNER_A80)
+	/* Map AWIN CORE2 */
+	MMU_INIT(AWIN_A80_CORE2_VBASE, AWIN_A80_CORE2_PBASE,
+		(AWIN_A80_CORE2_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
+		L1_S_PROTO_armv7 | L1_S_APv7_KRW | L1_S_V6_XN)
+
+	/* Map AWIN CORE2 */
+	MMU_INIT(AWIN_A80_CORE2_PBASE, AWIN_A80_CORE2_PBASE,
+		(AWIN_A80_CORE2_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
+		L1_S_PROTO_armv7 | L1_S_APv7_KRW | L1_S_V6_XN)
+
 	/* Map AWIN RCPUS (for PIO L-N, PRCM) */
 	MMU_INIT(AWIN_A80_RCPUS_VBASE, AWIN_A80_RCPUS_PBASE,
 		(AWIN_A80_RCPUS_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,

Reply via email to