Improve mailbox message handling

Introduce a 32b magic for each message. Verify the magic for
all incoming messages.

Add reset function - in case of protocol error, effectively
reset/empty the incoming queue.

Add an error message type and message

Add version request/response

Verify payload length of responses (when applicable)

Change-Id: I8aadd4012024492533d52e2cdb38630fce5c36e2
diff --git a/kernel/ethosu_mailbox.h b/kernel/ethosu_mailbox.h
index 8f539ee..0bc5ffb 100644
--- a/kernel/ethosu_mailbox.h
+++ b/kernel/ethosu_mailbox.h
@@ -24,6 +24,7 @@
 /****************************************************************************
  * Includes
  ****************************************************************************/
+#include "ethosu_core_interface.h"
 
 #include <linux/types.h>
 #include <linux/mailbox_client.h>
@@ -87,6 +88,11 @@
 			size_t length);
 
 /**
+ * ethosu_mailbox_reset() - Reset to end of queue
+ */
+void ethosu_mailbox_reset(struct ethosu_mailbox *mbox);
+
+/**
  * ethosu_mailbox_ping() - Send ping message
  *
  * Return: 0 on success, else error code.
@@ -94,6 +100,20 @@
 int ethosu_mailbox_ping(struct ethosu_mailbox *mbox);
 
 /**
+ * ethosu_mailbox_pong() - Send pong response
+ *
+ * Return: 0 on success, else error code.
+ */
+int ethosu_mailbox_pong(struct ethosu_mailbox *mbox);
+
+/**
+ * ethosu_mailbox_version_response - Send version request
+ *
+ * Return: 0 on succes, else error code
+ */
+int ethosu_mailbox_version_request(struct ethosu_mailbox *mbox);
+
+/**
  * ethosu_mailbox_inference() - Send inference
  *
  * Return: 0 on success, else error code.