diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c
index 83df62e..8e21512 100644
--- a/kernel/ethosu_device.c
+++ b/kernel/ethosu_device.c
@@ -83,9 +83,9 @@
 
 	device_lock(dev);
 
-	dev_info(dev,
-		 "Msg: magic=0x%08x, type=%u, msg_id=%llu",
-		 rpmsg->header.magic, rpmsg->header.type, rpmsg->header.msg_id);
+	dev_dbg(dev,
+		"Msg: magic=0x%08x, type=%u, msg_id=%llu",
+		rpmsg->header.magic, rpmsg->header.type, rpmsg->header.msg_id);
 
 	switch (rpmsg->header.type) {
 	case ETHOSU_CORE_MSG_ERR:
@@ -104,11 +104,11 @@
 		rproc_report_crash(rproc_get_by_child(dev), RPROC_FATAL_ERROR);
 		break;
 	case ETHOSU_CORE_MSG_PING:
-		dev_info(dev, "Msg: Ping");
+		dev_dbg(dev, "Msg: Ping");
 		ret = ethosu_mailbox_pong(mbox);
 		break;
 	case ETHOSU_CORE_MSG_PONG:
-		dev_info(dev, "Msg: Pong");
+		dev_dbg(dev, "Msg: Pong");
 		break;
 	case ETHOSU_CORE_MSG_INFERENCE_RSP:
 		if (length != sizeof(rpmsg->inf_rsp)) {
@@ -119,9 +119,9 @@
 			break;
 		}
 
-		dev_info(dev,
-			 "Msg: Inference response. ofm_count=%u, status=%u",
-			 rpmsg->inf_rsp.ofm_count, rpmsg->inf_rsp.status);
+		dev_dbg(dev,
+			"Msg: Inference response. ofm_count=%u, status=%u",
+			rpmsg->inf_rsp.ofm_count, rpmsg->inf_rsp.status);
 
 		ethosu_inference_rsp(mbox, rpmsg->header.msg_id,
 				     &rpmsg->inf_rsp);
@@ -135,9 +135,9 @@
 			break;
 		}
 
-		dev_info(dev,
-			 "Msg: Cancel Inference response. status=%u",
-			 rpmsg->cancel_rsp.status);
+		dev_dbg(dev,
+			"Msg: Cancel Inference response. status=%u",
+			rpmsg->cancel_rsp.status);
 		ethosu_cancel_inference_rsp(mbox,
 					    rpmsg->header.msg_id,
 					    &rpmsg->cancel_rsp);
@@ -167,21 +167,21 @@
 			break;
 		}
 
-		dev_info(dev,
-			 "Msg: Capabilities response vs%hhu v%hhu.%hhu p%hhu av%hhu.%hhu.%hhu dv%hhu.%hhu.%hhu mcc%hhu csv%hhu cd%hhu",
-			 rpmsg->cap_rsp.version_status,
-			 rpmsg->cap_rsp.version_major,
-			 rpmsg->cap_rsp.version_minor,
-			 rpmsg->cap_rsp.product_major,
-			 rpmsg->cap_rsp.arch_major_rev,
-			 rpmsg->cap_rsp.arch_minor_rev,
-			 rpmsg->cap_rsp.arch_patch_rev,
-			 rpmsg->cap_rsp.driver_major_rev,
-			 rpmsg->cap_rsp.driver_minor_rev,
-			 rpmsg->cap_rsp.driver_patch_rev,
-			 rpmsg->cap_rsp.macs_per_cc,
-			 rpmsg->cap_rsp.cmd_stream_version,
-			 rpmsg->cap_rsp.custom_dma);
+		dev_dbg(dev,
+			"Msg: Capabilities response vs%hhu v%hhu.%hhu p%hhu av%hhu.%hhu.%hhu dv%hhu.%hhu.%hhu mcc%hhu csv%hhu cd%hhu",
+			rpmsg->cap_rsp.version_status,
+			rpmsg->cap_rsp.version_major,
+			rpmsg->cap_rsp.version_minor,
+			rpmsg->cap_rsp.product_major,
+			rpmsg->cap_rsp.arch_major_rev,
+			rpmsg->cap_rsp.arch_minor_rev,
+			rpmsg->cap_rsp.arch_patch_rev,
+			rpmsg->cap_rsp.driver_major_rev,
+			rpmsg->cap_rsp.driver_minor_rev,
+			rpmsg->cap_rsp.driver_patch_rev,
+			rpmsg->cap_rsp.macs_per_cc,
+			rpmsg->cap_rsp.cmd_stream_version,
+			rpmsg->cap_rsp.custom_dma);
 
 		ethosu_capability_rsp(mbox, rpmsg->header.msg_id,
 				      &rpmsg->cap_rsp);
