/*
 * Copyright (c) 2016 Open-RnD Sp. z o.o.
 * Copyright (c) 2017 RnDity Sp. z o.o.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_DRIVERS_WATCHDOG_IWDG_STM32_H_
#define ZEPHYR_DRIVERS_WATCHDOG_IWDG_STM32_H_

#include <zephyr/types.h>

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

/* driver data */
struct iwdg_stm32_data {
	/* IWDG peripheral instance. */
	IWDG_TypeDef *Instance;
	uint32_t prescaler;
	uint32_t reload;
};

#define IWDG_STM32_DATA(dev)					\
	((struct iwdg_stm32_data * const)(dev)->data)

#define IWDG_STM32_STRUCT(dev)					\
	((IWDG_TypeDef *)(IWDG_STM32_DATA(dev))->Instance)

#endif	/* ZEPHYR_DRIVERS_WATCHDOG_IWDG_STM32_H_ */
