/*
 * Copyright (c) 2019 Centaur Analytics, Inc
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_DRIVERS_WATCHDOG_WWDG_STM32_H_
#define ZEPHYR_DRIVERS_WATCHDOG_WWDG_STM32_H_

#include <zephyr/types.h>
#include <zephyr/drivers/clock_control/stm32_clock_control.h>
#include <zephyr/drivers/clock_control.h>

/**
 * @brief Driver for System Window Watchdog (WWDG) for STM32 MCUs
 *
 * The driver targets all STM32 SoCs. For details please refer to
 * an appropriate reference manual and look for chapter called:
 *
 *   System window watchdog (WWDG)
 *
 */

/* driver configuration */
struct wwdg_stm32_config {
	struct stm32_pclken pclken;
	WWDG_TypeDef *Instance;
};

/* driver data */
struct wwdg_stm32_data {
	/* WWDG reset counter */
	uint8_t counter;

	/* WWDG user defined callback on EWI */
	wdt_callback_t callback;
};

#define WWDG_STM32_CFG(dev) \
	((const struct wwdg_stm32_config *const)(dev)->config)

#define WWDG_STM32_DATA(dev) \
	((struct wwdg_stm32_data *const)(dev)->data)

#define WWDG_STM32_STRUCT(dev) \
	((WWDG_TypeDef *)(WWDG_STM32_CFG(dev))->Instance)

#endif  /* ZEPHYR_DRIVERS_WATCHDOG_WWDG_STM32_H_ */
