Module Name:    src
Committed By:   tsutsui
Date:           Tue Sep  8 18:15:17 UTC 2009

Modified Files:
        src/sys/dev/sbus: esp_sbus.c if_hme_sbus.c if_le.c if_le_lebuffer.c
            if_le_ledma.c

Log Message:
Fix botch on device_t/softc split caused by awful casts around
registration of (*sd_reset)(device_t) in struct sbusdev via sbus_establish().

XXX: (*sd_reset)() in struct sbusdev seems called from only sbusreset(),
XXX: but there is no function which calls sbusreset()???


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/sbus/esp_sbus.c
cvs rdiff -u -r1.31 -r1.32 src/sys/dev/sbus/if_hme_sbus.c \
    src/sys/dev/sbus/if_le_ledma.c
cvs rdiff -u -r1.36 -r1.37 src/sys/dev/sbus/if_le.c
cvs rdiff -u -r1.24 -r1.25 src/sys/dev/sbus/if_le_lebuffer.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/sbus/esp_sbus.c
diff -u src/sys/dev/sbus/esp_sbus.c:1.48 src/sys/dev/sbus/esp_sbus.c:1.49
--- src/sys/dev/sbus/esp_sbus.c:1.48	Tue May 12 14:43:59 2009
+++ src/sys/dev/sbus/esp_sbus.c	Tue Sep  8 18:15:17 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: esp_sbus.c,v 1.48 2009/05/12 14:43:59 cegger Exp $	*/
+/*	$NetBSD: esp_sbus.c,v 1.49 2009/09/08 18:15:17 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: esp_sbus.c,v 1.48 2009/05/12 14:43:59 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: esp_sbus.c,v 1.49 2009/09/08 18:15:17 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -101,6 +101,8 @@
 static void	esp_dma_stop(struct ncr53c9x_softc *);
 static int	esp_dma_isactive(struct ncr53c9x_softc *);
 
+static void	esp_sbus_reset(device_t);
+
 #ifdef DDB
 static void	esp_init_ddb_cmds(void);
 #endif
@@ -287,7 +289,7 @@
 		esc->sc_pri = sa->sa_pri;
 
 		/* add me to the sbus structures */
-		esc->sc_sd.sd_reset = (void *)ncr53c9x_reset;
+		esc->sc_sd.sd_reset = esp_sbus_reset;
 		sbus_establish(&esc->sc_sd, self);
 
 		espattach(esc, &esp_sbus_glue);
@@ -347,7 +349,7 @@
 	esc->sc_pri = sa->sa_pri;
 
 	/* add me to the sbus structures */
-	esc->sc_sd.sd_reset = (void *)ncr53c9x_reset;
+	esc->sc_sd.sd_reset = esp_sbus_reset;
 	sbus_establish(&esc->sc_sd, self);
 
 	if (strcmp("ptscII", sa->sa_name) == 0) {
@@ -407,7 +409,7 @@
 	esc->sc_pri = sa->sa_pri;
 
 	/* Assume SBus is grandparent */
-	esc->sc_sd.sd_reset = (void *)ncr53c9x_reset;
+	esc->sc_sd.sd_reset = esp_sbus_reset;
 	sbus_establish(&esc->sc_sd, parent);
 
 	espattach(esc, &esp_sbus_glue);
@@ -700,6 +702,15 @@
 	return DMA_ISACTIVE(esc->sc_dma);
 }
 
+void
+esp_sbus_reset(device_t self)
+{
+	struct esp_softc *esc = device_private(self);
+	struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x;
+
+	ncr53c9x_reset(sc);
+}
+
 #ifdef DDB
 #include <machine/db_machdep.h>
 #include <ddb/db_output.h>

Index: src/sys/dev/sbus/if_hme_sbus.c
diff -u src/sys/dev/sbus/if_hme_sbus.c:1.31 src/sys/dev/sbus/if_hme_sbus.c:1.32
--- src/sys/dev/sbus/if_hme_sbus.c:1.31	Sun May 17 01:33:24 2009
+++ src/sys/dev/sbus/if_hme_sbus.c	Tue Sep  8 18:15:17 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_hme_sbus.c,v 1.31 2009/05/17 01:33:24 tsutsui Exp $	*/
+/*	$NetBSD: if_hme_sbus.c,v 1.32 2009/09/08 18:15:17 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_hme_sbus.c,v 1.31 2009/05/17 01:33:24 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_hme_sbus.c,v 1.32 2009/09/08 18:15:17 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -66,6 +66,8 @@
 int	hmematch_sbus(device_t, cfdata_t, void *);
 void	hmeattach_sbus(device_t, device_t, void *);
 
+static void hme_sbus_reset(device_t);
+
 CFATTACH_DECL_NEW(hme_sbus, sizeof(struct hmesbus_softc),
     hmematch_sbus, hmeattach_sbus, NULL, NULL);
 
@@ -157,7 +159,7 @@
 		return;
 	}
 
-	sd->sd_reset = (void *)hme_reset;
+	sd->sd_reset = hme_sbus_reset;
 	sbus_establish(sd, self);
 
 	prom_getether(node, sc->sc_enaddr);
@@ -190,3 +192,12 @@
 		(void)bus_intr_establish(sa->sa_bustag, sa->sa_pri, IPL_NET,
 					 hme_intr, sc);
 }
+
+void
+hme_sbus_reset(device_t self)
+{
+	struct hmesbus_softc *hsc = device_private(self);
+	struct hme_softc *sc = &hsc->hsc_hme;
+
+	hme_reset(sc);
+}
Index: src/sys/dev/sbus/if_le_ledma.c
diff -u src/sys/dev/sbus/if_le_ledma.c:1.31 src/sys/dev/sbus/if_le_ledma.c:1.32
--- src/sys/dev/sbus/if_le_ledma.c:1.31	Sun Apr 12 11:10:28 2009
+++ src/sys/dev/sbus/if_le_ledma.c	Tue Sep  8 18:15:17 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_le_ledma.c,v 1.31 2009/04/12 11:10:28 tsutsui Exp $	*/
+/*	$NetBSD: if_le_ledma.c,v 1.32 2009/09/08 18:15:17 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_le_ledma.c,v 1.31 2009/04/12 11:10:28 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_le_ledma.c,v 1.32 2009/09/08 18:15:17 tsutsui Exp $");
 
 #include "opt_inet.h"
 #include "bpfilter.h"
@@ -93,6 +93,8 @@
 int	lematch_ledma(device_t, cfdata_t, void *);
 void	leattach_ledma(device_t, device_t, void *);
 
+static void le_ledma_reset(device_t);
+
 /*
  * Media types supported by the Sun4m.
  */
