Module Name:    src
Committed By:   matt
Date:           Sun Jul 15 08:44:57 UTC 2012

Modified Files:
        src/sys/arch/evbppc/conf: files.mpc85xx
        src/sys/arch/evbppc/mpc85xx: machdep.c
        src/sys/arch/powerpc/booke: e500_intr.c
        src/sys/arch/powerpc/booke/dev: pq3etsec.c pq3gpio.c
        src/sys/arch/powerpc/include/booke: e500reg.h openpicreg.h spr.h
Added Files:
        src/sys/arch/evbppc/conf: INSTALL_TWRP1025 INSTALL_TWRP1025.MP TWRP1025
            TWRP1025.MP

Log Message:
Add support for the Freescale TWR-P1025 evaluation board and the P1025/P1016
QorIQ processors.  XXX tsec isn't working yet on the TWR-P1025.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbppc/conf/INSTALL_TWRP1025 \
    src/sys/arch/evbppc/conf/INSTALL_TWRP1025.MP \
    src/sys/arch/evbppc/conf/TWRP1025 src/sys/arch/evbppc/conf/TWRP1025.MP
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/evbppc/conf/files.mpc85xx
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/evbppc/mpc85xx/machdep.c
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/powerpc/booke/e500_intr.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/powerpc/booke/dev/pq3etsec.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/booke/dev/pq3gpio.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/powerpc/include/booke/e500reg.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/include/booke/openpicreg.h
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/include/booke/spr.h

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/evbppc/conf/files.mpc85xx
diff -u src/sys/arch/evbppc/conf/files.mpc85xx:1.8 src/sys/arch/evbppc/conf/files.mpc85xx:1.9
--- src/sys/arch/evbppc/conf/files.mpc85xx:1.8	Mon Jul  9 17:36:55 2012
+++ src/sys/arch/evbppc/conf/files.mpc85xx	Sun Jul 15 08:44:56 2012
@@ -1,9 +1,9 @@
-#	$NetBSD: files.mpc85xx,v 1.8 2012/07/09 17:36:55 matt Exp $
+#	$NetBSD: files.mpc85xx,v 1.9 2012/07/15 08:44:56 matt Exp $
 #
 # mpc85xx-specific configuration info
 
 defflag	opt_mpc85xx.h	MPC8536 MPC8544 MPC8548 MPC8555 MPC8568 MPC8572
-			P2020 CADMUS PIXIS E500_WDOG_STACK
+			P1025 P2020 CADMUS PIXIS E500_WDOG_STACK
 defparam opt_mpc85xx.h	SYS_CLK MEMSIZE
 
 file	arch/evbppc/mpc85xx/autoconf.c

