Break circulare dependency on struct ethosu_device

The 'struct ethosu_device' has been passed as argument to classes.
This creates a circular dependency dependency and it gives all
classes full visibility to all resources in the device struct. This
patch removes the circular dependency.

Using device_lock() and device_unlock() to for synchronization.

Change-Id: I8322e6530c72d7bd67f48f411b4f14b612be2706
diff --git a/kernel/ethosu_inference.h b/kernel/ethosu_inference.h
index 5a3b860..9fa0a4a 100644
--- a/kernel/ethosu_inference.h
+++ b/kernel/ethosu_inference.h
@@ -37,7 +37,6 @@
 
 struct ethosu_buffer;
 struct ethosu_core_msg_inference_rsp;
-struct ethosu_device;
 struct ethosu_network;
 struct ethosu_uapi_inference_create;
 struct file;
@@ -60,7 +59,8 @@
  * @msg:			Mailbox message
  */
 struct ethosu_inference {
-	struct ethosu_device      *edev;
+	struct device             *dev;
+	struct ethosu_mailbox     *mailbox;
 	struct file               *file;
 	struct kref               kref;
 	wait_queue_head_t         waitq;
@@ -89,7 +89,8 @@
  *
  * Return: fd on success, else error code.
  */
-int ethosu_inference_create(struct ethosu_device *edev,
+int ethosu_inference_create(struct device *dev,
+			    struct ethosu_mailbox *mailbox,
 			    struct ethosu_network *net,
 			    struct ethosu_uapi_inference_create *uapi);
 
@@ -117,7 +118,7 @@
 /**
  * ethosu_inference_rsp() - Handle inference response
  */
-void ethosu_inference_rsp(struct ethosu_device *edev,
+void ethosu_inference_rsp(struct ethosu_mailbox *mailbox,
 			  int msg_id,
 			  struct ethosu_core_msg_inference_rsp *rsp);