@@ -195,9 +195,9 @@
 			break;
 		}
 
-		dev_info(dev,
-			 "Msg: Network info response. status=%u",
-			 rpmsg->net_info_rsp.status);
+		dev_dbg(dev,
+			"Msg: Network info response. status=%u",
+			rpmsg->net_info_rsp.status);
 
 		ethosu_network_info_rsp(mbox,
 					rpmsg->header.msg_id,
@@ -228,7 +228,7 @@
 	struct rpmsg_device *rpdev = edev->rpdev;
 	struct device *dev = &edev->dev;
 
-	dev_info(dev, "Device open. file=0x%pK", file);
+	dev_dbg(dev, "Device open. file=0x%pK", file);
 
 	file->private_data = rpdev;
 
@@ -245,9 +245,6 @@
 	void __user *udata = (void __user *)arg;
 	int ret;
 
-	dev_info(dev, "Device ioctl. file=0x%pK, cmd=0x%x, arg=0x%lx",
-		 file, cmd, arg);
-
 	switch (cmd) {
 	case ETHOSU_IOCTL_DRIVER_VERSION_GET: {
 		const struct ethosu_uapi_kernel_driver_version version = {
@@ -261,7 +258,7 @@
 		break;
 	}
 	case ETHOSU_IOCTL_CAPABILITIES_REQ: {
-		dev_info(dev, "Device ioctl: Capabilities request");
+		dev_dbg(dev, "Device ioctl: Capabilities request");
 
 		ret = copy_to_user(udata, &edev->capabilities,
 				   sizeof(edev->capabilities)) ? -EFAULT : 0;
@@ -272,7 +269,7 @@
 		if (ret)
 			return ret;
 
-		dev_info(dev, "Device ioctl: Send ping");
+		dev_dbg(dev, "Device ioctl: Send ping");
 
 		ret = ethosu_mailbox_ping(&edev->mailbox);
 
@@ -292,9 +289,9 @@
 		if (ret)
 			return ret;
 
-		dev_info(dev,
-			 "Device ioctl: Buffer create. capacity=%u",
-			 uapi.capacity);
+		dev_dbg(dev,
+			"Device ioctl: Buffer create. capacity=%u",
+			uapi.capacity);
 
 		ret = ethosu_buffer_create(dev, uapi.capacity);
 
@@ -314,9 +311,9 @@
 		if (ret)
 			return ret;
 
-		dev_info(dev,
-			 "Device ioctl: Network create. type=%u, fd/index=%u",
-			 uapi.type, uapi.fd);
+		dev_dbg(dev,
+			"Device ioctl: Network create. type=%u, fd/index=%u",
+			uapi.type, uapi.fd);
 
 		ret = ethosu_network_create(dev, &edev->mailbox, &uapi);
 
@@ -346,8 +343,8 @@
 	info.src = 0;
 	info.dst = rpdev->dst;
 
-	dev_info(dev, "Creating rpmsg endpoint. name=%s, src=%u, dst=%u",
-		 info.name, info.src, info.dst);
+	dev_dbg(dev, "Creating rpmsg endpoint. name=%s, src=%u, dst=%u",
+		info.name, info.src, info.dst);
 
 	ept = rpmsg_create_ept(rpdev, ethosu_handle_rpmsg, NULL, info);
 	if (!ept) {
@@ -372,8 +369,6 @@
 {
 	struct ethosu_device *edev = dev_get_drvdata(dev);
 
-	dev_info(dev, "%s", __FUNCTION__);
-
 	clear_bit(MINOR(edev->cdev.dev), minors);
 
 	ethosu_mailbox_deinit(&edev->mailbox);
@@ -448,8 +443,6 @@
 	int minor;
 	int ret;
 
-	dev_info(dev, "%s", __FUNCTION__);
-
 	/* Reserve minor number for device node */
 	minor = find_first_zero_bit(minors, MINOR_COUNT);
 	if (minor >= MINOR_COUNT) {
@@ -558,8 +551,6 @@
 	struct device *dev = &rpdev->dev;
 	struct ethosu_device *edev = dev_get_drvdata(dev);
 
-	dev_info(dev, "%s", __FUNCTION__);
-
 	device_lock(&edev->dev);
 	ethosu_mailbox_fail(&edev->mailbox);
 	device_unlock(&edev->dev);
