svn commit: r187321 - head/sys/dev/iicbus

Nathan Whitehorn nwhitehorn at FreeBSD.org
Thu Jan 15 15:15:00 PST 2009


Author: nwhitehorn
Date: Thu Jan 15 23:14:59 2009
New Revision: 187321
URL: http://svn.freebsd.org/changeset/base/187321

Log:
  Revert revision 186833 and try a different strategy to allow this device to
  work when the bus attaches its own children. Instead of hardcoding a unit
  number and returning BUS_PROBE_NOWILDCARD, which will break multiple iicbus
  systems, check in the probe routine whether the device address is 0. Real
  I2C devices will never have this address, but devices added with
  BUS_ADD_CHILD() will.
  
  Requested by:	jhb
  Reviewed by:	jhb

Modified:
  head/sys/dev/iicbus/iic.c

Modified: head/sys/dev/iicbus/iic.c
==============================================================================
--- head/sys/dev/iicbus/iic.c	Thu Jan 15 23:11:02 2009	(r187320)
+++ head/sys/dev/iicbus/iic.c	Thu Jan 15 23:14:59 2009	(r187321)
@@ -110,14 +110,18 @@ iic_identify(driver_t *driver, device_t 
 {
 
 	if (device_find_child(parent, "iic", -1) == NULL)
-		BUS_ADD_CHILD(parent, 0, "iic", 0);
+		BUS_ADD_CHILD(parent, 0, "iic", -1);
 }
 
 static int
 iic_probe(device_t dev)
 {
+	if (iicbus_get_addr(dev) > 0)
+		return (ENXIO);
+
 	device_set_desc(dev, "I2C generic I/O");
-	return (BUS_PROBE_NOWILDCARD);
+
+	return (0);
 }
 	
 static int


More information about the svn-src-all mailing list