1 /* 2 * Copyright (c) 2024-2025 Renesas Electronics Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_RZ_EXT_IRQ_H_ 8 #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_RZ_EXT_IRQ_H_ 9 10 #define RZ_EXT_IRQ_TRIG_FALLING 0 11 #define RZ_EXT_IRQ_TRIG_RISING 1 12 #define RZ_EXT_IRQ_TRIG_BOTH_EDGE 2 13 #define RZ_EXT_IRQ_TRIG_LEVEL_LOW 3 14 15 /** RZ external interrupt callback */ 16 typedef void (*intc_rz_ext_irq_callback_t)(void *arg); 17 18 /** 19 * @brief Enable external interrupt for specified channel. 20 * 21 * @param dev: pointer to interrupt controller instance 22 * @return 0 on success, or negative value on error 23 */ 24 int intc_rz_ext_irq_enable(const struct device *dev); 25 26 /** 27 * @brief Disable external interrupt for specified channel. 28 * 29 * @param dev: pointer to interrupt controller instance 30 * @return 0 on success, or negative value on error 31 */ 32 int intc_rz_ext_irq_disable(const struct device *dev); 33 34 /** 35 * @brief Updates the user callback 36 * 37 * @param dev: pointer to interrupt controller instance 38 * @param cb: callback to set 39 * @param arg: user data passed to callback 40 * @return 0 on success, or negative value on error 41 */ 42 int intc_rz_ext_irq_set_callback(const struct device *dev, intc_rz_ext_irq_callback_t cb, 43 void *arg); 44 45 /** 46 * @brief Change trigger external interrupt type for specified channel. 47 * 48 * @param dev: pointer to interrupt controller instance 49 * @param trig: trigger type to be changed 50 * @return 0 on success, or negative value on error 51 */ 52 int intc_rz_ext_irq_set_type(const struct device *dev, uint8_t trig); 53 54 #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_RZ_EXT_IRQ_H_ */ 55