Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci Modularize
details: https://anonhg.NetBSD.org/src/rev/220d40acd7ef
branches: trunk
changeset: 325697:220d40acd7ef
user: pgoyette <pgoyette%NetBSD.org@localhost>
date: Fri Jan 03 16:09:22 2014 +0000
description:
Modularize
diffstat:
sys/dev/pci/hifn7751.c | 80 +++++++++++++++++++++++++++++++++++++++++++++-
sys/dev/pci/hifn7751var.h | 5 ++-
2 files changed, 82 insertions(+), 3 deletions(-)
diffs (145 lines):
diff -r d76d0206d220 -r 220d40acd7ef sys/dev/pci/hifn7751.c
--- a/sys/dev/pci/hifn7751.c Fri Jan 03 16:07:27 2014 +0000
+++ b/sys/dev/pci/hifn7751.c Fri Jan 03 16:09:22 2014 +0000
@@ -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 @@
#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(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 @@
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 @@
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)
{
diff -r d76d0206d220 -r 220d40acd7ef sys/dev/pci/hifn7751var.h
--- a/sys/dev/pci/hifn7751var.h Fri Jan 03 16:07:27 2014 +0000
+++ b/sys/dev/pci/hifn7751var.h Fri Jan 03 16:09:22 2014 +0000
@@ -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 @@
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;
Home |
Main Index |
Thread Index |
Old Index