greybus: define GB_OP_NONEXISTENT

The i2c protocol needs a way to indicate an i2c device doesn't exist
(which is not necessarily an error).  Define GB_OP_NONEXISTENT to
indicate this, and updating the status<->errno mapping functions
accordingly.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index 046ed2a..742eccc 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -396,6 +396,8 @@
 		return -EINVAL;
 	case GB_OP_RETRY:
 		return -EAGAIN;
+	case GB_OP_NONEXISTENT:
+		return -ENODEV;
 	case GB_OP_MALFUNCTION:
 		return -EILSEQ;
 	case GB_OP_UNKNOWN_ERROR:
@@ -431,6 +433,8 @@
 		return GB_OP_RETRY;
 	case -EILSEQ:
 		return GB_OP_MALFUNCTION;
+	case -ENODEV:
+		return GB_OP_NONEXISTENT;
 	case -EIO:
 	default:
 		return GB_OP_UNKNOWN_ERROR;
diff --git a/drivers/staging/greybus/operation.h b/drivers/staging/greybus/operation.h
index a173aa9..1ade52b 100644
--- a/drivers/staging/greybus/operation.h
+++ b/drivers/staging/greybus/operation.h
@@ -34,6 +34,7 @@
 	GB_OP_OVERFLOW		= 0x05,
 	GB_OP_INVALID		= 0x06,
 	GB_OP_RETRY		= 0x07,
+	GB_OP_NONEXISTENT	= 0x08,
 	GB_OP_UNKNOWN_ERROR	= 0xfe,
 	GB_OP_MALFUNCTION	= 0xff,
 };