diff options
Diffstat (limited to 'sys/dev/smbus/smbconf.c')
-rw-r--r-- | sys/dev/smbus/smbconf.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/sys/dev/smbus/smbconf.c b/sys/dev/smbus/smbconf.c index 1e7d8c4..59c105c 100644 --- a/sys/dev/smbus/smbconf.c +++ b/sys/dev/smbus/smbconf.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: smbconf.c,v 1.4 1999/01/09 18:08:23 nsouch Exp $ + * $Id: smbconf.c,v 1.5 1999/02/13 17:57:19 nsouch Exp $ * */ #include <sys/param.h> @@ -53,6 +53,34 @@ smbus_intr(device_t bus, u_char devaddr, char low, char high, int error) } /* + * smbus_error() + * + * Converts an smbus error to a unix error. + */ +int +smbus_error(int smb_error) +{ + int error = 0; + + if (smb_error == SMB_ENOERR) + return (0); + + if (smb_error & (SMB_ENOTSUPP)) { + error = ENODEV; + } else if (smb_error & (SMB_ENOACK)) { + error = ENXIO; + } else if (smb_error & (SMB_ETIMEOUT)) { + error = EWOULDBLOCK; + } else if (smb_error & (SMB_EBUSY)) { + error = EBUSY; + } else { + error = EINVAL; + } + + return (error); +} + +/* * smbus_alloc_bus() * * Allocate a new bus connected to the given parent device |