xref: /optee_os/core/include/drivers/wdt.h (revision cbb41c9147d0c4c2a2a31f80425a8df07835f0a1)
1*cbb41c91SAbhishek Shah /* SPDX-License-Identifier: BSD-2-Clause */
2*cbb41c91SAbhishek Shah /*
3*cbb41c91SAbhishek Shah  * Copyright 2019 Broadcom.
4*cbb41c91SAbhishek Shah  */
5*cbb41c91SAbhishek Shah 
6*cbb41c91SAbhishek Shah #ifndef DRIVERS_WDT_H
7*cbb41c91SAbhishek Shah #define DRIVERS_WDT_H
8*cbb41c91SAbhishek Shah 
9*cbb41c91SAbhishek Shah #include <kernel/interrupt.h>
10*cbb41c91SAbhishek Shah #include <tee_api_types.h>
11*cbb41c91SAbhishek Shah 
12*cbb41c91SAbhishek Shah struct wdt_chip {
13*cbb41c91SAbhishek Shah 	const struct wdt_ops *ops;
14*cbb41c91SAbhishek Shah 	struct itr_handler *wdt_itr;
15*cbb41c91SAbhishek Shah };
16*cbb41c91SAbhishek Shah 
17*cbb41c91SAbhishek Shah /*
18*cbb41c91SAbhishek Shah  * struct wdt_ops - The watchdog device operations
19*cbb41c91SAbhishek Shah  *
20*cbb41c91SAbhishek Shah  * @start:	The routine for starting the watchdog device.
21*cbb41c91SAbhishek Shah  * @stop:	The routine for stopping the watchdog device.
22*cbb41c91SAbhishek Shah  * @ping:	The routine that sends a keepalive ping to the watchdog device.
23*cbb41c91SAbhishek Shah  * @set_timeout:The routine that finds the load value that will reset system in
24*cbb41c91SAbhishek Shah  * required timeout (in seconds).
25*cbb41c91SAbhishek Shah  *
26*cbb41c91SAbhishek Shah  * The wdt_ops structure contains a list of low-level operations
27*cbb41c91SAbhishek Shah  * that control a watchdog device.
28*cbb41c91SAbhishek Shah  */
29*cbb41c91SAbhishek Shah struct wdt_ops {
30*cbb41c91SAbhishek Shah 	void (*start)(struct wdt_chip *chip);
31*cbb41c91SAbhishek Shah 	void (*stop)(struct wdt_chip *chip);
32*cbb41c91SAbhishek Shah 	void (*ping)(struct wdt_chip *chip);
33*cbb41c91SAbhishek Shah 	TEE_Result (*set_timeout)(struct wdt_chip *chip, unsigned long timeout);
34*cbb41c91SAbhishek Shah };
35*cbb41c91SAbhishek Shah 
36*cbb41c91SAbhishek Shah #endif /* DRIVERS_WDT_H */
37