greybus: move versioning from svc message header to handshake function

The Greybus spec has been updated to improve the efficiency of the
version major/minor information that had been previously carried in
every SVC message header. The version major/minor is now provided
as part of the handshake function.

Update the SVC msg header and handshake function payload definitions
and move the version major/minor validation into the SVC handshake
handling routine.

Signed-off-by: Matt Porter <mporter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/ap.c b/drivers/staging/greybus/ap.c
index c2c5aa6..2a60de0 100644
--- a/drivers/staging/greybus/ap.c
+++ b/drivers/staging/greybus/ap.c
@@ -65,7 +65,15 @@
 {
 	struct svc_msg *svc_msg;
 
-	/* A new SVC communication channel, let's verify it was for us */
+	/* A new SVC communication channel, let's verify a supported version */
+	if ((handshake->version_major != GREYBUS_VERSION_MAJOR) &&
+	    (handshake->version_minor != GREYBUS_VERSION_MINOR)) {
+		dev_dbg(hd->parent, "received invalid greybus version %d:%d\n",
+			handshake->version_major, handshake->version_minor);
+		return;
+	}
+
+	/* Validate that the handshake came from the SVC */
 	if (handshake->handshake_type != SVC_HANDSHAKE_SVC_HELLO) {
 		/* we don't know what to do with this, log it and return */
 		dev_dbg(hd->parent, "received invalid handshake type %d\n",
@@ -162,11 +170,6 @@
 
 	svc_msg = (struct svc_msg *)ap_msg->data;
 
-	/* Verify the version is something we can handle with this code */
-	if ((svc_msg->header.version_major != GREYBUS_VERSION_MAJOR) &&
-	    (svc_msg->header.version_minor != GREYBUS_VERSION_MINOR))
-		return NULL;
-
 	return svc_msg;
 }