diff --git a/kernel/ethosu_buffer.c b/kernel/ethosu_buffer.c
index a83a95a..0fcbf3b 100644
--- a/kernel/ethosu_buffer.c
+++ b/kernel/ethosu_buffer.c
@@ -89,21 +89,24 @@
 {
 	struct ethosu_buffer *buf =
 		container_of(kref, struct ethosu_buffer, kref);
+	struct device *dev = buf->dev;
+	struct rproc *rproc = rproc_get_by_child(dev);
 
-	dev_info(buf->edev->dev, "Buffer destroy. buf=0x%pK\n", buf);
+	dev_info(dev, "Buffer destroy. buf=0x%pK\n", buf);
 
-	dma_free_coherent(buf->dev, buf->capacity, buf->cpu_addr,
+	dma_free_coherent(rproc->dev.parent, buf->capacity, buf->cpu_addr,
 			  buf->dma_addr);
 
-	devm_kfree(buf->edev->dev, buf);
+	devm_kfree(dev, buf);
 }
 
 static int ethosu_buffer_release(struct inode *inode,
 				 struct file *file)
 {
 	struct ethosu_buffer *buf = file->private_data;
+	struct device *dev = buf->dev;
 
-	dev_info(buf->edev->dev, "Buffer release. file=0x%pK, buf=0x%pK\n",
+	dev_info(dev, "Buffer release. file=0x%pK, buf=0x%pK\n",
 		 file, buf);
 
 	ethosu_buffer_put(buf);
@@ -115,12 +118,13 @@
 			      struct vm_area_struct *vma)
 {
 	struct ethosu_buffer *buf = file->private_data;
+	struct device *dev = buf->dev;
 	int ret;
 
-	dev_info(buf->edev->dev, "Buffer mmap. file=0x%pK, buf=0x%pK\n",
+	dev_info(dev, "Buffer mmap. file=0x%pK, buf=0x%pK\n",
 		 file, buf);
 
-	ret = dma_mmap_coherent(buf->edev->dev, vma, buf->cpu_addr,
+	ret = dma_mmap_coherent(dev, vma, buf->cpu_addr,
 				buf->dma_addr, buf->capacity);
 
 	return ret;
@@ -131,14 +135,15 @@
 				unsigned long arg)
 {
 	struct ethosu_buffer *buf = file->private_data;
+	struct device *dev = buf->dev;
 	void __user *udata = (void __user *)arg;
 	int ret = -EINVAL;
 
-	ret = mutex_lock_interruptible(&buf->edev->mutex);
+	ret = device_lock_interruptible(dev);
 	if (ret)
 		return ret;
 
-	dev_info(buf->edev->dev,
+	dev_info(dev,
 		 "Buffer ioctl. file=0x%pK, buf=0x%pK, cmd=0x%x, arg=%lu\n",
 		 file, buf, cmd, arg);
 
@@ -149,7 +154,7 @@
 		if (copy_from_user(&uapi, udata, sizeof(uapi)))
 			break;
 
-		dev_info(buf->edev->dev,
+		dev_info(dev,
 			 "Buffer ioctl: Buffer set. size=%u, offset=%u\n",
 			 uapi.size, uapi.offset);
 
@@ -162,7 +167,7 @@
 		uapi.size = buf->size;
 		uapi.offset = buf->offset;
 
-		dev_info(buf->edev->dev,
+		dev_info(dev,
 			 "Buffer ioctl: Buffer get. size=%u, offset=%u\n",
 			 uapi.size, uapi.offset);
 
@@ -173,40 +178,38 @@
 		break;
 	}
 	default: {
-		dev_err(buf->edev->dev, "Invalid ioctl. cmd=%u, arg=%lu",
+		dev_err(dev, "Invalid ioctl. cmd=%u, arg=%lu",
 			cmd, arg);
 		break;
 	}
 	}
 
-	mutex_unlock(&buf->edev->mutex);
+	device_unlock(dev);
 
 	return ret;
 }
 
-int ethosu_buffer_create(struct ethosu_device *edev,
+int ethosu_buffer_create(struct device *dev,
 			 size_t capacity)
 {
-	struct rproc *rproc = rproc_get_by_child(edev->dev);
-	struct device *dev = rproc->dev.parent;
+	struct rproc *rproc = rproc_get_by_child(dev);
 	struct ethosu_buffer *buf;
 	int ret = -ENOMEM;
 
 	if (!capacity)
 		return -EINVAL;
 
-	buf = devm_kzalloc(edev->dev, sizeof(*buf), GFP_KERNEL);
+	buf = devm_kzalloc(dev, sizeof(*buf), GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
 
-	buf->edev = edev;
 	buf->dev = dev;
 	buf->capacity = capacity;
 	buf->offset = 0;
 	buf->size = 0;
 	kref_init(&buf->kref);
 
-	buf->cpu_addr = dma_alloc_coherent(dev, capacity,
+	buf->cpu_addr = dma_alloc_coherent(rproc->dev.parent, capacity,
 					   &buf->dma_addr, GFP_KERNEL);
 	if (!buf->cpu_addr)
 		goto free_buf;
@@ -219,7 +222,7 @@
 	buf->file = fget(ret);
 	fput(buf->file);
 
-	dev_info(buf->edev->dev,
+	dev_info(dev,
 		 "Buffer create. file=0x%pK, fd=%d, buf=0x%pK, capacity=%zu, cpu_addr=0x%pK, dma_addr=0x%llx, phys_addr=0x%llx\n",
 		 buf->file, ret, buf, capacity, buf->cpu_addr, buf->dma_addr,
 		 virt_to_phys(buf->cpu_addr));
@@ -227,11 +230,11 @@
 	return ret;
 
 free_dma:
-	dma_free_coherent(buf->edev->dev, buf->capacity, buf->cpu_addr,
+	dma_free_coherent(rproc->dev.parent, buf->capacity, buf->cpu_addr,
 			  buf->dma_addr);
 
 free_buf:
-	devm_kfree(buf->edev->dev, buf);
+	devm_kfree(dev, buf);
 
 	return ret;
 }
