/* * Copyright 2023 NXP * * SPDX-License-Identifier: Apache-2.0 */ /** * @brief Driver for Wake-up interrupt/event controller in NXP S32 MCUs */ #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ #include /* Wrapper callback for WKPU line */ typedef void (*wkpu_nxp_s32_callback_t)(uint8_t pin, void *arg); /** * @brief Unset WKPU callback for line * * @param dev WKPU device * @param line WKPU line */ void wkpu_nxp_s32_unset_callback(const struct device *dev, uint8_t line); /** * @brief Set WKPU callback for line * * @param dev WKPU device * @param line WKPU line * @param cb Callback * @param pin GPIO pin * @param arg Callback data * * @retval 0 on SUCCESS * @retval -EBUSY if callback for the line is already set */ int wkpu_nxp_s32_set_callback(const struct device *dev, uint8_t line, wkpu_nxp_s32_callback_t cb, uint8_t pin, void *arg); /** * @brief Set edge event and enable interrupt for WKPU line * * @param dev WKPU device * @param line WKPU line * @param edge_type Type of edge event */ void wkpu_nxp_s32_enable_interrupt(const struct device *dev, uint8_t line, Wkpu_Ip_EdgeType edge_type); /** * @brief Disable interrupt for WKPU line * * @param dev WKPU device * @param line WKPU line */ void wkpu_nxp_s32_disable_interrupt(const struct device *dev, uint8_t line); /** * @brief Get pending interrupt for WKPU device * * @param dev WKPU device * @return A mask contains pending flags */ uint64_t wkpu_nxp_s32_get_pending(const struct device *dev); #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ */