summaryrefslogtreecommitdiffstats
path: root/sys/dev/smbus/smbconf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/smbus/smbconf.c')
-rw-r--r--sys/dev/smbus/smbconf.c30
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
OpenPOWER on IntegriCloud