[PATCH v2 1/3] media: mediatek: vpu: add watchdog handler unregister helper
From: Guangshuo Li
Date: Mon Jul 20 2026 - 05:00:03 EST
VPU clients register watchdog reset handlers with private data owned by
the client device. The VPU driver currently provides no way to clear a
handler when client initialization fails or when the client device is
removed.
Add vpu_wdt_unreg_handler() to clear the reset callback and its private
data while holding the VPU mutex. This allows clients to remove stale
watchdog entries before releasing their device references.
Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
---
drivers/media/platform/mediatek/vpu/mtk_vpu.c | 14 ++++++++++++++
drivers/media/platform/mediatek/vpu/mtk_vpu.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/drivers/media/platform/mediatek/vpu/mtk_vpu.c b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
index 8d8319f0cd22..a2b937095248 100644
--- a/drivers/media/platform/mediatek/vpu/mtk_vpu.c
+++ b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
@@ -437,6 +437,20 @@ int vpu_wdt_reg_handler(struct platform_device *pdev,
}
EXPORT_SYMBOL_GPL(vpu_wdt_reg_handler);
+void vpu_wdt_unreg_handler(struct platform_device *pdev, enum rst_id id)
+{
+ struct mtk_vpu *vpu = platform_get_drvdata(pdev);
+
+ if (!vpu || id >= VPU_RST_MAX)
+ return;
+
+ mutex_lock(&vpu->vpu_mutex);
+ vpu->wdt.handler[id].reset_func = NULL;
+ vpu->wdt.handler[id].priv = NULL;
+ mutex_unlock(&vpu->vpu_mutex);
+}
+EXPORT_SYMBOL_GPL(vpu_wdt_unreg_handler);
+
unsigned int vpu_get_vdec_hw_capa(struct platform_device *pdev)
{
struct mtk_vpu *vpu = platform_get_drvdata(pdev);
diff --git a/drivers/media/platform/mediatek/vpu/mtk_vpu.h b/drivers/media/platform/mediatek/vpu/mtk_vpu.h
index 3951547e9ec5..2ccb481a04cf 100644
--- a/drivers/media/platform/mediatek/vpu/mtk_vpu.h
+++ b/drivers/media/platform/mediatek/vpu/mtk_vpu.h
@@ -141,6 +141,8 @@ int vpu_wdt_reg_handler(struct platform_device *pdev,
void vpu_wdt_reset_func(void *priv),
void *priv, enum rst_id id);
+void vpu_wdt_unreg_handler(struct platform_device *pdev, enum rst_id id);
+
/**
* vpu_get_vdec_hw_capa - get video decoder hardware capability
*
--
2.43.0