@@ -390,7 +392,7 @@
 	lesc->sc_lostcount = 0;
 
 	/* Assume SBus is grandparent */
-	lesc->sc_sd.sd_reset = (void *)lance_reset;
+	lesc->sc_sd.sd_reset = le_ledma_reset;
 	sbus_establish(&lesc->sc_sd, parent);
 
 	sc->sc_mediachange = lemediachange;
@@ -423,3 +425,12 @@
 	/* now initialize DMA */
 	lehwreset(sc);
 }
+
+void
+le_ledma_reset(device_t self)
+{
+	struct le_softc *lesc = device_private(self);
+	struct lance_softc *sc = &lesc->sc_am7990.lsc;
+
+	lance_reset(sc);
+}

Index: src/sys/dev/sbus/if_le.c
diff -u src/sys/dev/sbus/if_le.c:1.36 src/sys/dev/sbus/if_le.c:1.37
--- src/sys/dev/sbus/if_le.c:1.36	Mon Apr 28 20:23:57 2008
+++ src/sys/dev/sbus/if_le.c	Tue Sep  8 18:15:17 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_le.c,v 1.36 2008/04/28 20:23:57 martin Exp $	*/
+/*	$NetBSD: if_le.c,v 1.37 2009/09/08 18:15:17 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_le.c,v 1.36 2008/04/28 20:23:57 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_le.c,v 1.37 2009/09/08 18:15:17 tsutsui Exp $");
 
 #include "opt_inet.h"
 #include "bpfilter.h"
@@ -82,6 +82,8 @@
 int	lematch_sbus(device_t, cfdata_t, void *);
 void	leattach_sbus(device_t, device_t, void *);
 
+static void le_sbus_reset(device_t);
+
 /*
  * Media types supported.
  */
@@ -191,7 +193,7 @@
 		break;
 	}
 
-	lesc->sc_sd.sd_reset = (void *)lance_reset;
+	lesc->sc_sd.sd_reset = le_sbus_reset;
 	sbus_establish(&lesc->sc_sd, self);
 
 	if (sc->sc_mem == 0) {
@@ -264,3 +266,12 @@
 		(void)bus_intr_establish(lesc->sc_bustag, sa->sa_pri,
 					 IPL_NET, am7990_intr, sc);
 }
+
+void
+le_sbus_reset(device_t self)
+{
+	struct le_softc *lesc = device_private(self);
+	struct lance_softc *sc = &lesc->sc_am7990.lsc;
+
+	lance_reset(sc);
+}

Index: src/sys/dev/sbus/if_le_lebuffer.c
diff -u src/sys/dev/sbus/if_le_lebuffer.c:1.24 src/sys/dev/sbus/if_le_lebuffer.c:1.25
--- src/sys/dev/sbus/if_le_lebuffer.c:1.24	Mon Apr 28 20:23:57 2008
+++ src/sys/dev/sbus/if_le_lebuffer.c	Tue Sep  8 18:15:17 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_le_lebuffer.c,v 1.24 2008/04/28 20:23:57 martin Exp $	*/
+/*	$NetBSD: if_le_lebuffer.c,v 1.25 2009/09/08 18:15:17 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_le_lebuffer.c,v 1.24 2008/04/28 20:23:57 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_le_lebuffer.c,v 1.25 2009/09/08 18:15:17 tsutsui Exp $");
 
 #include "opt_inet.h"
 #include "bpfilter.h"
@@ -85,6 +85,8 @@
 int	lematch_lebuffer(device_t, cfdata_t, void *);
 void	leattach_lebuffer(device_t, device_t, void *);
 
+static void le_lebuffer_reset(device_t);
+
 /*
  * Media types supported.
  */
@@ -174,7 +176,7 @@
 				  LE_C3_BSWP | LE_C3_ACON | LE_C3_BCON);
 
 	/* Assume SBus is grandparent */
-	lesc->sc_sd.sd_reset = (void *)lance_reset;
+	lesc->sc_sd.sd_reset = le_lebuffer_reset;
 	sbus_establish(&lesc->sc_sd, parent);
 
 	sc->sc_supmedia = lemedia;
@@ -199,3 +201,12 @@
 		(void)bus_intr_establish(lesc->sc_bustag, sa->sa_pri,
 					 IPL_NET, am7990_intr, sc);
 }
+
+void
+le_lebuffer_reset(device_t self)
+{
+	struct le_softc *lesc = device_private(self);
+	struct lance_softc *sc = &lesc->sc_am7990.lsc;
+
+	lance_reset(sc);
+}

Reply via email to