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
This commit is contained in:
nwhitehorn 2009-01-15 23:14:59 +00:00
parent f1c7376075
commit 7fc852ff0a

View File

@ -110,14 +110,18 @@ iic_identify(driver_t *driver, device_t parent)
{
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