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