Module Name:    src
Committed By:   matt
Date:           Wed Mar 16 05:31:04 UTC 2011

Modified Files:
        src/sys/arch/powerpc/booke: e500_intr.c
        src/sys/arch/powerpc/booke/dev: pq3etsec.c pq3gpio.c
        src/sys/arch/powerpc/booke/pci: pq3pci.c
        src/sys/arch/powerpc/include/booke: e500reg.h

Log Message:
Fix various nits related to P2020 support.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/powerpc/booke/e500_intr.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/powerpc/booke/dev/pq3etsec.c \
    src/sys/arch/powerpc/booke/dev/pq3gpio.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/powerpc/booke/pci/pq3pci.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/include/booke/e500reg.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/powerpc/booke/e500_intr.c
diff -u src/sys/arch/powerpc/booke/e500_intr.c:1.3 src/sys/arch/powerpc/booke/e500_intr.c:1.4
--- src/sys/arch/powerpc/booke/e500_intr.c:1.3	Wed Feb 16 18:43:35 2011
+++ src/sys/arch/powerpc/booke/e500_intr.c	Wed Mar 16 05:31:03 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: e500_intr.c,v 1.3 2011/02/16 18:43:35 matt Exp $	*/
+/*	$NetBSD: e500_intr.c,v 1.4 2011/03/16 05:31:03 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -1018,7 +1018,7 @@
 	struct intr_source *is;
 	struct e500_intr_info * const ii = &e500_intr_info;
 
-	const uint16_t svr = mfspr(SPR_SVR) >> 16;
+	const uint16_t svr = (mfspr(SPR_SVR) & ~0x80000) >> 16;
 	switch (svr) {
 #ifdef MPC8536
 	case SVR_MPC8536v1 >> 16:

Index: src/sys/arch/powerpc/booke/dev/pq3etsec.c
diff -u src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.2 src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.3
--- src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.2	Tue Jan 18 01:02:53 2011
+++ src/sys/arch/powerpc/booke/dev/pq3etsec.c	Wed Mar 16 05:31:03 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3etsec.c,v 1.2 2011/01/18 01:02:53 matt Exp $	*/
+/*	$NetBSD: pq3etsec.c,v 1.3 2011/03/16 05:31:03 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -610,15 +610,20 @@
 	ifmedia_init(&sc->sc_mii.mii_media, 0, ether_mediachange,
 	    ether_mediastatus);
 
-	mii_attach(miiself, &sc->sc_mii, 0xffffffff,
-	    sc->sc_phy_addr, MII_OFFSET_ANY, MIIF_DOPAUSE);
-
-	if (LIST_FIRST(&sc->sc_mii.mii_phys) == NULL) {
-		ifmedia_add(&sc->sc_mii.mii_media, IFM_ETHER|IFM_NONE, 0, NULL);
-		ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_NONE);
+	if (sc->sc_phy_addr < 32) {
+		mii_attach(miiself, &sc->sc_mii, 0xffffffff,
+		    sc->sc_phy_addr, MII_OFFSET_ANY, MIIF_DOPAUSE);
+
+		if (LIST_FIRST(&sc->sc_mii.mii_phys) == NULL) {
+			ifmedia_add(&sc->sc_mii.mii_media, IFM_ETHER|IFM_NONE, 0, NULL);
+			ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_NONE);
+		} else {
+			callout_schedule(&sc->sc_mii_callout, hz);
+			ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_AUTO);
+		}
 	} else {
-		callout_schedule(&sc->sc_mii_callout, hz);
-		ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_AUTO);
+		ifmedia_add(&sc->sc_mii.mii_media, IFM_ETHER|IFM_1000_T|IFM_FDX, 0, NULL);
+		ifmedia_set(&sc->sc_mii.mii_media, IFM_ETHER|IFM_1000_T|IFM_FDX);
 	}
 
 	ec->ec_capabilities = ETHERCAP_VLAN_MTU | ETHERCAP_VLAN_HWTAGGING
Index: src/sys/arch/powerpc/booke/dev/pq3gpio.c
diff -u src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.2 src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.3
--- src/sys/arch/powerpc/booke/dev/pq3gpio.c:1.2	Tue Jan 18 01:02:53 2011
+++ src/sys/arch/powerpc/booke/dev/pq3gpio.c	Wed Mar 16 05:31:03 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3gpio.c,v 1.2 2011/01/18 01:02:53 matt Exp $	*/
+/*	$NetBSD: pq3gpio.c,v 1.3 2011/03/16 05:31:03 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -285,6 +285,40 @@
 }
 #endif /* MPC8548 */
 
