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,