svn commit: r354303 - head/sys/dev/ichiic
Vladimir Kondratyev
wulf at FreeBSD.org
Sun Nov 3 20:54:18 UTC 2019
Author: wulf
Date: Sun Nov 3 20:54:17 2019
New Revision: 354303
URL: https://svnweb.freebsd.org/changeset/base/354303
Log:
[ig4] Do not wait until interrupts are enabled at attach stage
as the driver is fully functional on a cold boot through utilization of
polled mode.
As a side effect, ig4 children probe and attach methods can be called
earlier in the boot sequence, so now it is up to the child drivers
to wait for a kernel initialization completion if it is required.
Modified:
head/sys/dev/ichiic/ig4_iic.c
head/sys/dev/ichiic/ig4_var.h
Modified: head/sys/dev/ichiic/ig4_iic.c
==============================================================================
--- head/sys/dev/ichiic/ig4_iic.c Sun Nov 3 20:53:13 2019 (r354302)
+++ head/sys/dev/ichiic/ig4_iic.c Sun Nov 3 20:54:17 2019 (r354303)
@@ -74,7 +74,6 @@ __FBSDID("$FreeBSD$");
#define DO_POLL(sc) (cold || kdb_active || SCHEDULER_STOPPED() || sc->poll)
-static void ig4iic_start(void *xdev);
static void ig4iic_intr(void *cookie);
static void ig4iic_dump(ig4iic_softc_t *sc);
@@ -664,38 +663,14 @@ ig4iic_attach(ig4iic_softc_t *sc)
"Unable to setup irq: error %d\n", error);
}
- sc->enum_hook.ich_func = ig4iic_start;
- sc->enum_hook.ich_arg = sc->dev;
-
- /*
- * We have to wait until interrupts are enabled. I2C read and write
- * only works if the interrupts are available.
- */
- if (config_intrhook_establish(&sc->enum_hook) != 0)
- error = ENOMEM;
- else
- error = 0;
-
-done:
- return (error);
-}
-
-void
-ig4iic_start(void *xdev)
-{
- int error;
- ig4iic_softc_t *sc;
- device_t dev = (device_t)xdev;
-
- sc = device_get_softc(dev);
-
- config_intrhook_disestablish(&sc->enum_hook);
-
error = bus_generic_attach(sc->dev);
if (error) {
device_printf(sc->dev,
"failed to attach child: error %d\n", error);
}
+
+done:
+ return (error);
}
int
Modified: head/sys/dev/ichiic/ig4_var.h
==============================================================================
--- head/sys/dev/ichiic/ig4_var.h Sun Nov 3 20:53:13 2019 (r354302)
+++ head/sys/dev/ichiic/ig4_var.h Sun Nov 3 20:54:17 2019 (r354303)
@@ -48,7 +48,6 @@ enum ig4_vers { IG4_HASWELL, IG4_ATOM, IG4_SKYLAKE, IG
struct ig4iic_softc {
device_t dev;
- struct intr_config_hook enum_hook;
device_t iicbus;
struct resource *regs_res;
int regs_rid;
More information about the svn-src-all
mailing list