diff options
Diffstat (limited to 'sys/dev/smbus/smbconf.c')
-rw-r--r-- | sys/dev/smbus/smbconf.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/smbus/smbconf.c b/sys/dev/smbus/smbconf.c index d97305c..1d44ef3 100644 --- a/sys/dev/smbus/smbconf.c +++ b/sys/dev/smbus/smbconf.c @@ -132,8 +132,12 @@ smbus_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 = SMBUS_CALLBACK(device_get_parent(bus), SMB_REQUEST_BUS, - (caddr_t)&how); + do { + error = SMBUS_CALLBACK(device_get_parent(bus), + SMB_REQUEST_BUS, (caddr_t)&how); + if (error) + error = smbus_poll(sc, how); + } while (error == EWOULDBLOCK); while (!error) { s = splhigh(); |