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,