Module Name:    src
Committed By:   pgoyette
Date:           Fri Jan  3 16:09:22 UTC 2014

Modified Files:
        src/sys/dev/pci: hifn7751.c hifn7751var.h

Log Message:
Modularize


To generate a diff of this commit:
cvs rdiff -u -r1.52 -r1.53 src/sys/dev/pci/hifn7751.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/pci/hifn7751var.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/dev/pci/hifn7751.c
diff -u src/sys/dev/pci/hifn7751.c:1.52 src/sys/dev/pci/hifn7751.c:1.53
--- src/sys/dev/pci/hifn7751.c:1.52	Thu Jun 13 00:55:01 2013
+++ src/sys/dev/pci/hifn7751.c	Fri Jan  3 16:09:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: hifn7751.c,v 1.52 2013/06/13 00:55:01 tls Exp $	*/
+/*	$NetBSD: hifn7751.c,v 1.53 2014/01/03 16:09:22 pgoyette Exp $	*/
 /*	$FreeBSD: hifn7751.c,v 1.5.2.7 2003/10/08 23:52:00 sam Exp $ */
 /*	$OpenBSD: hifn7751.c,v 1.140 2003/08/01 17:55:54 deraadt Exp $	*/
 
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v 1.52 2013/06/13 00:55:01 tls Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v 1.53 2014/01/03 16:09:22 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -59,6 +59,7 @@ __KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v
 #include <sys/kernel.h>
 #include <sys/mbuf.h>
 #include <sys/device.h>
+#include <sys/module.h>
 
 #ifdef __OpenBSD__
 #include <crypto/crypto.h>
@@ -101,9 +102,15 @@ static int hifn_probe((struct device *, 
 static int hifn_probe(device_t, cfdata_t, void *);
 #endif
 static void hifn_attach(device_t, device_t, void *);
+#ifdef __NetBSD__
+static int hifn_detach(device_t, int);
 
 CFATTACH_DECL_NEW(hifn, sizeof(struct hifn_softc),
+    hifn_probe, hifn_attach, hifn_detach, NULL);
+#else
+CFATTACH_DECL_NEW(hifn, sizeof(struct hifn_softc),
     hifn_probe, hifn_attach, NULL, NULL);
+#endif
 
 #ifdef __OpenBSD__
 struct cfdriver hifn_cd = {
@@ -241,7 +248,12 @@ hifn_attach(device_t parent, device_t se
 	const char *intrstr = NULL;
 	const char *hifncap;
 	char rbase;
+#ifdef __NetBSD__
+#define iosize0 sc->sc_iosz0
+#define iosize1 sc->sc_iosz1
+#else
 	bus_size_t iosize0, iosize1;
+#endif
 	u_int32_t cmd;
 	u_int16_t ena;
 	bus_dma_segment_t seg;
@@ -453,6 +465,70 @@ fail_io0:
 	bus_space_unmap(sc->sc_st0, sc->sc_sh0, iosize0);
 }
 
+#ifdef __NetBSD__
+static int
+hifn_detach(device_t self, int flags)
+{
+	struct hifn_softc *sc = device_private(self);
+
+	hifn_abort(sc);
+
+	hifn_reset_board(sc, 1);
+
+	pci_intr_disestablish(sc->sc_pci_pc, sc->sc_ih);
+
+	crypto_unregister_all(sc->sc_cid);
+
+	rnd_detach_source(&sc->sc_rnd_source);
+
+	mutex_enter(&sc->sc_mtx);
+	callout_halt(&sc->sc_tickto, NULL);
+	if (sc->sc_flags & (HIFN_HAS_PUBLIC | HIFN_HAS_RNG))
+		callout_halt(&sc->sc_rngto, NULL);
+	mutex_exit(&sc->sc_mtx);
+
+	bus_space_unmap(sc->sc_st1, sc->sc_sh1, sc->sc_iosz1);
+	bus_space_unmap(sc->sc_st0, sc->sc_sh0, sc->sc_iosz0);
+
+	/*
+	 * XXX It's not clear if any additional buffers have been
+	 * XXX allocated and require free()ing
+	 */
+
+	return 0;
+}
+
+MODULE(MODULE_CLASS_DRIVER, hifn, "pci,opencrypto");
+
+#ifdef _MODULE
+#include "ioconf.c"
+#endif
+
+static int
+hifn_modcmd(modcmd_t cmd, void *data)
+{
+	int error = 0;
+
+	switch(cmd) {
+	case MODULE_CMD_INIT:
+#ifdef _MODULE
+		error = config_init_component(cfdriver_ioconf_hifn,
+		    cfattach_ioconf_hifn, cfdata_ioconf_hifn);
+#endif
+		return error;
+	case MODULE_CMD_FINI:
+#ifdef _MODULE
+		error = config_fini_component(cfdriver_ioconf_hifn,
+		    cfattach_ioconf_hifn, cfdata_ioconf_hifn);
+#endif
+		return error;
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif /* ifdef __NetBSD__ */
+
 static void
 hifn_rng_get(size_t bytes, void *priv)
 {

Index: src/sys/dev/pci/hifn7751var.h
diff -u src/sys/dev/pci/hifn7751var.h:1.10 src/sys/dev/pci/hifn7751var.h:1.11
--- src/sys/dev/pci/hifn7751var.h:1.10	Thu Jun 13 00:55:01 2013
+++ src/sys/dev/pci/hifn7751var.h	Fri Jan  3 16:09:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: hifn7751var.h,v 1.10 2013/06/13 00:55:01 tls Exp $	*/
+/*	$NetBSD: hifn7751var.h,v 1.11 2014/01/03 16:09:22 pgoyette Exp $	*/
 /*	$OpenBSD: hifn7751var.h,v 1.18 2000/06/02 22:36:45 deraadt Exp $	*/
 
 /*
@@ -144,6 +144,9 @@ struct hifn_softc {
 
 	bus_space_handle_t	sc_sh0, sc_sh1;
 	bus_space_tag_t		sc_st0, sc_st1;
+#ifdef __NetBSD__
+	bus_size_t		sc_iosz0, sc_iosz1;
+#endif
 	bus_dma_tag_t		sc_dmat;
 
 	struct hifn_dma *sc_dma;

Reply via email to