Merge tag 'fixes-for-v2020.04' of https://gitlab.denx.de/u-boot/custodians/u-boot...
[oweals/u-boot.git] / drivers / watchdog / ast_wdt.c
index 59afa21efa4b5f77a1eacefc3007d79085fb8cdd..d344d54aee828fdeb2ff72dbe79ec557fc998d52 100644 (file)
@@ -23,6 +23,12 @@ static int ast_wdt_start(struct udevice *dev, u64 timeout, ulong flags)
        ulong driver_data = dev_get_driver_data(dev);
        u32 reset_mode = ast_reset_mode_from_flags(flags);
 
+       /* 32 bits at 1MHz is 4294967ms */
+       timeout = min_t(u64, timeout, 4294967);
+
+       /* WDT counts in ticks of 1MHz clock. 1ms / 1e3 * 1e6 */
+       timeout *= 1000;
+
        clrsetbits_le32(&priv->regs->ctrl,
                        WDT_CTRL_RESET_MASK << WDT_CTRL_RESET_MODE_SHIFT,
                        reset_mode << WDT_CTRL_RESET_MODE_SHIFT);
@@ -119,5 +125,4 @@ U_BOOT_DRIVER(ast_wdt) = {
        .priv_auto_alloc_size = sizeof(struct ast_wdt_priv),
        .ofdata_to_platdata = ast_wdt_ofdata_to_platdata,
        .ops = &ast_wdt_ops,
-       .flags = DM_FLAG_PRE_RELOC,
 };