+#ifdef P2020
+static void
+pq3gpio_p20x0_attach(device_t self, bus_space_tag_t bst,
+	bus_space_handle_t bsh, u_int svr)
+{
+	static const uint32_t gpio2pmuxcr_map[][2] = {
+		{ __BIT(10), PMUXCR_TSEC3_TS|PMUXCR_USB },
+		{ __BIT(11), PMUXCR_TSEC3_TS|PMUXCR_USB },
+		{ __BIT(12), PMUXCR_TSEC1_TS },
+		{ __BIT(13), PMUXCR_TSEC1_TS },
+		{ __BIT(14), PMUXCR_TSEC2_TS },
+		{ __BIT(15), PMUXCR_TSEC2_TS },
+	};
+	
+	uint32_t pinmask = ~0;	/* assume all bits are valid */
+	size_t pincnt = 32;
+	const uint32_t pmuxcr = bus_space_read_4(bst, bsh, PMUXCR);
+	for (size_t i = 0; i < __arraycount(gpio2pmuxcr_map); i++) {
+		if (pmuxcr & gpio2pmuxcr_map[i][1]) {
+			pinmask &= ~gpio2pmuxcr_map[i][0];
+			pincnt--;
+		}
+	}
+
+	/*
+	 * Create GPIO pin groups
+	 */
+	aprint_normal_dev(self, "%zu input pins, %zu output pins\n",
+	    pincnt, pincnt);
+	pq3gpio_group_create(self, bst, bsh, GPINDR, pinmask, GPIO_PIN_INPUT);
+	pq3gpio_group_create(self, bst, bsh, GPOUTDR, pinmask, GPIO_PIN_OUTPUT);
+}
+#endif /* P2020 */
+
 static const struct {
 	uint16_t svr;
 	void (*attach)(device_t, bus_space_tag_t, bus_space_handle_t, u_int);
@@ -301,6 +335,9 @@
 #ifdef MPC8536
 	{ SVR_MPC8536v1 >> 16, pq3gpio_mpc8536_attach },
 #endif
+#ifdef P2020
+	{ SVR_P2020v2 >> 16, pq3gpio_p20x0_attach },
+#endif
 };
 
 void

Index: src/sys/arch/powerpc/booke/pci/pq3pci.c
diff -u src/sys/arch/powerpc/booke/pci/pq3pci.c:1.3 src/sys/arch/powerpc/booke/pci/pq3pci.c:1.4
--- src/sys/arch/powerpc/booke/pci/pq3pci.c:1.3	Tue Feb  8 06:19:13 2011
+++ src/sys/arch/powerpc/booke/pci/pq3pci.c	Wed Mar 16 05:31:04 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3pci.c,v 1.3 2011/02/08 06:19:13 matt Exp $	*/
+/*	$NetBSD: pq3pci.c,v 1.4 2011/03/16 05:31:04 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -44,7 +44,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pq3pci.c,v 1.3 2011/02/08 06:19:13 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pq3pci.c,v 1.4 2011/03/16 05:31:04 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -83,9 +83,9 @@
     TRUTH_ENCODE(SVR_MPC8572v1, inst, PORDEVSR_##field, \
 	__SHIFTIN(field##_##MPC8572##_##value, PORDEVSR_##field), result)
 #define	PORDEVSR_P20x0_TRUTH_ENCODE(inst, field, value, result) \
-    TRUTH_ENCODE(SVR_P2020, inst, PORDEVSR_##field, \
+    TRUTH_ENCODE(SVR_P2020v2, inst, PORDEVSR_##field, \
 	__SHIFTIN(field##_##P20x0##_##value, PORDEVSR_##field), result), \
-    TRUTH_ENCODE(SVR_P2010, inst, PORDEVSR_##field, \
+    TRUTH_ENCODE(SVR_P2010v2, inst, PORDEVSR_##field, \
 	__SHIFTIN(field##_##P20x0##_##value, PORDEVSR_##field), result)
 
 #define	PORDEVSR_TRUTH_ENCODE(svr, inst, field, value, result) \

Index: src/sys/arch/powerpc/include/booke/e500reg.h
diff -u src/sys/arch/powerpc/include/booke/e500reg.h:1.4 src/sys/arch/powerpc/include/booke/e500reg.h:1.5
--- src/sys/arch/powerpc/include/booke/e500reg.h:1.4	Wed Feb 16 18:38:48 2011
+++ src/sys/arch/powerpc/include/booke/e500reg.h	Wed Mar 16 05:31:04 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: e500reg.h,v 1.4 2011/02/16 18:38:48 matt Exp $	*/
+/*	$NetBSD: e500reg.h,v 1.5 2011/03/16 05:31:04 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -361,7 +361,7 @@
 #define	IOSEL_P20x0_PCIE12_X1_3_X2	2
 #define	IOSEL_P20x0_PCIE13_X2		4
 #define	IOSEL_P20x0_PCIE1_X4		6
-#define	IOSEL_P20x0_PCIE1_X1_SRIO12500_1X	13
+#define	IOSEL_P20x0_PCIE1_X1_SRIO2500_1X	13
 #define	IOSEL_P20x0_PCIE12_X1_SGMII23	14
 #define	IOSEL_P20x0_PCIE1_X2_SGMII23	15
 #define	PORDEVSR_PCI2_ARB	__PPCBIT(13)
@@ -404,9 +404,13 @@
 #define	PMUXCR_SDHC_CD	__PPCBIT(1)
 #define	PMUXCR_SDHC_WP	__PPCBIT(2)
 #define	PMUXCR_PCI_REQGNT3 __PPCBIT(3)
+#define	PMUXCR_TSEC1_TS __PPCBIT(3)
 #define	PMUXCR_PCI_REQGNT4 __PPCBIT(4)
+#define	PMUXCR_TSEC2_TS __PPCBIT(4)
 #define	PMUXCR_USB1	__PPCBIT(5)
+#define	PMUXCR_TSEC3_TS __PPCBIT(5)
 #define	PMUXCR_USB2	__PPCBIT(6)
+#define	PMUXCR_USB	 __PPCBIT(6)
 #define	PMUXCR_DMA0	__PPCBIT(14)
 #define	PMUXCR_DMA2	__PPCBIT(15)
 #define	PMUXCR_DMA1	__PPCBIT(30)

Reply via email to