/* * Copyright 2022 NXP * * SPDX-License-Identifier: Apache-2.0 */ /** * @brief Driver for External interrupt/event controller in NXP S32 MCUs * */ #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ #include /* Wrapper callback for EIRQ line */ typedef void (*eirq_nxp_s32_callback_t)(uint8_t pin, void *arg); /** * @brief Unset EIRQ callback for line * * @param dev EIRQ device * @param line EIRQ line */ void eirq_nxp_s32_unset_callback(const struct device *dev, uint8_t line); /** * @brief Set EIRQ callback for line * * @param dev EIRQ device * @param line EIRQ 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 eirq_nxp_s32_set_callback(const struct device *dev, uint8_t line, eirq_nxp_s32_callback_t cb, uint8_t pin, void *arg); /** * @brief Set edge event and enable interrupt for EIRQ line * * @param dev EIRQ device * @param line EIRQ line * @param edge_type Type of edge event */ void eirq_nxp_s32_enable_interrupt(const struct device *dev, uint8_t line, Siul2_Icu_Ip_EdgeType edge_type); /** * @brief Disable interrupt for EIRQ line * * @param dev EIRQ device * @param line EIRQ line */ void eirq_nxp_s32_disable_interrupt(const struct device *dev, uint8_t line); /** * @brief Get pending interrupt for EIRQ device * * @param dev EIRQ device * @return A mask contains pending flags */ uint32_t eirq_nxp_s32_get_pending(const struct device *dev); #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ */