Tue Oct 4 15:23:40 2016 UTC ()
Support locator "cs".


(kiyohara)
diff -r1.33 -r1.34 src/sys/arch/arm/omap/files.omap2
diff -r1.9 -r1.10 src/sys/arch/arm/omap/omap2_gpmc.c

cvs diff -r1.33 -r1.34 src/sys/arch/arm/omap/Attic/files.omap2 (expand / switch to context diff)
--- src/sys/arch/arm/omap/Attic/files.omap2 2016/07/04 15:35:55 1.33
+++ src/sys/arch/arm/omap/Attic/files.omap2 2016/10/04 15:23:40 1.34
@@ -1,4 +1,4 @@
-#	$NetBSD: files.omap2,v 1.33 2016/07/04 15:35:55 kiyohara Exp $
+#	$NetBSD: files.omap2,v 1.34 2016/10/04 15:23:40 kiyohara Exp $
 #
 # Configuration info for Texas Instruments OMAP2/OMAP3 CPU support
 # Based on xscale/files.pxa2x0
@@ -117,7 +117,7 @@
 # General Purpose Memory Controller
 # XXX some addl. chip select config parms may be desired here (e.g. timing)
 # XXX so far we just use the setup established by boot firmware
-device	gpmc { [addr=-1], [size=0], [intr=-1], [mult=1], [nobyteacc=0]
+device	gpmc { [cs=-1], [addr=-1], [size=0], [intr=-1], [mult=1], [nobyteacc=0]
 	      } : bus_space_generic
 attach	gpmc at mainbus
 file	arch/arm/omap/omap2_gpmc.c		gpmc

cvs diff -r1.9 -r1.10 src/sys/arch/arm/omap/Attic/omap2_gpmc.c (expand / switch to context diff)
--- src/sys/arch/arm/omap/Attic/omap2_gpmc.c 2011/07/01 20:30:21 1.9
+++ src/sys/arch/arm/omap/Attic/omap2_gpmc.c 2016/10/04 15:23:40 1.10
@@ -1,7 +1,7 @@
-/*	$Id: omap2_gpmc.c,v 1.9 2011/07/01 20:30:21 dyoung Exp $	*/
+/*	$Id: omap2_gpmc.c,v 1.10 2016/10/04 15:23:40 kiyohara Exp $	*/
 
 /* adapted from: */
-/*	$NetBSD: omap2_gpmc.c,v 1.9 2011/07/01 20:30:21 dyoung Exp $ */
+/*	$NetBSD: omap2_gpmc.c,v 1.10 2016/10/04 15:23:40 kiyohara Exp $ */
 
 
 /*
@@ -102,7 +102,7 @@
 
 #include "opt_omap.h"
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: omap2_gpmc.c,v 1.9 2011/07/01 20:30:21 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: omap2_gpmc.c,v 1.10 2016/10/04 15:23:40 kiyohara Exp $");
 
 #include "locators.h"
 
@@ -278,7 +278,22 @@
 	aa.gpmc_intr = cf->cf_loc[GPMCCF_INTR];
 
 	cs = &sc->sc_csconfig[0];
-	for (i=0; i < GPMC_NCS; i++) {
+	for (i = 0; i < GPMC_NCS; i++) {
+		if (cf->cf_loc[GPMCCF_CS] != GPMCCF_CS_DEFAULT) {
+			if (i != cf->cf_loc[GPMCCF_CS]) {
+				cs++;
+				continue;
+			}
+
+			if (aa.gpmc_addr != GPMCCF_ADDR_DEFAULT
+			&&  aa.gpmc_addr != cs->cs_addr)
+				panic("cs:addr missmatch:"
+				    " cs %d(0x%08lx), addr 0x%08lx\n",
+				    cf->cf_loc[GPMCCF_CS], cs->cs_addr,
+				    aa.gpmc_addr);
+			aa.gpmc_addr = cs->cs_addr;
+		}
+
 		if ((aa.gpmc_addr >= cs->cs_addr)
 		&&  (aa.gpmc_addr < (cs->cs_addr + cs->cs_size))) {
 			/* XXX