1 /* 2 * Copyright 2023 NXP 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @brief Driver for Pin interrupt and pattern match engine in NXP MCUs 9 * 10 * The Pin interrupt and pattern match engine (PINT) supports 11 * sourcing inputs from any pins on GPIO ports 0 and 1 of NXP MCUs 12 * featuring the module, and generating interrupts based on these inputs. 13 * Pin inputs can generate separate interrupts to the NVIC, or be combined 14 * using the PINT's boolean logic based pattern match engine. 15 * This driver currently only supports the pin interrupt feature of 16 * the PINT. 17 */ 18 19 #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_NXP_PINT_H_ 20 #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_NXP_PINT_H_ 21 22 #include <fsl_pint.h> 23 24 /** 25 * @brief Pin interrupt sources 26 * 27 * Pin interrupt sources available for use. 28 */ 29 enum nxp_pint_trigger { 30 /* Do not generate Pin Interrupt */ 31 NXP_PINT_NONE = kPINT_PinIntEnableNone, 32 /* Generate Pin Interrupt on rising edge */ 33 NXP_PINT_RISING = kPINT_PinIntEnableRiseEdge, 34 /* Generate Pin Interrupt on falling edge */ 35 NXP_PINT_FALLING = kPINT_PinIntEnableFallEdge, 36 /* Generate Pin Interrupt on both edges */ 37 NXP_PINT_BOTH = kPINT_PinIntEnableBothEdges, 38 /* Generate Pin Interrupt on low level */ 39 NXP_PINT_LOW = kPINT_PinIntEnableLowLevel, 40 /* Generate Pin Interrupt on high level */ 41 NXP_PINT_HIGH = kPINT_PinIntEnableHighLevel 42 }; 43 44 /* Callback for NXP PINT interrupt */ 45 typedef void (*nxp_pint_cb_t) (uint8_t pin, void *user); 46 47 /** 48 * @brief Enable PINT interrupt source. 49 * 50 * @param pin: pin to use as interrupt source 51 * 0-64, corresponding to GPIO0 pin 1 - GPIO1 pin 31) 52 * @param trigger: one of nxp_pint_trigger flags 53 * @param wake: indicates if the pin should wakeup the system 54 */ 55 int nxp_pint_pin_enable(uint8_t pin, enum nxp_pint_trigger trigger, bool wake); 56 57 58 /** 59 * @brief disable PINT interrupt source. 60 * 61 * @param pin: pin interrupt source to disable 62 */ 63 void nxp_pint_pin_disable(uint8_t pin); 64 65 /** 66 * @brief Install PINT callback 67 * 68 * @param pin: interrupt source to install callback for 69 * @param cb: callback to install 70 * @param data: user data to include in callback 71 * @return 0 on success, or negative value on error 72 */ 73 int nxp_pint_pin_set_callback(uint8_t pin, nxp_pint_cb_t cb, void *data); 74 75 /** 76 * @brief Remove PINT callback 77 * 78 * @param pin: interrupt source to remove callback for 79 */ 80 void nxp_pint_pin_unset_callback(uint8_t pin); 81 82 83 #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_NXP_PINT_H_ */ 84