Index: sys/dev/iicbus/iic.c =================================================================== --- sys/dev/iicbus/iic.c +++ sys/dev/iicbus/iic.c @@ -228,9 +228,9 @@ } } else if (uio->uio_rw == UIO_READ) { - error = iicbus_read(parent, buffer, + error = iic2errno(iicbus_read(parent, buffer, num_bytes, &transferred_bytes, - ((uio->uio_resid <= sizeof(buffer)) ? last : 0), 0); + ((uio->uio_resid <= sizeof(buffer)) ? last : 0), 0)); if (error == 0) error = uiomove(buffer, transferred_bytes, uio); } @@ -261,8 +261,8 @@ } parent = device_get_parent(priv->sc->sc_dev); - error = iicbus_request_bus(parent, priv->sc->sc_dev, - (ioflag & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR)); + error = iic2errno(iicbus_request_bus(parent, priv->sc->sc_dev, + (ioflag & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR))); if (error != 0) { IIC_UNLOCK(priv); return (error); @@ -273,7 +273,7 @@ else addr = priv->addr & ~LSB; - error = iicbus_start(parent, addr, 0); + error = iic2errno(iicbus_start(parent, addr, 0)); if (error != 0) { iicbus_release_bus(parent, priv->sc->sc_dev); @@ -335,11 +335,11 @@ } if (error == 0) - error = iicbus_request_bus(parent, iicdev, - (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR)); + error = iic2errno(iicbus_request_bus(parent, iicdev, + (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR))); if (error == 0) { - error = iicbus_transfer(iicdev, buf, d->nmsgs); + error = iic2errno(iicbus_transfer(iicdev, buf, d->nmsgs)); iicbus_release_bus(parent, iicdev); } @@ -384,11 +384,11 @@ error = EINVAL; break; } - error = iicbus_request_bus(parent, iicdev, - (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR)); + error = iic2errno(iicbus_request_bus(parent, iicdev, + (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR))); - if (error == 0) - error = iicbus_start(parent, s->slave, 0); + if (error == 0) + error = iic2errno(iicbus_start(parent, s->slave, 0)); if (error == 0) { priv->addr = s->slave; @@ -400,7 +400,7 @@ case I2CSTOP: if (priv->started) { - error = iicbus_stop(parent); + error = iic2errno(iicbus_stop(parent)); iicbus_release_bus(parent, iicdev); priv->started = false; } @@ -414,8 +414,8 @@ * sequence; however, bus reset will always be followed by release * (a new start is presumably needed for I/O anyway). */ if (!priv->started) - error = iicbus_request_bus(parent, iicdev, - (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR)); + error = iic2errno(iicbus_request_bus(parent, iicdev, + (flags & O_NONBLOCK) ? IIC_DONTWAIT : (IIC_WAIT | IIC_INTR))); if (error == 0) { error = iicbus_reset(parent, IIC_UNKNOWN, 0, NULL); @@ -484,7 +484,7 @@ error = EINVAL; break; } - error = iicbus_repeated_start(parent, s->slave, 0); + error = iic2errno(iicbus_repeated_start(parent, s->slave, 0)); break; case I2CSADDR: