Removing watchdog and reset

Removing watchdog and firmware reset as a preparations for the
migrations to rpmsg.

Change-Id: Ic1053e3f4301ecadbde8c59dbaed437625a0a5ea
diff --git a/kernel/Kbuild b/kernel/Kbuild
index d4610bc..867d6aa 100644
--- a/kernel/Kbuild
+++ b/kernel/Kbuild
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2020,2022 Arm Limited.
+# Copyright 2020,2022-2023 Arm Limited and/or its affiliates
 #
 # This program is free software and is provided to you under the terms of the
 # GNU General Public License version 2 as published by the Free Software
@@ -27,6 +27,5 @@
                ethosu_mailbox.o \
                ethosu_network.o \
                ethosu_network_info.o \
-               ethosu_watchdog.o \
                ethosu_capabilities.o \
                ethosu_cancel_inference.o
diff --git a/kernel/ethosu_cancel_inference.c b/kernel/ethosu_cancel_inference.c
index e2acb22..c1d31b3 100644
--- a/kernel/ethosu_cancel_inference.c
+++ b/kernel/ethosu_cancel_inference.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Arm Limited.
+ * Copyright 2022-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -61,25 +61,6 @@
 	complete(&cancellation->done);
 }
 
-static int ethosu_cancel_inference_complete(struct ethosu_mailbox_msg *msg)
-{
-	struct ethosu_cancel_inference *cancellation =
-		container_of(msg, typeof(*cancellation), msg);
-
-	if (completion_done(&cancellation->done))
-		return 0;
-
-	cancellation->errno = 0;
-	cancellation->uapi->status =
-		cancellation->inf->done &&
-		cancellation->inf->status != ETHOSU_UAPI_STATUS_OK ?
-		ETHOSU_UAPI_STATUS_OK :
-		ETHOSU_UAPI_STATUS_ERROR;
-	complete(&cancellation->done);
-
-	return 0;
-}
-
 int ethosu_cancel_inference_request(struct ethosu_inference *inf,
 				    struct ethosu_uapi_cancel_inference_status *uapi)
 {
@@ -111,10 +92,6 @@
 	init_completion(&cancellation->done);
 	cancellation->msg.fail = ethosu_cancel_inference_fail;
 
-	/* Never resend messages but always complete, since we have restart the
-	 * whole firmware and marked the inference as aborted */
-	cancellation->msg.resend = ethosu_cancel_inference_complete;
-
 	ret = ethosu_mailbox_register(&cancellation->edev->mailbox,
 				      &cancellation->msg);
 	if (ret < 0)
@@ -151,15 +128,6 @@
 		goto deregister;
 	}
 
-	/* if cancellation failed and the inference did not complete then reset
-	 * the firmware */
-	if (cancellation->uapi->status == ETHOSU_UAPI_STATUS_ERROR &&
-	    !cancellation->inf->done) {
-		ret = ethosu_firmware_reset(cancellation->edev);
-		if (ret)
-			goto deregister;
-	}
-
 deregister:
 	ethosu_mailbox_deregister(&cancellation->edev->mailbox,
 				  &cancellation->msg);
diff --git a/kernel/ethosu_capabilities.c b/kernel/ethosu_capabilities.c
index d5f77f2..9735ee2 100644
--- a/kernel/ethosu_capabilities.c
+++ b/kernel/ethosu_capabilities.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Arm Limited.
+ * Copyright 2022-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -58,19 +58,6 @@
 	complete(&cap->done);
 }
 
-static int ethosu_capabilities_resend(struct ethosu_mailbox_msg *msg)
-{
-	struct ethosu_capabilities *cap =
-		container_of(msg, typeof(*cap), msg);
-
-	/* Don't resend request if response has already been received */
-	if (completion_done(&cap->done))
-		return 0;
-
-	/* Resend request */
-	return ethosu_capabilities_send(cap);
-}
-
 void ethosu_capability_rsp(struct ethosu_device *edev,
 			   struct ethosu_core_msg_capabilities_rsp *rsp)
 {
@@ -126,7 +113,6 @@
 	cap->uapi = uapi;
 	init_completion(&cap->done);
 	cap->msg.fail = ethosu_capabilities_fail;
-	cap->msg.resend = ethosu_capabilities_resend;
 
 	ret = ethosu_mailbox_register(&cap->edev->mailbox, &cap->msg);
 	if (ret < 0)
diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c
index 0f1a284..36b776f 100644
--- a/kernel/ethosu_device.c
+++ b/kernel/ethosu_device.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020-2022 Arm Limited.
+ * Copyright 2020-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -39,7 +39,6 @@
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/of_reserved_mem.h>
-#include <linux/reset.h>
 #include <linux/slab.h>
 #include <linux/uaccess.h>
 
@@ -204,85 +203,6 @@
 	return ret;
 }
 
-int ethosu_firmware_reset(struct ethosu_device *edev)
-{
-	int ret;
-
-	/* No reset control for this device */
-	if (IS_ERR(edev->reset))
-		return PTR_ERR(edev->reset);
-
-	dev_info(edev->dev, "Resetting firmware.");
-
-	ret = reset_control_assert(edev->reset);
-	if (ret) {
-		dev_err(edev->dev, "Failed to reset assert firmware. ret=%d",
-			ret);
-
-		return ret;
-	}
-
-	/* Initialize mailbox header with illegal values */
-	ethosu_mailbox_wait_prepare(&edev->mailbox);
-
-	/* If this call fails we have a problem. We managed halt the firmware,
-	 * but not to release the reset.
-	 */
-	ret = reset_control_deassert(edev->reset);
-	if (ret) {
-		dev_err(edev->dev, "Failed to reset deassert firmware. ret=%d",
-			ret);
-		goto fail;
-	}
-
-	/* Wait for firmware to boot up and initialize mailbox */
-	ret = ethosu_mailbox_wait_firmware(&edev->mailbox);
-	if (ret) {
-		dev_err(edev->dev, "Wait on firmware boot timed out. ret=%d",
-			ret);
-		goto fail;
-	}
-
-	edev->mailbox.ping_count = 0;
-	ethosu_watchdog_reset(&edev->watchdog);
-
-	ret = ethosu_mailbox_ping(&edev->mailbox);
-	if (ret) {
-		dev_warn(edev->dev,
-			 "Failed to send ping after firmware reset. ret=%d",
-			 ret);
-		goto fail;
-	}
-
-	/* Resend messages */
-	ethosu_mailbox_resend(&edev->mailbox);
-
-	return ret;
-
-fail:
-	ethosu_mailbox_fail(&edev->mailbox);
-
-	return ret;
-}
-
-static void ethosu_watchdog_callback(struct ethosu_watchdog *wdog)
-{
-	struct ethosu_device *edev =
-		container_of(wdog, struct ethosu_device, watchdog);
-
-	mutex_lock(&edev->mutex);
-
-	dev_warn(edev->dev, "Device watchdog timeout. ping_count=%u",
-		 edev->mailbox.ping_count);
-
-	if (edev->mailbox.ping_count < 1)
-		ethosu_mailbox_ping(&edev->mailbox);
-	else
-		ethosu_firmware_reset(edev);
-
-	mutex_unlock(&edev->mutex);
-}
-
 static int ethosu_open(struct inode *inode,
 		       struct file *file)
 {
@@ -414,26 +334,17 @@
 	edev->devt = devt;
 	mutex_init(&edev->mutex);
 
-	edev->reset = devm_reset_control_get_by_index(edev->dev, 0);
-	if (IS_ERR(edev->reset))
-		dev_warn(edev->dev, "No reset control found for this device.");
-
 	ret = of_reserved_mem_device_init(edev->dev);
 	if (ret)
 		return ret;
 
 	dma_set_mask_and_coherent(edev->dev, DMA_BIT_MASK(DMA_ADDR_BITS));
 
-	ret = ethosu_watchdog_init(&edev->watchdog, dev,
-				   ethosu_watchdog_callback);
+	ret = ethosu_mailbox_init(&edev->mailbox, dev, in_queue, out_queue,
+				  ethosu_mbox_rx, edev);
 	if (ret)
 		goto release_reserved_mem;
 
-	ret = ethosu_mailbox_init(&edev->mailbox, dev, in_queue, out_queue,
-				  ethosu_mbox_rx, edev, &edev->watchdog);
-	if (ret)
-		goto deinit_watchdog;
-
 	cdev_init(&edev->cdev, &fops);
 	edev->cdev.owner = THIS_MODULE;
 
@@ -451,8 +362,6 @@
 		goto del_cdev;
 	}
 
-	ethosu_firmware_reset(edev);
-
 	dev_info(edev->dev,
 		 "Created Arm Ethos-U device. name=%s, major=%d, minor=%d\n",
 		 dev_name(sysdev), MAJOR(edev->devt), MINOR(edev->devt));
@@ -465,9 +374,6 @@
 deinit_mailbox:
 	ethosu_mailbox_deinit(&edev->mailbox);
 
-deinit_watchdog:
-	ethosu_watchdog_deinit(&edev->watchdog);
-
 release_reserved_mem:
 	of_reserved_mem_device_release(edev->dev);
 
@@ -477,7 +383,6 @@
 void ethosu_dev_deinit(struct ethosu_device *edev)
 {
 	ethosu_mailbox_deinit(&edev->mailbox);
-	ethosu_watchdog_deinit(&edev->watchdog);
 	device_destroy(edev->class, edev->cdev.dev);
 	cdev_del(&edev->cdev);
 	of_reserved_mem_device_release(edev->dev);
diff --git a/kernel/ethosu_device.h b/kernel/ethosu_device.h
index d1e4334..8e81f91 100644
--- a/kernel/ethosu_device.h
+++ b/kernel/ethosu_device.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020-2022 Arm Limited.
+ * Copyright 2020-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -27,7 +27,6 @@
 
 #include "uapi/ethosu.h"
 #include "ethosu_mailbox.h"
-#include "ethosu_watchdog.h"
 
 #include <linux/device.h>
 #include <linux/cdev.h>
@@ -38,20 +37,16 @@
  * Types
  ****************************************************************************/
 
-struct reset_control;
-
 /**
  * struct ethosu_device - Device structure
  */
 struct ethosu_device {
-	struct device          *dev;
-	struct cdev            cdev;
-	struct                 class *class;
-	dev_t                  devt;
-	struct mutex           mutex;
-	struct ethosu_mailbox  mailbox;
-	struct ethosu_watchdog watchdog;
-	struct reset_control   *reset;
+	struct device         *dev;
+	struct cdev           cdev;
+	struct                class *class;
+	dev_t                 devt;
+	struct mutex          mutex;
+	struct ethosu_mailbox mailbox;
 };
 
 /****************************************************************************
@@ -75,9 +70,4 @@
  */
 void ethosu_dev_deinit(struct ethosu_device *edev);
 
-/**
- * ethosu_firmware_reset() - Reset the device running firmware
- */
-int ethosu_firmware_reset(struct ethosu_device *edev);
-
 #endif /* ETHOSU_DEVICE_H */
diff --git a/kernel/ethosu_inference.c b/kernel/ethosu_inference.c
index 1a3c45a..58501f7 100644
--- a/kernel/ethosu_inference.c
+++ b/kernel/ethosu_inference.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020,2022 Arm Limited.
+ * Copyright 2020,2022-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -141,36 +141,6 @@
 	wake_up_interruptible(&inf->waitq);
 }
 
-static int ethosu_inference_resend(struct ethosu_mailbox_msg *msg)
-{
-	struct ethosu_inference *inf =
-		container_of(msg, typeof(*inf), msg);
-	int ret;
-
-	/* Don't resend request if response has already been received */
-	if (inf->done)
-		return 0;
-
-	/* If marked as ABORTING simply fail it and return */
-	if (inf->status == ETHOSU_UAPI_STATUS_ABORTING) {
-		ethosu_inference_fail(msg);
-
-		return 0;
-	}
-
-	/* Decrement reference count for pending request */
-	ret = ethosu_inference_put(inf);
-	if (ret)
-		return 0;
-
-	/* Resend request */
-	ret = ethosu_inference_send(inf);
-	if (ret)
-		return ret;
-
-	return 0;
-}
-
 static bool ethosu_inference_verify(struct file *file)
 {
 	return file->f_op == &ethosu_inference_fops;
@@ -322,7 +292,6 @@
 	kref_init(&inf->kref);
 	init_waitqueue_head(&inf->waitq);
 	inf->msg.fail = ethosu_inference_fail;
-	inf->msg.resend = ethosu_inference_resend;
 
 	/* Add inference to pending list */
 	ret = ethosu_mailbox_register(&edev->mailbox, &inf->msg);
diff --git a/kernel/ethosu_mailbox.c b/kernel/ethosu_mailbox.c
index b5cde0d..870a4ef 100644
--- a/kernel/ethosu_mailbox.c
+++ b/kernel/ethosu_mailbox.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020-2022 Arm Limited.
+ * Copyright 2020-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -27,7 +27,6 @@
 #include "ethosu_buffer.h"
 #include "ethosu_core_interface.h"
 #include "ethosu_device.h"
-#include "ethosu_watchdog.h"
 
 #include <linux/jiffies.h>
 #include <linux/resource.h>
@@ -49,36 +48,6 @@
  * Functions
  ****************************************************************************/
 
-static void ethosu_wd_inc(struct ethosu_mailbox *mbox,
-			  enum ethosu_core_msg_type type)
-{
-	switch (type) {
-	case ETHOSU_CORE_MSG_PING:
-		mbox->ping_count++;
-		fallthrough;
-	case ETHOSU_CORE_MSG_INFERENCE_REQ:
-		ethosu_watchdog_inc(mbox->wdog);
-		break;
-	default:
-		break;
-	}
-}
-
-static void ethosu_wd_dec(struct ethosu_mailbox *mbox,
-			  enum ethosu_core_msg_type type)
-{
-	switch (type) {
-	case ETHOSU_CORE_MSG_PONG:
-		mbox->ping_count--;
-		fallthrough;
-	case ETHOSU_CORE_MSG_INFERENCE_RSP:
-		ethosu_watchdog_dec(mbox->wdog);
-		break;
-	default:
-		break;
-	}
-}
-
 static void ethosu_core_set_size(struct ethosu_buffer *buf,
 				 struct ethosu_core_buffer *cbuf)
 {
@@ -164,8 +133,6 @@
 	if (ret)
 		return ret;
 
-	ethosu_wd_inc(mbox, type);
-
 	return 0;
 }
 
@@ -278,8 +245,6 @@
 		return -EBADMSG;
 	}
 
-	ethosu_wd_dec(mbox, header->type);
-
 	return 0;
 }
 
@@ -321,22 +286,6 @@
 	}
 }
 
-void ethosu_mailbox_resend(struct ethosu_mailbox *mbox)
-{
-	struct ethosu_mailbox_msg *cur;
-	int id;
-	int ret;
-
-	idr_for_each_entry(&mbox->msg_idr, cur, id) {
-		ret = cur->resend(cur);
-		if (ret) {
-			dev_warn(mbox->dev, "Failed to resend msg. ret=%d",
-				 ret);
-			cur->fail(cur);
-		}
-	}
-}
-
 int ethosu_mailbox_ping(struct ethosu_mailbox *mbox)
 {
 	return ethosu_queue_write_msg(mbox, ETHOSU_CORE_MSG_PING, NULL, 0);
@@ -481,16 +430,13 @@
 			struct resource *in_queue,
 			struct resource *out_queue,
 			ethosu_mailbox_cb callback,
-			void *user_arg,
-			struct ethosu_watchdog *wdog)
+			void *user_arg)
 {
 	int ret;
 
 	mbox->dev = dev;
 	mbox->callback = callback;
 	mbox->user_arg = user_arg;
-	mbox->wdog = wdog;
-	mbox->ping_count = 0;
 	idr_init(&mbox->msg_idr);
 
 	mbox->client.dev = dev;
diff --git a/kernel/ethosu_mailbox.h b/kernel/ethosu_mailbox.h
index 26367f6..c3f5579 100644
--- a/kernel/ethosu_mailbox.h
+++ b/kernel/ethosu_mailbox.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020-2022 Arm Limited.
+ * Copyright 2020-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -40,7 +40,6 @@
 struct ethosu_device;
 struct ethosu_core_msg;
 struct ethosu_core_queue;
-struct ethosu_watchdog;
 struct resource;
 
 typedef void (*ethosu_mailbox_cb)(void *user_arg);
@@ -57,14 +56,11 @@
 	ethosu_mailbox_cb        callback;
 	void                     *user_arg;
 	struct idr               msg_idr;
-	struct ethosu_watchdog   *wdog;
-	unsigned                 ping_count;
 };
 
 struct ethosu_mailbox_msg {
 	int  id;
 	void (*fail)(struct ethosu_mailbox_msg *msg);
-	int  (*resend)(struct ethosu_mailbox_msg *msg);
 };
 
 /****************************************************************************
@@ -81,8 +77,7 @@
 			struct resource *in_queue,
 			struct resource *out_queue,
 			ethosu_mailbox_cb callback,
-			void *user_arg,
-			struct ethosu_watchdog *wdog);
+			void *user_arg);
 
 /**
  * ethosu_mailbox_deinit() - Deinitialize mailbox
@@ -149,13 +144,6 @@
 void ethosu_mailbox_fail(struct ethosu_mailbox *mbox);
 
 /**
- * ethosu_mailbox_resend() - Resend mailbox messages
- *
- * Call resend() callback on all messages in pending list.
- */
-void ethosu_mailbox_resend(struct ethosu_mailbox *mbox);
-
-/**
  * ethosu_mailbox_reset() - Reset to end of queue
  */
 void ethosu_mailbox_reset(struct ethosu_mailbox *mbox);
diff --git a/kernel/ethosu_network_info.c b/kernel/ethosu_network_info.c
index a99ca84..5469b6c 100644
--- a/kernel/ethosu_network_info.c
+++ b/kernel/ethosu_network_info.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 ARM Limited.
+ * Copyright 2022-2023 Arm Limited and/or its affiliates
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -52,24 +52,6 @@
 	complete(&info->done);
 }
 
-static int ethosu_network_info_resend(struct ethosu_mailbox_msg *msg)
-{
-	struct ethosu_network_info *info =
-		container_of(msg, typeof(*info), msg);
-	int ret;
-
-	/* Don't resend request if response has already been received */
-	if (completion_done(&info->done))
-		return 0;
-
-	/* Resend request */
-	ret = ethosu_network_info_send(info);
-	if (ret)
-		return ret;
-
-	return 0;
-}
-
 int ethosu_network_info_request(struct ethosu_network *net,
 				struct ethosu_uapi_network_info *uapi)
 {
@@ -86,7 +68,6 @@
 	info->uapi = uapi;
 	init_completion(&info->done);
 	info->msg.fail = ethosu_network_info_fail;
-	info->msg.resend = ethosu_network_info_resend;
 
 	ret = ethosu_mailbox_register(&info->edev->mailbox, &info->msg);
 	if (ret < 0)
diff --git a/kernel/ethosu_watchdog.c b/kernel/ethosu_watchdog.c
deleted file mode 100644
index bde0803..0000000
--- a/kernel/ethosu_watchdog.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2022 Arm Limited.
- *
- * This program is free software and is provided to you under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation, and any use by you of this program is subject to the terms
- * of such GNU licence.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, you can access it online at
- * http://www.gnu.org/licenses/gpl-2.0.html.
- *
- * SPDX-License-Identifier: GPL-2.0-only
- */
-
-/****************************************************************************
- * Includes
- ****************************************************************************/
-
-#include "ethosu_watchdog.h"
-
-#include <linux/device.h>
-#include <linux/jiffies.h>
-#include <linux/moduleparam.h>
-#include <linux/version.h>
-
-/****************************************************************************
- * Variables
- ****************************************************************************/
-
-static unsigned long watchdog_timeout_ms = 3000;
-module_param(watchdog_timeout_ms, ulong, 0664);
-MODULE_PARM_DESC(watchdog_timeout_ms,
-		 "Watchdog timeout in milliseconds for unresponsive firmware.");
-
-/****************************************************************************
- * Functions
- ****************************************************************************/
-
-static void ethosu_watchdog_update(struct ethosu_watchdog *wdog)
-{
-	int ret;
-
-	ret = mod_timer(&wdog->timer,
-			jiffies + msecs_to_jiffies(watchdog_timeout_ms));
-
-	dev_info(wdog->dev,
-		 "Wdog: Update watchdog timeout. ret=%d, timeout_ms=%lu, refcount=%u", ret,
-		 watchdog_timeout_ms, atomic_read(&wdog->refcount));
-}
-
-static void ethosu_watchdog_work(struct work_struct *work)
-{
-	struct ethosu_watchdog *wdog =
-		container_of(work, struct ethosu_watchdog, work);
-
-	dev_info(wdog->dev, "Wdog: Watchdog timeout. refcount=%u",
-		 atomic_read(&wdog->refcount));
-
-	wdog->callback(wdog);
-}
-
-static void ethosu_watchdog_timeout(struct timer_list *timer)
-{
-	struct ethosu_watchdog *wdog =
-		container_of(timer, struct ethosu_watchdog, timer);
-
-	queue_work(system_unbound_wq, &wdog->work);
-}
-
-#if KERNEL_VERSION(4, 14, 0) > LINUX_VERSION_CODE
-static void ethosu_watchdog_timeout_legacy(unsigned long data)
-{
-	ethosu_watchdog_timeout((struct timer_list *)data);
-}
-
-#endif
-
-int ethosu_watchdog_init(struct ethosu_watchdog *wdog,
-			 struct device *dev,
-			 ethosu_watchdog_cb callback)
-{
-	wdog->dev = dev;
-	wdog->callback = callback;
-	atomic_set(&wdog->refcount, 0);
-	INIT_WORK(&wdog->work, ethosu_watchdog_work);
-
-#if KERNEL_VERSION(4, 14, 0) <= LINUX_VERSION_CODE
-	timer_setup(&wdog->timer, ethosu_watchdog_timeout, 0);
-#else
-	setup_timer(&wdog->timer, ethosu_watchdog_timeout_legacy,
-		    (unsigned long)&wdog->timer);
-#endif
-
-	return 0;
-}
-
-void ethosu_watchdog_deinit(struct ethosu_watchdog *wdog)
-{
-	del_timer(&wdog->timer);
-}
-
-int ethosu_watchdog_reset(struct ethosu_watchdog *wdog)
-{
-	del_timer(&wdog->timer);
-	atomic_set(&wdog->refcount, 0);
-
-	return 0;
-}
-
-void ethosu_watchdog_inc(struct ethosu_watchdog *wdog)
-{
-	atomic_inc(&wdog->refcount);
-	ethosu_watchdog_update(wdog);
-}
-
-void ethosu_watchdog_dec(struct ethosu_watchdog *wdog)
-{
-	if (atomic_dec_and_test(&wdog->refcount)) {
-		dev_info(wdog->dev, "Wdog: Cancel watchdog timeout");
-		del_timer(&wdog->timer);
-	} else {
-		ethosu_watchdog_update(wdog);
-	}
-}
diff --git a/kernel/ethosu_watchdog.h b/kernel/ethosu_watchdog.h
deleted file mode 100644
index d288af4..0000000
--- a/kernel/ethosu_watchdog.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2022 Arm Limited.
- *
- * This program is free software and is provided to you under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation, and any use by you of this program is subject to the terms
- * of such GNU licence.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, you can access it online at
- * http://www.gnu.org/licenses/gpl-2.0.html.
- *
- * SPDX-License-Identifier: GPL-2.0-only
- */
-
-#ifndef ETHOSU_WATCHDOG_H
-#define ETHOSU_WATCHDOG_H
-
-/****************************************************************************
- * Includes
- ****************************************************************************/
-
-#include <linux/types.h>
-#include <linux/timer.h>
-#include <linux/workqueue.h>
-
-/****************************************************************************
- * Types
- ****************************************************************************/
-
-struct device;
-struct ethosu_watchdog;
-
-typedef void (*ethosu_watchdog_cb)(struct ethosu_watchdog *wdog);
-
-struct ethosu_watchdog {
-	struct device      *dev;
-	ethosu_watchdog_cb callback;
-	struct timer_list  timer;
-	struct work_struct work;
-	atomic_t           refcount;
-};
-
-/****************************************************************************
- * Functions
- ****************************************************************************/
-
-/**
- * ethosu_watchdog_init() - Initialize watchdog
- *
- * Return: 0 on success, else error code.
- */
-int ethosu_watchdog_init(struct ethosu_watchdog *wdog,
-			 struct device *dev,
-			 ethosu_watchdog_cb callback);
-
-/**
- * ethosu_watchdog_deinit() - Deinitialize watchdog
- */
-void ethosu_watchdog_deinit(struct ethosu_watchdog *wdog);
-
-/**
- * ethosu_watchdog_reset() - Reset watchdog
- */
-int ethosu_watchdog_reset(struct ethosu_watchdog *wdog);
-
-/**
- * ethosu_watchdog_inc() - Increment reference count
- */
-void ethosu_watchdog_inc(struct ethosu_watchdog *wdog);
-
-/**
- * ethosu_watchdog_dec() - Decrement reference count
- */
-void ethosu_watchdog_dec(struct ethosu_watchdog *wdog);
-
-#endif /* ETHOSU_WATCHDOG_H */