blob: 7f96be340192e4e87edbe651aa59056f851c6e55 [file] [log] [blame]
/*
* Copyright 2022 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @brief Driver for External interrupt/event controller in NXP S32 MCUs
*
*/
#ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_
#define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_
#include <Siul2_Icu_Ip.h>
/* Wrapper callback for EIRQ line */
typedef void (*eirq_nxp_s32_callback_t)(uint8_t pin, void *arg);
/**
* @brief Unset EIRQ callback for line
*
* @param dev EIRQ device
* @param line EIRQ line
*/
void eirq_nxp_s32_unset_callback(const struct device *dev, uint8_t line);
/**
* @brief Set EIRQ callback for line
*
* @param dev EIRQ device
* @param line EIRQ line
* @param cb Callback
* @param pin GPIO pin
* @param arg Callback data
*
* @retval 0 on SUCCESS
* @retval -EBUSY if callback for the line is already set
*/
int eirq_nxp_s32_set_callback(const struct device *dev, uint8_t line,
eirq_nxp_s32_callback_t cb, uint8_t pin, void *arg);
/**
* @brief Set edge event and enable interrupt for EIRQ line
*
* @param dev EIRQ device
* @param line EIRQ line
* @param edge_type Type of edge event
*/
void eirq_nxp_s32_enable_interrupt(const struct device *dev, uint8_t line,
Siul2_Icu_Ip_EdgeType edge_type);
/**
* @brief Disable interrupt for EIRQ line
*
* @param dev EIRQ device
* @param line EIRQ line
*/
void eirq_nxp_s32_disable_interrupt(const struct device *dev, uint8_t line);
/**
* @brief Get pending interrupt for EIRQ device
*
* @param dev EIRQ device
* @return A mask contains pending flags
*/
uint32_t eirq_nxp_s32_get_pending(const struct device *dev);
#endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ */