Line data Source code
1 0 : /*
2 : * Copyright 2023-2024 NXP
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @brief Driver for Wake-up interrupt/event controller in NXP S32 MCUs
9 : */
10 :
11 : #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_
12 : #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_
13 :
14 : /** NXP WKPU callback */
15 1 : typedef void (*wkpu_nxp_s32_callback_t)(uint8_t pin, void *arg);
16 :
17 : /**
18 : * @brief NXP WKPU pin activation type
19 : */
20 1 : enum wkpu_nxp_s32_trigger {
21 : /** Interrupt triggered on rising edge */
22 : WKPU_NXP_S32_RISING_EDGE,
23 : /** Interrupt triggered on falling edge */
24 : WKPU_NXP_S32_FALLING_EDGE,
25 : /** Interrupt triggered on either edge */
26 : WKPU_NXP_S32_BOTH_EDGES,
27 : };
28 :
29 : /**
30 : * @brief Unset WKPU callback for line
31 : *
32 : * @param dev WKPU device
33 : * @param irq WKPU interrupt number
34 : */
35 1 : void wkpu_nxp_s32_unset_callback(const struct device *dev, uint8_t irq);
36 :
37 : /**
38 : * @brief Set WKPU callback for line
39 : *
40 : * @param dev WKPU device
41 : * @param irq WKPU interrupt number
42 : * @param pin GPIO pin
43 : * @param cb Callback
44 : * @param arg Callback data
45 : *
46 : * @retval 0 on SUCCESS
47 : * @retval -EBUSY if callback for the line is already set
48 : */
49 1 : int wkpu_nxp_s32_set_callback(const struct device *dev, uint8_t irq, uint8_t pin,
50 : wkpu_nxp_s32_callback_t cb, void *arg);
51 :
52 : /**
53 : * @brief Set edge event and enable interrupt for WKPU line
54 : *
55 : * @param dev WKPU device
56 : * @param irq WKPU interrupt number
57 : * @param trigger pin activation trigger
58 : */
59 1 : void wkpu_nxp_s32_enable_interrupt(const struct device *dev, uint8_t irq,
60 : enum wkpu_nxp_s32_trigger trigger);
61 :
62 : /**
63 : * @brief Disable interrupt for WKPU line
64 : *
65 : * @param dev WKPU device
66 : * @param irq WKPU interrupt number
67 : */
68 1 : void wkpu_nxp_s32_disable_interrupt(const struct device *dev, uint8_t irq);
69 :
70 : /**
71 : * @brief Get pending interrupt for WKPU device
72 : *
73 : * @param dev WKPU device
74 : * @return A bitmask containing pending interrupts
75 : */
76 1 : uint64_t wkpu_nxp_s32_get_pending(const struct device *dev);
77 :
78 : #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ */
|