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