PERFORCE change 107391 for review
Warner Losh
imp at FreeBSD.org
Fri Oct 6 21:29:29 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=107391
Change 107391 by imp at imp_lighthouse on 2006/10/07 04:29:14
Start on deferred ID.
Affected files ...
.. //depot/projects/arm/src/sys/dev/flash/at45d.c#3 edit
Differences ...
==== //depot/projects/arm/src/sys/dev/flash/at45d.c#3 (text+ko) ====
@@ -39,9 +39,23 @@
struct at45d_softc
{
+ struct intr_config_hook config_intrhook;
+ device_t dev;
+ struct mtx sc_mtx;
int dummy;
};
+#define AT45D_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
+#define AT45D_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
+#define AT45D_LOCK_INIT(_sc) \
+ mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->dev), \
+ "at45d", MTX_DEF)
+#define AT45D_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx);
+#define AT45D_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED);
+#define AT45D_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED);
+
+static void at45d_delayed_attach(void *xsc);
+
#define CONTINUOUS_ARRAY_READ 0xE8
#define CONTINUOUS_ARRAY_READ_HF 0x0B
#define CONTINUOUS_ARRAY_READ_LF 0x03
@@ -244,6 +258,17 @@
static int
at45d_attach(device_t dev)
{
+ struct at45d_softc *sc;
+
+ sc = device_get_softc(dev);
+ sc->dev = dev;
+ AT45D_LOCK_INIT(sc);
+
+ /* We'll see what kind of flash we have later... */
+ sc->config_intrhook.ich_func = at45d_delayed_attach;
+ sc->config_intrhook.ich_arg = sc;
+ if (config_intrhook_establish(&sc->config_intrhook) != 0)
+ device_printf(dev, "config_intrhook_establish failed\n");
return (0);
}
@@ -253,6 +278,14 @@
return EIO;
}
+static void
+at45d_delayed_attach(void *xsc)
+{
+ struct at45d_softc *sc = xsc;
+
+ config_intrhook_disestablish(&sc->config_intrhook);
+}
+
static devclass_t at45d_devclass;
static device_method_t at45d_methods[] = {
More information about the p4-projects
mailing list