From ee9db219dff147dedea08dc1d145499de46fee5b Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Thu, 15 Jan 2009 23:14:59 +0000 Subject: [PATCH] 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 --- sys/dev/iicbus/iic.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/dev/iicbus/iic.c b/sys/dev/iicbus/iic.c index 685dfaf27f6..ebc167deec6 100644 --- a/sys/dev/iicbus/iic.c +++ b/sys/dev/iicbus/iic.c @@ -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