Index: src/sys/arch/evbppc/mpc85xx/machdep.c
diff -u src/sys/arch/evbppc/mpc85xx/machdep.c:1.24 src/sys/arch/evbppc/mpc85xx/machdep.c:1.25
--- src/sys/arch/evbppc/mpc85xx/machdep.c:1.24	Sat Jul  7 08:06:51 2012
+++ src/sys/arch/evbppc/mpc85xx/machdep.c	Sun Jul 15 08:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.24 2012/07/07 08:06:51 skrll Exp $	*/
+/*	$NetBSD: machdep.c,v 1.25 2012/07/15 08:44:56 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -205,12 +205,15 @@ static struct consdev e500_earlycons = {
  */
 static const struct cpunode_locators mpc8548_cpunode_locs[] = {
 	{ "cpu", 0, 0, 0, 0, { 0 }, 0,	/* not a real device */
-		{ 0xffff, SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
-#if defined(MPC8572) || defined(P2020)
+		{ 0xffff, SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
+#if defined(MPC8572) || defined(P2020) || defined(P1025)
 	{ "cpu", 0, 0, 1, 0, { 0 }, 0,	/* not a real device */
-		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 	{ "cpu", 0, 0, 2, 0, { 0 }, 0,	/* not a real device */
-		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 #endif
 	{ "wdog" },	/* not a real device */
 	{ "duart", DUART1_BASE, 2*DUART_SIZE, 0,
@@ -219,12 +222,14 @@ static const struct cpunode_locators mpc
 	{ "tsec", ETSEC1_BASE, ETSEC_SIZE, 1,
 		3, { ISOURCE_ETSEC1_TX, ISOURCE_ETSEC1_RX, ISOURCE_ETSEC1_ERR },
 		1 + ilog2(DEVDISR_TSEC1) },
-#if defined(MPC8548) || defined(MPC8555) || defined(MPC8572) || defined(P2020)
+#if defined(MPC8548) || defined(MPC8555) || defined(MPC8572) \
+    || defined(P2020) || defined(P1025)
 	{ "tsec", ETSEC2_BASE, ETSEC_SIZE, 2,
 		3, { ISOURCE_ETSEC2_TX, ISOURCE_ETSEC2_RX, ISOURCE_ETSEC2_ERR },
 		1 + ilog2(DEVDISR_TSEC2),
 		{ SVR_MPC8548v1 >> 16, SVR_MPC8555v1 >> 16,
-		  SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		  SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 #endif
 #if defined(MPC8544) || defined(MPC8536)
 	{ "tsec", ETSEC3_BASE, ETSEC_SIZE, 2,
@@ -232,12 +237,12 @@ static const struct cpunode_locators mpc
 		1 + ilog2(DEVDISR_TSEC3),
 		{ SVR_MPC8536v1 >> 16, SVR_MPC8544v1 >> 16 } },
 #endif
-#if defined(MPC8548) || defined(MPC8572) || defined(P2020)
+#if defined(MPC8548) || defined(MPC8572) || defined(P1025) || defined(P2020)
 	{ "tsec", ETSEC3_BASE, ETSEC_SIZE, 3,
 		3, { ISOURCE_ETSEC3_TX, ISOURCE_ETSEC3_RX, ISOURCE_ETSEC3_ERR },
 		1 + ilog2(DEVDISR_TSEC3),
 		{ SVR_MPC8548v1 >> 16, SVR_MPC8572v1 >> 16,
-		  SVR_P2020v2 >> 16 } },
+		  SVR_P2020v2 >> 16, SVR_P1025v1 >> 16 } },
 #endif
 #if defined(MPC8548) || defined(MPC8572)
 	{ "tsec", ETSEC4_BASE, ETSEC_SIZE, 4,
@@ -308,25 +313,29 @@ static const struct cpunode_locators mpc
 		1 + ilog2(DEVDISR_PCI2),
 		{ SVR_MPC8548v1 >> 16 }, },
 #endif
-#if defined(MPC8572) || defined(P2020)
+#if defined(MPC8572) || defined(P1025) || defined(P2020)
 	{ "pcie", PCIE1_BASE, PCI_SIZE, 1,
 		1, { ISOURCE_PCIEX },
 		1 + ilog2(DEVDISR_PCIE),
-		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 	{ "pcie", PCIE2_MPC8572_BASE, PCI_SIZE, 2,
 		1, { ISOURCE_PCIEX2 },
 		1 + ilog2(DEVDISR_PCIE2),
-		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 	{ "pcie", PCIE3_MPC8572_BASE, PCI_SIZE, 3,
 		1, { ISOURCE_PCIEX3_MPC8572 },
 		1 + ilog2(DEVDISR_PCIE3),
-		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8572v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 #endif
-#if defined(MPC8536) || defined(P2020)
+#if defined(MPC8536) || defined(P1025) || defined(P2020)
 	{ "ehci", USB1_BASE, USB_SIZE, 1,
 		1, { ISOURCE_USB1 },
 		1 + ilog2(DEVDISR_USB1),
-		{ SVR_MPC8536v1 >> 16, SVR_P2020v2 >> 16 } },
+		{ SVR_MPC8536v1 >> 16, SVR_P2020v2 >> 16,
+		  SVR_P1025v1 >> 16 } },
 #endif
 #ifdef MPC8536
 	{ "ehci", USB2_BASE, USB_SIZE, 2,
@@ -354,15 +363,15 @@ static const struct cpunode_locators mpc
 		1 + ilog2(DEVDISR_ESDHC_12),
 		{ SVR_MPC8536v1 >> 16 }, },
 #endif
-#if defined(P2020)
+#if defined(P1025) || defined(P2020)
 	{ "spi", SPI_BASE, SPI_SIZE, 0,
 		1, { ISOURCE_SPI },
 		1 + ilog2(DEVDISR_SPI_28),
-		{ SVR_P2020v2 >> 16 }, },
+		{ SVR_P2020v2 >> 16, SVR_P1025v1 >> 16 }, },
 	{ "sdhc", ESDHC_BASE, ESDHC_SIZE, 0,
 		1, { ISOURCE_ESDHC },
 		1 + ilog2(DEVDISR_ESDHC_10),
-		{ SVR_P2020v2 >> 16 }, },
+		{ SVR_P2020v2 >> 16, SVR_P1025v1 >> 16 }, },
 #endif
 	//{ "sec", RNG_BASE, RNG_SIZE, 0, 0, },
 	{ NULL }
@@ -611,6 +620,7 @@ getsvr(void)
 	case SVR_MPC8543v1 >> 16:	return SVR_MPC8548v1 >> 16;
 	case SVR_MPC8541v1 >> 16:	return SVR_MPC8555v1 >> 16;
 	case SVR_P2010v2 >> 16:		return SVR_P2020v2 >> 16;
+	case SVR_P1016v1 >> 16:		return SVR_P1025v1 >> 16;
 	default:			return svr;
 	}
 }
@@ -634,6 +644,8 @@ socname(uint32_t svr)
 	case SVR_MPC8572v1 >> 8: return "MPC8572";
 	case SVR_P2020v2 >> 8: return "P2020";
 	case SVR_P2010v2 >> 8: return "P2010";
+	case SVR_P1016v1 >> 8: return "P1016";
+	case SVR_P1025v1 >> 8: return "P1025";
 	default:
 		panic("%s: unknown SVR %#x", __func__, svr);
 	}
@@ -1364,10 +1376,13 @@ cpu_startup(void)
 		    IST_LEVEL, 0, 1, 2, 3);
 		break;
 #endif
-#if defined(MPC8544) || defined(MPC8572) || defined(MPC8536) || defined(P2020)
+#if defined(MPC8544) || defined(MPC8572) || defined(MPC8536) \
+    || defined(P1025) || defined(P2020)
 	case SVR_MPC8536v1 >> 16:
 	case SVR_MPC8544v1 >> 16:
 	case SVR_MPC8572v1 >> 16:
+	case SVR_P1016v1 >> 16:
+	case SVR_P1025v1 >> 16:
 	case SVR_P2010v2 >> 16:
 	case SVR_P2020v2 >> 16:
 		mpc85xx_pci_setup("pcie1-interrupt-map", 0x001800, IST_LEVEL,

Index: src/sys/arch/powerpc/booke/e500_intr.c
diff -u src/sys/arch/powerpc/booke/e500_intr.c:1.18 src/sys/arch/powerpc/booke/e500_intr.c:1.19
--- src/sys/arch/powerpc/booke/e500_intr.c:1.18	Mon Jul  9 11:40:19 2012
+++ src/sys/arch/powerpc/booke/e500_intr.c	Sun Jul 15 08:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: e500_intr.c,v 1.18 2012/07/09 11:40:19 matt Exp $	*/
+/*	$NetBSD: e500_intr.c,v 1.19 2012/07/15 08:44:56 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -39,7 +39,7 @@
 #define __INTR_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: e500_intr.c,v 1.18 2012/07/09 11:40:19 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: e500_intr.c,v 1.19 2012/07/15 08:44:56 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -319,6 +319,30 @@ const struct e500_intr_name mpc8572_onch
 
 INTR_INFO_DECL(mpc8572, MPC8572);
 #endif
+
+#ifdef P1025
+#define	p1025_external_intr_names	default_external_intr_names
+const struct e500_intr_name p1025_onchip_intr_names[] = {
+	{ ISOURCE_PCIEX3_MPC8572, "pcie3" },
+	{ ISOURCE_ETSEC1_G1_TX, "etsec1-g1-tx" },
+	{ ISOURCE_ETSEC1_G1_RX, "etsec1-g1-rx" },
+	{ ISOURCE_ETSEC1_G1_ERR, "etsec1-g1-error" },
+	{ ISOURCE_ETSEC2_G1_TX, "etsec2-g1-tx" },
+	{ ISOURCE_ETSEC2_G1_RX, "etsec2-g1-rx" },
+	{ ISOURCE_ETSEC2_G1_ERR, "etsec2-g1-error" },
+	{ ISOURCE_ETSEC3_G1_TX, "etsec3-g1-tx" },
+	{ ISOURCE_ETSEC3_G1_RX, "etsec3-g1-rx" },
+	{ ISOURCE_ETSEC3_G1_ERR, "etsec3-g1-error" },
+	{ ISOURCE_DMA2_CHAN1, "dma2-chan1" },
+	{ ISOURCE_DMA2_CHAN2, "dma2-chan2" },
+	{ ISOURCE_DMA2_CHAN3, "dma2-chan3" },
+	{ ISOURCE_DMA2_CHAN4, "dma2-chan4" },
+	{ 0, "" },
+};
+
+INTR_INFO_DECL(p1025, P1025);
+#endif
+
 #ifdef P2020
 #define	p20x0_external_intr_names	default_external_intr_names
 const struct e500_intr_name p20x0_onchip_intr_names[] = {
@@ -1013,6 +1037,12 @@ e500_intr_init(void)
 		*ii = mpc8572_intr_info;
 		break;
 #endif
+#ifdef P1025
+	case SVR_P1016v1 >> 16:
+	case SVR_P1025v1 >> 16:
+		*ii = p1025_intr_info;
+		break;
+#endif
 #ifdef P2020
 	case SVR_P2010v2 >> 16:
 	case SVR_P2020v2 >> 16:

Index: src/sys/arch/powerpc/booke/dev/pq3etsec.c
diff -u src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.13 src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.14
--- src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.13	Mon May  7 23:04:22 2012
+++ src/sys/arch/powerpc/booke/dev/pq3etsec.c	Sun Jul 15 08:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3etsec.c,v 1.13 2012/05/07 23:04:22 matt Exp $	*/
+/*	$NetBSD: pq3etsec.c,v 1.14 2012/07/15 08:44:56 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pq3etsec.c,v 1.13 2012/05/07 23:04:22 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pq3etsec.c,v 1.14 2012/07/15 08:44:56 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -693,8 +693,6 @@ pq3etsec_ifinit(struct ifnet *ifp)
 	struct pq3etsec_softc * const sc = ifp->if_softc;
 	int error = 0;
 
-	KASSERT(!cpu_softintr_p());
-
 	sc->sc_maxfrm = max(ifp->if_mtu + 32, MCLBYTES);
 	if (ifp->if_mtu > ETHERMTU_JUMBO)
 		return error;
@@ -1134,7 +1132,7 @@ pq3etsec_mapcache_destroy(
 	for (u_int i = 0; i < dmc->dmc_maxmaps; i++) {
 		bus_dmamap_destroy(sc->sc_dmat, dmc->dmc_maps[i]);
 	}
-	kmem_free(dmc, dmc_size);
+	kmem_intr_free(dmc, dmc_size);
 }
 
 static int
@@ -1147,7 +1145,8 @@ pq3etsec_mapcache_create(
 {
 	const size_t dmc_size =
 	    offsetof(struct pq3etsec_mapcache, dmc_maps[maxmaps]);
-	struct pq3etsec_mapcache * const dmc = kmem_zalloc(dmc_size, KM_SLEEP);
+	struct pq3etsec_mapcache * const dmc =
+		kmem_intr_zalloc(dmc_size, KM_NOSLEEP);
 
 	dmc->dmc_maxmaps = maxmaps;
 	dmc->dmc_nmaps = maxmaps;
@@ -1167,7 +1166,7 @@ pq3etsec_mapcache_create(
 				bus_dmamap_destroy(sc->sc_dmat,
 				    dmc->dmc_maps[i]);
 			}
-			kmem_free(dmc, dmc_size);
+			kmem_intr_free(dmc, dmc_size);
 			return error;
 		}
 		KASSERT(dmc->dmc_maps[i] != NULL);

Index: src/sys/arch/powerpc/booke/dev/pq3gpio.c
diff -u src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.7 src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.8
--- src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.7	Sat May 19 00:11:46 2012
+++ src/sys/arch/powerpc/booke/dev/pq3gpio.c	Sun Jul 15 08:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3gpio.c,v 1.7 2012/05/19 00:11:46 matt Exp $	*/
+/*	$NetBSD: pq3gpio.c,v 1.8 2012/07/15 08:44:56 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -41,7 +41,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pq3gpio.c,v 1.7 2012/05/19 00:11:46 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pq3gpio.c,v 1.8 2012/07/15 08:44:56 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -109,6 +109,58 @@ pq3gpio_null_pin_ctl(void *v, int num, i
 }
 #endif
 
+#if defined(P1025)
+/*
+ * P1025 has controllable input/output pins
+ */
+static void
+pq3gpio_pin_ctl(void *v, int num, int ctl)
+{
+	struct pq3gpio_group * const gc = v;
+	const size_t shift = gc->gc_pins[num].pin_num ^ 31;
+  
+	uint64_t old_dir =
+	    ((uint64_t)bus_space_read_4(gc->gc_bst, gc->gc_bsh, CPDIR1) << 32)
+	    | (bus_space_read_4(gc->gc_bst, gc->gc_bsh, CPDIR2) << 0);
+
+	uint32_t dir = 0;
+	switch (ctl & (GPIO_PIN_INPUT|GPIO_PIN_OUTPUT)) {
+	case GPIO_PIN_INPUT|GPIO_PIN_OUTPUT:	dir = CPDIR_INOUT; break;
+	case GPIO_PIN_OUTPUT:			dir = CPDIR_OUT; break;
+	case GPIO_PIN_INPUT:			dir = CPDIR_INOUT; break;
+	case 0:					dir = CPDIR_DIS; break;
+	}
+
+	uint64_t new_dir = (old_dir & (3ULL << (2 * shift)))
+	    | ((uint64_t)dir << (2 * shift));
+
+	if ((uint32_t)old_dir != (uint32_t)new_dir)
+		bus_space_write_4(gc->gc_bst, gc->gc_bsh, CPDIR2,
+		    (uint32_t)new_dir);
+	new_dir >>= 32;
+	old_dir >>= 32;
+	if ((uint32_t)old_dir != (uint32_t)new_dir)
+		bus_space_write_4(gc->gc_bst, gc->gc_bsh, CPDIR1,
+		    (uint32_t)new_dir);
+
+	/*
+	 * Now handle opendrain
+	 */
+	uint32_t old_odr = bus_space_read_4(gc->gc_bst, gc->gc_bsh, CPODR);
+	uint32_t new_odr = old_odr;
+	uint32_t odr_mask = 1UL << shift;
+
+	if (ctl & GPIO_PIN_OPENDRAIN) {
+		new_odr |= odr_mask;
+	} else {
+		new_odr &= ~odr_mask;
+	}
+
+	if (old_odr != new_odr)
+		bus_space_write_4(gc->gc_bst, gc->gc_bsh, CPODR, new_odr);
+}
+#endif
+
 #if defined(MPC8536) || defined(P2020)
 /*
  * MPC8536 / P20x0 have controllable input/output pins
@@ -327,6 +379,55 @@ pq3gpio_mpc8548_attach(device_t self, bu
 }
 #endif /* MPC8548 */
 
+#ifdef P1025
+static void
+pq3gpio_p1025_attach(device_t self, bus_space_tag_t bst,
+	bus_space_handle_t bsh, u_int svr)
+{
+	static const uint32_t gpio2pmuxcr_map[][4] = {
+		{ 0, __BIT(12), 0, PMUXCR_SDHC_WP },
+		{ __BIT(15), __BIT(8), 0, PMUXCR_USB1 },
+		{ __BITS(14,4)|__BIT(16)|__BITS(27,17)|__BIT(30),
+		  __BIT(1)|__BITS(3,2), 0, PMUXCR_QE0 },
+		{ __BITS(3,1), 0, 0, PMUXCR_QE3 },
+		{ 0, __BITS(17,14), 0, PMUXCR_QE8 },
+		{ __BIT(29), __BITS(19,18), 0, PMUXCR_QE9 },
+		{ 0, __BITS(22,21), 0, PMUXCR_QE10 },
+		{ 0, __BITS(28,23), 0, PMUXCR_QE11 },
+		{ 0, __BIT(20), 0, PMUXCR_QE12 },
+	};
+	
+	uint32_t pinmask[3] = {
+		 0xffffffff, 0xffffffff, 0xffffffff
+	};	/* assume all bits are valid */
+	const uint32_t pmuxcr = cpu_read_4(GLOBAL_BASE + PMUXCR);
+	for (size_t i = 0; i < __arraycount(gpio2pmuxcr_map); i++) {
+		if (pmuxcr & gpio2pmuxcr_map[i][3]) {
+			pinmask[0] &= ~gpio2pmuxcr_map[i][0];
+			pinmask[1] &= ~gpio2pmuxcr_map[i][1];
+			pinmask[2] &= ~gpio2pmuxcr_map[i][2];
+		}
+	}
+
+	/*
+	 * Create GPIO pin groups
+	 */
+	for (size_t i = 0; i < 3; i++) {
+		if (pinmask[i]) {
+			bus_space_handle_t bsh2;
+			aprint_normal_dev(self,
+			    "gpio[%c]: %zu input/output/opendrain pins\n",
+			    "abc"[i], popcount32(pinmask[i]));
+			bus_space_subregion(bst, bsh, CPBASE(i), 0x20, &bsh2);
+			pq3gpio_group_create(self, bst, bsh2, CPDAT,
+			    pinmask[0],
+			    GPIO_PIN_INPUT|GPIO_PIN_OUTPUT|GPIO_PIN_OPENDRAIN,
+			    pq3gpio_pin_ctl);
+		}
+	}
+}
+#endif /* P1025 */
+
 #ifdef P2020
 static void
 pq3gpio_p20x0_attach(device_t self, bus_space_tag_t bst,
@@ -386,6 +487,10 @@ static const struct pq3gpio_svr_info {
 	{ SVR_MPC8536v1 >> 16, pq3gpio_mpc8536_attach,
 	    GPIO_BASE, GPIO_SIZE },
 #endif
+#ifdef P1025
+	{ SVR_P1025v1 >> 16, pq3gpio_p1025_attach,
+	    GLOBAL_BASE, GLOBAL_SIZE },
+#endif
 #ifdef P2020
 	{ SVR_P2020v2 >> 16, pq3gpio_p20x0_attach,
 	    GPIO_BASE, GPIO_SIZE },

Index: src/sys/arch/powerpc/include/booke/e500reg.h
diff -u src/sys/arch/powerpc/include/booke/e500reg.h:1.10 src/sys/arch/powerpc/include/booke/e500reg.h:1.11
--- src/sys/arch/powerpc/include/booke/e500reg.h:1.10	Tue Aug  2 00:23:34 2011
+++ src/sys/arch/powerpc/include/booke/e500reg.h	Sun Jul 15 08:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: e500reg.h,v 1.10 2011/08/02 00:23:34 matt Exp $	*/
+/*	$NetBSD: e500reg.h,v 1.11 2012/07/15 08:44:56 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -458,9 +458,20 @@
 #define	PMUXCR_USB1	__PPCBIT(5)
 #define	PMUXCR_TSEC3_TS __PPCBIT(5)
 #define	PMUXCR_USB2	__PPCBIT(6)
-#define	PMUXCR_USB	 __PPCBIT(6)
+#define	PMUXCR_USB_PCTL	__PPCBITS(6,5)
+#define	PMUXCR_USB	__PPCBIT(6)
+#define	PMUXCR_TSEC1	__PPCBIT(14)
 #define	PMUXCR_DMA0	__PPCBIT(14)
 #define	PMUXCR_DMA2	__PPCBIT(15)
+#define	PMUXCR_QE0	__PPCBIT(16)
+#define	PMUXCR_QE1	__PPCBIT(17)
+#define	PMUXCR_QE2	__PPCBIT(18)
+#define	PMUXCR_QE3	__PPCBIT(19)
+#define	PMUXCR_QE8	__PPCBIT(24)
+#define	PMUXCR_QE9	__PPCBIT(25)
+#define	PMUXCR_QE10	__PPCBIT(26)
+#define	PMUXCR_QE11	__PPCBIT(27)
+#define	PMUXCR_QE12	__PPCBIT(28)
 #define	PMUXCR_DMA1	__PPCBIT(30)
 #define	PMUXCR_DMA3	__PPCBIT(31)
 
@@ -518,6 +529,25 @@
 #define PVR		0x0A0 /* Processor version register */
 #define SVR		0x0A4 /* System version register */
 
+/* Control Pin Registers (GPIO) for P1025  */
+#define	CPBASE(n)	(0x100+0x20*(n))	/* Control Pin (GPIO) base */
+#define	CPODR		0x0000			/* Open Drain */
+#define	CPDAT		0x0004			/* Output Data */
+#define	CPDIR1		0x0008			/* Direction1 */
+#define	CPDIR2		0x000c			/* Direction2 */
+#define	CPPAR1		0x0010			/* Pin Assignment1 */
+#define	CPPAR2		0x0014			/* Pin Assignment2 */
+
+#define	CPDIR_DIS	0
+#define	CPDIR_OUT	1
+#define	CPDIR_IN	2
+#define	CPDIR_INOUT	3
+
+#define	CPPAR_FUNC0	0
+#define	CPPAR_FUNC1	1
+#define	CPPAR_FUNC2	2
+#define	CPPAR_FUNC3	3
+
 /* Status Registers */
 #define RSTCR		0x0B0 /* Reset control register */
 #define	HRESET_REQ	__PPCBIT(30) /* hardware reset request */

Index: src/sys/arch/powerpc/include/booke/openpicreg.h
diff -u src/sys/arch/powerpc/include/booke/openpicreg.h:1.5 src/sys/arch/powerpc/include/booke/openpicreg.h:1.6
--- src/sys/arch/powerpc/include/booke/openpicreg.h:1.5	Tue Aug  2 00:22:02 2011
+++ src/sys/arch/powerpc/include/booke/openpicreg.h	Sun Jul 15 08:44:57 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: openpicreg.h,v 1.5 2011/08/02 00:22:02 matt Exp $	*/
+/*	$NetBSD: openpicreg.h,v 1.6 2012/07/15 08:44:57 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -275,6 +275,30 @@
 			  + MPC8572_TIMERSOURCES	\
 			  + MPC8572_MISOURCES))
 
+#define	P1025_EXTERNALSOURCES	6
+#define	P1025_ONCHIPSOURCES	64
+#define	P1025_ONCHIPBITMAP	{ 0xbd1fffff, 0x01789c18 }
+#define	P1025_IPISOURCES	4
+#define	P1025_TIMERSOURCES	4
+#define	P1025_MISOURCES		4
+#define	P1025_MSIGROUPSOURCES	8
+#define	P1025_NCPUS		2
+#define	P1025_SOURCES		/* 102 */		\
+	(P1025_EXTERNALSOURCES				\
+	 + P1025_ONCHIPSOURCES				\
+	 + P1025_MSIGROUPSOURCES			\
+	 + P1025_NCPUS*(P1025_IPISOURCES		\
+			  + P1025_TIMERSOURCES		\
+			  + P1025_MISOURCES))
+#define	P1016_NCPUS		1
+#define	P1016_SOURCES					\
+	(P1025_EXTERNALSOURCES				\
+	 + P1025_ONCHIPSOURCES				\
+	 + P1025_MSIGROUPSOURCES			\
+	 + P1016_NCPUS*(P1025_IPISOURCES		\
+			  + P1025_TIMERSOURCES		\
+			  + P1025_MISOURCES))
+
 #define	P20x0_EXTERNALSOURCES	12
 #define	P20x0_ONCHIPSOURCES	64
 #define	P20x0_ONCHIPBITMAP	{ 0xbd1ff7ff, 0xf17005e7 }
@@ -311,31 +335,38 @@
 #define	IRQ_SPURIOUS		0xffff
 
 #define	ISOURCE_L2		0
+#define	ISOURCE_ERROR		0
 #define	ISOURCE_ECM		1
+#define	ISOURCE_ETSEC1_G1_TX	1	/* P1025 */
 #define	ISOURCE_DDR		2
+#define	ISOURCE_ETSEC1_G1_RX	2	/* P1025 */
 #define	ISOURCE_LBC		3
 #define	ISOURCE_DMA_CHAN1	4
 #define	ISOURCE_DMA_CHAN2	5
 #define	ISOURCE_DMA_CHAN3	6
 #define	ISOURCE_DMA_CHAN4	7
-#define	ISOURCE_PCIEX3_MPC8572	8	/* MPC8572/P20x0 */
+#define	ISOURCE_PCIEX3_MPC8572	8	/* MPC8572/P20x0/P1025 */
 #define	ISOURCE_PCI1		8	/* MPC8548/MPC8544/MPC8536/MPC8555 */
+#define	ISOURCE_ETSEC1_G1_ERR	8	/* P1025 */
 #define	ISOURCE_PCI2		9	/* MPC8548 */
 #define	ISOURCE_PCIEX2		9	/* MPC8544/MPC8572/MPC8536/P20x0 */
+#define	ISOURCE_ETSEC3_G1_TX	9	/* P1025 */
 #define	ISOURCE_PCIEX		10
+#define	ISOURCE_ETSEC3_G1_RX	10	/* P1025 */
 #define	ISOURCE_PCIEX3		11	/* MPC8544/MPC8536 */
-#define	ISOURCE_USB1		12	/* MPC8536/P20x0 */
+#define	ISOURCE_ETSEC3_G1_ERR	11	/* P1025 */
+#define	ISOURCE_USB1		12	/* MPC8536/P20x0/P1025 */
 #define	ISOURCE_ETSEC1_TX	13
 #define	ISOURCE_ETSEC1_RX	14
 #define	ISOURCE_ETSEC3_TX	15
 #define	ISOURCE_ETSEC3_RX	16
 #define	ISOURCE_ETSEC3_ERR	17
 #define	ISOURCE_ETSEC1_ERR	18
-#define	ISOURCE_ETSEC2_TX	19	/* !MPC8544/!MPC8536 */
-#define	ISOURCE_ETSEC2_RX	20	/* !MPC8544/!MPC8536 */
-#define	ISOURCE_ETSEC4_TX	21	/* !MPC8544/!MPC8536/!P20x0 */
-#define	ISOURCE_ETSEC4_RX	22	/* !MPC8544/!MPC8536/!P20x0 */
-#define	ISOURCE_ETSEC4_ERR	23	/* !MPC8544/!MPC8536/!P20x0 */
+#define	ISOURCE_ETSEC2_TX	19	/* !MPC8544/!MPC8536/!P1025 */
+#define	ISOURCE_ETSEC2_RX	20	/* !MPC8544/!MPC8536/!P1025 */
+#define	ISOURCE_ETSEC4_TX	21	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
+#define	ISOURCE_ETSEC4_RX	22	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
+#define	ISOURCE_ETSEC4_ERR	23	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
 #define	ISOURCE_ETSEC2_ERR	24	/* !MPC8544/!MPC8536 */
 #define	ISOURCE_FEC		25	/* MPC8572 */
 #define	ISOURCE_SATA2		25	/* MPC8536 */
@@ -347,34 +378,35 @@
 #define	ISOURCE_QEB_LOW		30	/* MPC8568 */
 #define	ISOURCE_USB2		30	/* MPC8536 */
 #define	ISOURCE_GPIO		31	/* MPC8572/!MPC8548 */
-#define	ISOURCE_QEB_PORT	31	/* MPC8568 */
-#define	ISOURCE_SRIO_EWPU	32	/* !MPC8548&!P20x0 */
-#define	ISOURCE_SRIO_ODBELL	33	/* !MPC8548&!P20x0 */
-#define	ISOURCE_SRIO_IDBELL	34	/* !MPC8548&!P20x0 */
-#define	ISOURCE_35		35
-#define	ISOURCE_36		36
-#define	ISOURCE_SRIO_OMU1	37	/* !MPC8548&!P20x0 */
-#define	ISOURCE_SRIO_IMU1	38	/* !MPC8548&!P20x0 */
-#define	ISOURCE_SRIO_OMU2	39	/* !MPC8548&!P20x0 */
-#define	ISOURCE_SRIO_IMU2	40	/* !MPC8548&!P20x0 */
+#define	ISOURCE_QEB_PORT	31	/* MPC8568/P1025 */
+#define	ISOURCE_SRIO_EWPU	32	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_SRIO_ODBELL	33	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_SRIO_IDBELL	34	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_ETSEC2_G1_TX	35	/* P1025 */
+#define	ISOURCE_ETSEC2_G1_RX	36	/* P1025 */
+#define	ISOURCE_SRIO_OMU1	37	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_SRIO_IMU1	38	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_SRIO_OMU2	39	/* !MPC8548&!P20x0&!P1025 */
+#define	ISOURCE_SRIO_IMU2	40	/* !MPC8548&!P20x0&!P1025 */
 #define	ISOURCE_PME_GENERAL	41	/* MPC8572 */
-#define	ISOURCE_SECURITY2	42	/* MPC8572|MPC8536|P20x0 */
-#define	ISOURCE_SPI		43	/* MPC8536|P20x0 */
+#define	ISOURCE_SECURITY2	42	/* MPC8572|MPC8536|P20x0|P1025 */
+#define	ISOURCE_SPI		43	/* MPC8536|P20x0|P1025 */
 #define	ISOURCE_QEB_IECC	43	/* MPC8568 */
 #define	ISOURCE_USB3		44	/* MPC8536 */
-#define	ISOURCE_QEB_MUECC	44	/* MPC8568 */
+#define	ISOURCE_QEB_MUECC	44	/* MPC8568|P1025 */
 #define	ISOURCE_TLU1		45	/* MPC8568/MPC8572 */
 #define	ISOURCE_46		46
-#define	ISOURCE_QEB_HIGH	47	/* MPC8548 */
+#define	ISOURCE_QEB_HIGH	47	/* MPC8548|P1025 */
 #define	ISOURCE_PME_CHAN1	48	/* MPC8572 */
 #define	ISOURCE_PME_CHAN2	49	/* MPC8572 */
 #define	ISOURCE_PME_CHAN3	50	/* MPC8572 */
 #define	ISOURCE_PME_CHAN4	51	/* MPC8572 */
-#define	ISOURCE_ETSEC1_PTP	52	/* MPC8572|MPC8536|P20x0 */
-#define	ISOURCE_ETSEC2_PTP	53	/* MPC8572|P20x0 */
-#define	ISOURCE_ETSEC3_PTP	54	/* MPC8572|MPC8536|P20x0 */
+#define	ISOURCE_ETSEC2_G1_ERR	51	/* P1025 */
+#define	ISOURCE_ETSEC1_PTP	52	/* MPC8572|MPC8536|P20x0|P1025 */
+#define	ISOURCE_ETSEC2_PTP	53	/* MPC8572|P20x0|P1025 */
+#define	ISOURCE_ETSEC3_PTP	54	/* MPC8572|MPC8536|P20x0|P1025 */
 #define	ISOURCE_ETSEC4_PTP	55	/* MPC8572 */
-#define	ISOURCE_ESDHC		56	/* MPC8536|P20x0 */
+#define	ISOURCE_ESDHC		56	/* MPC8536|P20x0|P1025 */
 #define	ISOURCE_57		57
 #define	ISOURCE_SATA1		58	/* MPC8536 */
 #define	ISOURCE_TLU2		59	/* MPC8572 */

Index: src/sys/arch/powerpc/include/booke/spr.h
diff -u src/sys/arch/powerpc/include/booke/spr.h:1.8 src/sys/arch/powerpc/include/booke/spr.h:1.9
--- src/sys/arch/powerpc/include/booke/spr.h:1.8	Mon Jul  9 17:58:34 2012
+++ src/sys/arch/powerpc/include/booke/spr.h	Sun Jul 15 08:44:57 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: spr.h,v 1.8 2012/07/09 17:58:34 matt Exp $	*/
+/*	$NetBSD: spr.h,v 1.9 2012/07/15 08:44:57 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -68,9 +68,11 @@
 #define	SVR_P1011v2		  0x80e50020
 #define	SVR_P1012v2		  0x80e50120
 #define	SVR_P1013v2		  0x80e70020
+#define	SVR_P1016v1		  0x80e50310
 #define	SVR_P1020v2		  0x80e40020
 #define	SVR_P1021v2		  0x80e40120
 #define	SVR_P1022v2		  0x80e60020
+#define	SVR_P1025v1		  0x80e40310
 
 #define	SVR_SECURITY_P(svr)	  (((svr) & 0x00080000) != 0)
 

Added files:

Index: src/sys/arch/evbppc/conf/INSTALL_TWRP1025
diff -u /dev/null src/sys/arch/evbppc/conf/INSTALL_TWRP1025:1.1
--- /dev/null	Sun Jul 15 08:44:57 2012
+++ src/sys/arch/evbppc/conf/INSTALL_TWRP1025	Sun Jul 15 08:44:56 2012
@@ -0,0 +1,10 @@
+# 	$NetBSD: INSTALL_TWRP1025,v 1.1 2012/07/15 08:44:56 matt Exp $
+
+include "arch/evbppc/conf/TWRP1025"
+
+#ident 		"INSTALL_P2020RDB-$Revision: 1.1 $"
+
+include "arch/evbppc/conf/INSTALL.inc"
+
+no config netbsd-sd0a
+no config nfsnetbsd
Index: src/sys/arch/evbppc/conf/INSTALL_TWRP1025.MP
diff -u /dev/null src/sys/arch/evbppc/conf/INSTALL_TWRP1025.MP:1.1
--- /dev/null	Sun Jul 15 08:44:57 2012
+++ src/sys/arch/evbppc/conf/INSTALL_TWRP1025.MP	Sun Jul 15 08:44:56 2012
@@ -0,0 +1,9 @@
+# 	$NetBSD: INSTALL_TWRP1025.MP,v 1.1 2012/07/15 08:44:56 matt Exp $
+
+include "arch/evbppc/conf/TWRP1205.MP"
+
+#ident 		"INSTALL_TWRP1205.MP-$Revision: 1.1 $"
+
+include "arch/evbppc/conf/INSTALL.inc"
+
+no config nfsnetbsd
Index: src/sys/arch/evbppc/conf/TWRP1025
diff -u /dev/null src/sys/arch/evbppc/conf/TWRP1025:1.1
--- /dev/null	Sun Jul 15 08:44:57 2012
+++ src/sys/arch/evbppc/conf/TWRP1025	Sun Jul 15 08:44:56 2012
@@ -0,0 +1,224 @@
+#	$NetBSD: TWRP1025,v 1.1 2012/07/15 08:44:56 matt Exp $
+#
+#	TWRP1025 -- everything that's currently supported
+#
+
+include		"arch/evbppc/conf/std.mpc85xx"
+
+options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
+
+ident 		"TWRP1025-$Revision: 1.1 $"
+
+maxusers	32
+
+makeoptions	NEED_BINARY="yes"
+makeoptions	NEED_UBOOTIMAGE="yes"
+
+#options 	UVMHIST
+#options 	UVMHIST_PRINT
+
+options 	P1025
+options 	SYS_CLK=66666667
+#options 	HZ=1000
+
+#options 	SDHC_DEBUG
+
+#options 	INSECURE	# disable kernel security levels
+#options 	NTP		# NTP phase/frequency locked loop
+options 	KTRACE		# system call tracing via ktrace(1)
+
+options 	SYSVMSG		# System V message queues
+options 	SYSVSEM		# System V semaphores
+options 	SYSVSHM		# System V shared memory
+
+options 	USERCONF	# userconf(4) support
+#options	PIPE_SOCKETPAIR	# smaller, but slower pipe(2)
+#options 	SYSCTL_INCLUDE_DESCR	# Include sysctl descriptions in kernel
+
+# Diagnostic/debugging support options
+options 	DIAGNOSTIC	# cheap kernel consistency checks
+options 	DEBUG		# expensive debugging checks/support
+#options 	SYSCALL_DEBUG	# syscall debugging
+options 	DDB		# in-kernel debugger
+options 	DDB_HISTORY_SIZE=512	# enable history editing in DDB
+options 	TRAP_PANICWAIT
+options 	SYMTAB_SPACE=410000	# size for embedded symbol table
+
+makeoptions	DEBUG="-g"	# compile full symbol table
+
+# Compatibility options
+#options 	COMPAT_09	# NetBSD 0.9,
+#options 	COMPAT_10	# NetBSD 1.0,
+#options 	COMPAT_11	# NetBSD 1.1,
+#options 	COMPAT_12	# NetBSD 1.2,
+options 	COMPAT_13	# NetBSD 1.3,
+options 	COMPAT_14	# NetBSD 1.4,
+options 	COMPAT_15	# NetBSD 1.5,
+options 	COMPAT_16	# NetBSD 1.6,
+options 	COMPAT_20	# NetBSD 2.0,
+options 	COMPAT_30	# NetBSD 3.0,
+options 	COMPAT_40	# NetBSD 4.0,
+options 	COMPAT_50	# NetBSD 5.0 compatibility.
+options 	COMPAT_43	# and 4.3BSD
+#options 	COMPAT_386BSD_MBRPART # recognize old partition ID
+#options 	TCP_COMPAT_42	# 4.2BSD TCP/IP bug compat. Not recommended.
+options		COMPAT_BSDPTY	# /dev/[pt]ty?? ptys.
+
+# File systems
+file-system 	FFS		# UFS
+file-system 	EXT2FS		# second extended file system (linux)
+file-system 	LFS		# log-structured file system
+file-system 	MFS		# memory file system
+file-system 	NFS		# Network File System client
+file-system 	CD9660		# ISO 9660 + Rock Ridge file system
+file-system 	MSDOSFS		# MS-DOS file system
+#file-system 	FDESC		# /dev/fd
+file-system 	TMPFS		# efficient memory file system
+file-system 	KERNFS		# /kern
+file-system 	NULLFS		# loopback file system
+#file-system 	OVERLAY		# overlay file system
+#file-system	PUFFS		# Userspace file systems (e.g. ntfs-3g & sshfs)
+file-system 	PROCFS		# /proc
+#file-system 	UMAPFS		# NULLFS + uid and gid remapping
+#file-system 	UNION		# union file system
+file-system	PTYFS		# /dev/pts/N support
+
+# File system options
+options 	QUOTA		# legacy UFS quotas
+options 	QUOTA2		# new, in-filesystem UFS quotas
+options 	FFS_EI		# FFS Endian Independent support
+options 	WAPBL		# File system journaling support
+options 	NFSSERVER	# Network File System server
+#options 	FFS_NO_SNAPSHOT	# No FFS snapshot support
+options 	EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
+				# immutable) behave as system flags.
+
+options 	NFS_BOOT_DHCP	# Support DHCP NFS root
+
+# Networking options
+#options 	GATEWAY		# packet forwarding
+options 	INET		# IP + ICMP + TCP + UDP
+options 	INET_CSUM_COUNTERS
+options 	TCP_CSUM_COUNTERS
+options 	UDP_CSUM_COUNTERS
+#options 	INET6		# IPV6
+#options 	IPSEC		# IP security
+#options 	IPSEC_ESP	# IP security (encryption part; define w/IPSEC)
+#options 	IPSEC_NAT_T	# IPsec NAT traversal (NAT-T)
+#options 	IPSEC_DEBUG	# debug for IP security
+#options 	MROUTING	# IP multicast routing
+#options 	PIM		# Protocol Independent Multicast
+#options        DIRECTED_BROADCAST      # allow broadcasts through routers
+#options 	ISO,TPIP	# OSI
+#options 	EON		# OSI tunneling over IP
+#options 	NETATALK	# AppleTalk networking protocols
+#options 	PPP_BSDCOMP	# BSD-Compress compression support for PPP
+#options 	PPP_DEFLATE	# Deflate compression support for PPP
+#options 	PPP_FILTER	# Active filter support for PPP (requires bpf)
+#options 	PFIL_HOOKS	# pfil(9) packet filter hooks
+#options 	IPFILTER_LOG	# ipmon(8) log support
+#options 	IPFILTER_LOOKUP	# ippool(8) support
+#options 	TCP_DEBUG	# Record last TCP_NDEBUG packets with SO_DEBUG
+
+# These options enable verbose messages for several subsystems.
+# Warning, these may compile large string tables into the kernel!
+options 	PCIVERBOSE	# verbose PCI device autoconfig messages
+options 	MIIVERBOSE	# verbose PHY autoconfig messages
+#options 	PCI_CONFIG_DUMP	# verbosely dump PCI config space
+options 	SCSIVERBOSE	# human readable SCSI error messages
+#options 	PCI_NETBSD_CONFIGURE	# Do not rely on BIOS/whatever to configure PCI devices
+#options 	PCI_CONFIGURE_VERBOSE	# Show PCI config information
+
+# wscons options
+#options 	WSEMUL_SUN		# sun terminal emulation
+#options 	WSEMUL_VT100		# VT100 / VT220 emulation
+
+# Kernel root file system and dump configuration.
+config		netbsd		root on ? type ?
+config		netbsd-sd0a	root on sd0a type ffs
+config		nfsnetbsd	root on tsec0 type nfs
+
+#
+# Device configuration
+#
+
+mainbus0 at root			# Processor Local Bus
+
+cpunode*	at mainbus? node ?
+gpio*		at gpiobus?
+
+cpu*		at cpunode?
+
+obio0		at cpunode?		# On-chip Peripheral Bus
+#nandfcm*	at obio0 cs ?		# nand flash
+#nand*		at nandfcm?
+#flash*		at nand?
+
+# NOR Flash
+#options 	NOR_VERBOSE
+cfi0	 	at obio0 cs 0
+nor*		at cfi?
+flash*		at nor? offset 0 size 0x1000000
+
+e500wdog*	at cpunode?		# Watchdog timer
+
+ddrc*		at cpunode?
+duart*		at cpunode?
+com*		at duart? port ?
+options		CONSADDR="DUART1_BASE"
+
+tsec0		at cpunode? flags 0x002	# Enhanced 3-Speed Ethernet Controller
+tsec1		at cpunode? flags 0x103	# Enhanced 3-Speed Ethernet Controller
+ukphy*		at mii?
+#options 	ETSEC_EVENT_COUNTERS
+
+diic*		at cpunode?		# i2c bus
+iic*		at diic?
+#dsrtc*		at iic1 addr 0x68 flags 1339	# RTC DS1339
+
+pq3pcie*	at cpunode?		# PCI-Express controller
+pci*		at pq3pcie?
+
+ppb*		at pci? dev ? function ?	# PCI-PCI bridges
+pci*		at ppb?
+
+ahcisata*	at pci? dev ? function ?
+atabus*		at ahcisata? channel ?
+wd*		at atabus? drive ?
+
+ehci*		at cpunode?		# usb
+usb*		at ehci?
+uhub*		at usb?
+uhub*		at uhub? port ?
+umass*		at uhub? port ?
+scsibus*	at umass? channel ?
+sd*		at scsibus? target ? lun ?
+
+sdhc*		at cpunode?		# sdmmc
+sdmmc*		at sdhc?		# SD/MMC bus
+ld*		at sdmmc?
+
+#siisata*	at pci? dev ? function ?
+#atabus* 	at siisata? channel ?
+#jmide*		at pci? dev ? function ?	# JMicron PCI-e PATA/SATA controllers
+#ahcisata*	at jmide?
+#atabus* 	at ahcisata? channel ?
+
+#viaide* 	at pci? dev ? function ?
+#atabus* 	at viaide? channel ?
+#wd*		at atabus? drive ?
+#rtk*		at pci? dev ? function ?
+#wm*		at pci? dev ? function ?	# Intel Ethernet
+
+#inphy*		at mii? phy ?			# Intel 82555 PHYs
+#iophy*		at mii? phy ?			# Intel 82553 PHYs
+#makphy* 	at mii? phy ?			# Marvell PHYs
+#ukphy*		at mii? phy ?			# generic unknown PHYs
+
+pseudo-device	loop			# network loopback
+pseudo-device	bpfilter		# packet filter
+pseudo-device	clockctl		# user control of clock subsystem
+pseudo-device	ksyms			# /dev/ksyms
+pseudo-device	pty			# pseudo-terminals
+pseudo-device	kttcp			# kernel ttcp
+pseudo-device	vlan			# 802.1Q VLANs
Index: src/sys/arch/evbppc/conf/TWRP1025.MP
diff -u /dev/null src/sys/arch/evbppc/conf/TWRP1025.MP:1.1
--- /dev/null	Sun Jul 15 08:44:57 2012
+++ src/sys/arch/evbppc/conf/TWRP1025.MP	Sun Jul 15 08:44:56 2012
@@ -0,0 +1,9 @@
+# $NetBSD: TWRP1025.MP,v 1.1 2012/07/15 08:44:56 matt Exp $
+#
+#	TWRP1025 kernel, plus multiprocessor support.
+
+include	"arch/evbppc/conf/TWRP1025"
+
+options 	MULTIPROCESSOR
+# this option may cause trouble under very high interrupt load
+#options 	OPENPIC_DISTRIBUTE	# let all CPUs serve interrupts

Reply via email to