Line data Source code
1 0 : /* 2 : * Copyright 2022, 2024 NXP 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /** 8 : * @brief Driver for External interrupt/event controller in NXP S32 MCUs 9 : * 10 : */ 11 : 12 : #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ 13 : #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ 14 : 15 : /** NXP SIUL2 EIRQ callback */ 16 1 : typedef void (*eirq_nxp_s32_callback_t)(uint8_t pin, void *arg); 17 : 18 : /** 19 : * @brief NXP SIUL2 EIRQ pin activation type 20 : */ 21 1 : enum eirq_nxp_s32_trigger { 22 : /** Interrupt triggered on rising edge */ 23 : EIRQ_NXP_S32_RISING_EDGE, 24 : /** Interrupt triggered on falling edge */ 25 : EIRQ_NXP_S32_FALLING_EDGE, 26 : /** Interrupt triggered on either edge */ 27 : EIRQ_NXP_S32_BOTH_EDGES, 28 : }; 29 : 30 : /** 31 : * @brief Unset interrupt callback 32 : * 33 : * @param dev SIUL2 EIRQ device 34 : * @param irq interrupt number 35 : */ 36 1 : void eirq_nxp_s32_unset_callback(const struct device *dev, uint8_t irq); 37 : 38 : /** 39 : * @brief Set callback for an interrupt associated with a given pin 40 : * 41 : * @param dev SIUL2 EIRQ device 42 : * @param irq interrupt number 43 : * @param pin GPIO pin associated with the interrupt 44 : * @param cb callback to install 45 : * @param arg user data to include in callback 46 : * 47 : * @retval 0 on success 48 : * @retval -EBUSY if callback for the interrupt is already set 49 : */ 50 1 : int eirq_nxp_s32_set_callback(const struct device *dev, uint8_t irq, uint8_t pin, 51 : eirq_nxp_s32_callback_t cb, void *arg); 52 : 53 : /** 54 : * @brief Enable interrupt on a given trigger event 55 : * 56 : * @param dev SIUL2 EIRQ device 57 : * @param irq interrupt number 58 : * @param trigger trigger event 59 : */ 60 1 : void eirq_nxp_s32_enable_interrupt(const struct device *dev, uint8_t irq, 61 : enum eirq_nxp_s32_trigger trigger); 62 : 63 : /** 64 : * @brief Disable interrupt 65 : * 66 : * @param dev SIUL2 EIRQ device 67 : * @param irq interrupt number 68 : */ 69 1 : void eirq_nxp_s32_disable_interrupt(const struct device *dev, uint8_t irq); 70 : 71 : /** 72 : * @brief Get pending interrupts 73 : * 74 : * @param dev SIUL2 EIRQ device 75 : * @return A bitmask containing pending pending interrupts 76 : */ 77 1 : uint32_t eirq_nxp_s32_get_pending(const struct device *dev); 78 : 79 : #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ */