/* SPDX-License-Identifier: Apache-2.0 */ /* * Copyright (c) 2023 Intel Corporation * * Author: Adrian Warecki */ #ifndef ZEPHYR_DRIVERS_WATCHDOG_WDT_DW_COMMON_H_ #define ZEPHYR_DRIVERS_WATCHDOG_WDT_DW_COMMON_H_ #include /** * @brief Check watchdog configuration options * * Check options value passed to a watchdog setup function. Returns error if unsupported option * is used. * * @param options options value passed to a watchdog setup function. * @return Error code, 0 on success. */ int dw_wdt_check_options(const uint8_t options); /** * @brief Configure watchdog device * * @param base Device base address. * @param config device configuration word * @return Error code, 0 on success. */ int dw_wdt_configure(const uint32_t base, const uint32_t config); /** * @brief Calculate period * * @param [in]base Device base address. * @param [in]clk_freq frequency of a clock used by watchdog device * @param [in]config pointer to a watchdog configuration structure * @param [out]period_out pointer to a variable in which the period configuration word will be * placed * @return Error code, 0 on success. */ int dw_wdt_calc_period(const uint32_t base, const uint32_t clk_freq, const struct wdt_timeout_cfg *config, uint32_t *period_out); /** * @brief Watchdog probe * * Checks device id register and configure a reset pulse length. * * @param base Device base address. * @param reset_pulse_length Length of a reset pulse produced by watchdog * @return Error code, 0 on success. */ int dw_wdt_probe(const uint32_t base, const uint32_t reset_pulse_length); /** * @brief Watchdog disable function * * @param dev Device structure. * @return -ENOTSUP. The hardware does not support disabling. */ int dw_wdt_disable(const struct device *dev); #endif /* ZEPHYR_DRIVERS_WATCHDOG_WDT_DW_COMMON_H_ */