diff options
Diffstat (limited to 'sys/dev/iicbus')
-rw-r--r-- | sys/dev/iicbus/iicbus.c | 2 | ||||
-rw-r--r-- | sys/dev/iicbus/iiconf.c | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c index e4b6f8d..26912fc 100644 --- a/sys/dev/iicbus/iicbus.c +++ b/sys/dev/iicbus/iicbus.c @@ -250,7 +250,7 @@ iicbus_print_child(device_t bus, device_t dev) break; default: - panic("%s: unknown class!\n", __FUNCTION__); + panic("%s: unknown class!", __FUNCTION__); } return (retval); diff --git a/sys/dev/iicbus/iiconf.c b/sys/dev/iicbus/iiconf.c index 42d3a96..52e92f7 100644 --- a/sys/dev/iicbus/iiconf.c +++ b/sys/dev/iicbus/iiconf.c @@ -104,8 +104,12 @@ iicbus_request_bus(device_t bus, device_t dev, int how) int s, error = 0; /* first, ask the underlying layers if the request is ok */ - error = IICBUS_CALLBACK(device_get_parent(bus), IIC_REQUEST_BUS, - (caddr_t)&how); + do { + error = IICBUS_CALLBACK(device_get_parent(bus), + IIC_REQUEST_BUS, (caddr_t)&how); + if (error) + error = iicbus_poll(sc, how); + } while (error == EWOULDBLOCK); while (!error) { s = splhigh(); |