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