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 */ 54 int nxp_pint_pin_enable(uint8_t pin, enum nxp_pint_trigger trigger); 55 56 57 /** 58 * @brief disable PINT interrupt source. 59 * 60 * @param pin: pin interrupt source to disable 61 */ 62 void nxp_pint_pin_disable(uint8_t pin); 63 64 /** 65 * @brief Install PINT callback 66 * 67 * @param pin: interrupt source to install callback for 68 * @param cb: callback to install 69 * @param data: user data to include in callback 70 * @return 0 on success, or negative value on error 71 */ 72 int nxp_pint_pin_set_callback(uint8_t pin, nxp_pint_cb_t cb, void *data); 73 74 /** 75 * @brief Remove PINT callback 76 * 77 * @param pin: interrupt source to remove callback for 78 */ 79 void nxp_pint_pin_unset_callback(uint8_t pin); 80 81 82 #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_NXP_PINT_H_ */ 83