summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Wang <[email protected]>2024-06-13 14:24:52 +0800
committerChen Wang <[email protected]>2024-07-17 16:56:07 +0800
commit1bcf232d12d49303cd2eb0143c3aa1855dffd916 (patch)
tree21cb5fb4c8068e79f79f4f6a155b1bc9d808695b
parent2d5eb2669f3fd9b4a1b52cf25d19a3915b767cae (diff)
bsp: cvitek: fix the wdt timeout unit problem
See `components/drivers/include/drivers/watchdog.h` maco definition of RT_DEVICE_CTRL_WDT_GET_TIMEOUT RT_DEVICE_CTRL_WDT_SET_TIMEOUT RT_DEVICE_CTRL_WDT_GET_TIMELEFT The wdt timeout time unit is defined as seconds in the API, but the code incorrectly uses ms. Correct this and comply with the API definition. Signed-off-by: Chen Wang <[email protected]> Reviewed-by: Yuanjie He <[email protected]> Reviewed-by: Shell <[email protected]>
-rw-r--r--bsp/cvitek/drivers/drv_wdt.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/bsp/cvitek/drivers/drv_wdt.c b/bsp/cvitek/drivers/drv_wdt.c
index 8cbc233b8d..c4792ccfff 100644
--- a/bsp/cvitek/drivers/drv_wdt.c
+++ b/bsp/cvitek/drivers/drv_wdt.c
@@ -66,6 +66,14 @@ rt_inline int wdt_top_in_ms(unsigned int top)
return (1U << (16 + top)) / (WDT_FREQ_DEFAULT / 1000);
}
+/**
+ * @brief set timeout period
+ *
+ * @param reg_base base address of the watchdog controller
+ * @param ms timeout period (in millisecond)
+ *
+ * @return RT_EOK if successed.
+ */
static rt_err_t csi_wdt_set_timeout(unsigned long reg_base, uint32_t ms)
{
rt_err_t ret = RT_EOK;
@@ -115,13 +123,13 @@ static rt_err_t _wdt_control(rt_watchdog_t *wdt_device, int cmd, void *arg)
break;
case RT_DEVICE_CTRL_WDT_SET_TIMEOUT:
wdt->timeout = *(rt_uint32_t *)arg;
- csi_wdt_set_timeout(reg_base, wdt->timeout);
+ csi_wdt_set_timeout(reg_base, wdt->timeout * 1000);
break;
case RT_DEVICE_CTRL_WDT_GET_TIMEOUT:
*(rt_uint32_t *)arg = wdt->timeout;
break;
case RT_DEVICE_CTRL_WDT_GET_TIMELEFT:
- *(rt_uint32_t *)arg = (cvi_wdt_get_counter_value(reg_base) / (WDT_FREQ_DEFAULT / 1000U));
+ *(rt_uint32_t *)arg = (cvi_wdt_get_counter_value(reg_base) / WDT_FREQ_DEFAULT);
break;
case RT_DEVICE_CTRL_WDT_START:
cvi_wdt_set_respond_system_reset(reg_base);