Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2009 23:14:59 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187321 - head/sys/dev/iicbus
Message-ID:  <200901152314.n0FNExe5090163@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901152314.n0FNExe5090163>