1 /* 2 * Copyright (c) 2006-2025, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef DRV_WDT_H_ 8 #define DRV_WDT_H_ 9 10 #include <drivers/dev_watchdog.h> 11 #include <sys/ioctl.h> 12 13 #define DEFUALT_TIMEOUT 30*1000 /* ms */ 14 #define KD_WDT_NUM_TOPS 16 15 #define KD_WDT_FIX_TOP(_idx) (1U << (16 + _idx)) 16 #define KD_WDT_RMOD_RESET 1 17 #define KD_WDT_RMOD_IRQ 2 18 19 #define KD_DEVICE_CTRL_WDT_GET_TIMEOUT _IOW('W', 1, int) /* get timeout(in seconds) */ 20 #define KD_DEVICE_CTRL_WDT_SET_TIMEOUT _IOW('W', 2, int) /* set timeout(in seconds) */ 21 #define KD_DEVICE_CTRL_WDT_GET_TIMELEFT _IOW('W', 3, int) /* get the left time before reboot(in seconds) */ 22 #define KD_DEVICE_CTRL_WDT_KEEPALIVE _IOW('W', 4, int) /* refresh watchdog */ 23 #define KD_DEVICE_CTRL_WDT_START _IOW('W', 5, int) /* start watchdog */ 24 #define KD_DEVICE_CTRL_WDT_STOP _IOW('W', 6, int) /* stop watchdog */ 25 26 struct k230_wdt_timeout { 27 rt_uint32_t top_val; 28 rt_uint32_t sec; 29 rt_uint32_t msec; 30 }; 31 32 #define swap(a, b) \ 33 do { struct k230_wdt_timeout __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 34 35 /* wdt register map */ 36 typedef struct _wdt 37 { 38 /* WDT Control Register (0x00) */ 39 volatile uint32_t cr; 40 /* WDT Timeout Range Register (0x04) */ 41 volatile uint32_t torr; 42 /* WDT Current Counter Value Register (0x08) */ 43 volatile uint32_t ccvr; 44 /* WDT Counter Restart Register (0x0c) */ 45 volatile uint32_t crr; 46 /* WDT Interrupt Status Register (0x10) */ 47 volatile uint32_t stat; 48 /* WDT Interrupt Clear Register (0x14) */ 49 volatile uint32_t eoi; 50 /* reserverd (0x18) */ 51 volatile uint32_t resv1; 52 /* WDT Protection level Register (0x1c) */ 53 volatile uint32_t prot_level; 54 /* reserved (0x20-0xe0) */ 55 volatile uint32_t resv4[49]; 56 /* WDT Component Parameters Register 5 (0xe4) */ 57 volatile uint32_t comp_param_5; 58 /* WDT Component Parameters Register 4 (0xe8) */ 59 volatile uint32_t comp_param_4; 60 /* WDT Component Parameters Register 3 (0xec) */ 61 volatile uint32_t comp_param_3; 62 /* WDT Component Parameters Register 2 (0xf0) */ 63 volatile uint32_t comp_param_2; 64 /* WDT Component Parameters Register 1 (0xf4) */ 65 volatile uint32_t comp_param_1; 66 /* WDT Component Version Register (0xf8) */ 67 volatile uint32_t comp_version; 68 /* WDT Component Type Register (0xfc) */ 69 volatile uint32_t comp_type; 70 } __attribute__((packed, aligned(4))) k230_wdt_t; 71 72 73 #endif /* DRV_WDT_H_ */