/* | |
* Copyright (c) 2016, Freescale Semiconductor, Inc. | |
* Copyright 2016-2017 NXP | |
* All rights reserved. | |
* | |
* SPDX-License-Identifier: BSD-3-Clause | |
*/ | |
#ifndef _FSL_FLEXCOMM_H_ | |
#define _FSL_FLEXCOMM_H_ | |
#include "fsl_common.h" | |
/*! | |
* @addtogroup flexcomm_driver | |
* @{ | |
*/ | |
/*! @name Driver version */ | |
/*@{*/ | |
/*! @brief FlexCOMM driver version 2.0.0. */ | |
#define FSL_FLEXCOMM_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) | |
/*@}*/ | |
/*! @brief FLEXCOMM peripheral modes. */ | |
typedef enum | |
{ | |
FLEXCOMM_PERIPH_NONE, /*!< No peripheral */ | |
FLEXCOMM_PERIPH_USART, /*!< USART peripheral */ | |
FLEXCOMM_PERIPH_SPI, /*!< SPI Peripheral */ | |
FLEXCOMM_PERIPH_I2C, /*!< I2C Peripheral */ | |
FLEXCOMM_PERIPH_I2S_TX, /*!< I2S TX Peripheral */ | |
FLEXCOMM_PERIPH_I2S_RX, /*!< I2S RX Peripheral */ | |
} FLEXCOMM_PERIPH_T; | |
/*! @brief Typedef for interrupt handler. */ | |
typedef void (*flexcomm_irq_handler_t)(void *base, void *handle); | |
/*! @brief Array with IRQ number for each FLEXCOMM module. */ | |
extern IRQn_Type const kFlexcommIrqs[]; | |
/*! @brief Returns instance number for FLEXCOMM module with given base address. */ | |
uint32_t FLEXCOMM_GetInstance(void *base); | |
/*! @brief Initializes FLEXCOMM and selects peripheral mode according to the second parameter. */ | |
status_t FLEXCOMM_Init(void *base, FLEXCOMM_PERIPH_T periph); | |
/*! @brief Sets IRQ handler for given FLEXCOMM module. It is used by drivers register IRQ handler according to FLEXCOMM | |
* mode */ | |
void FLEXCOMM_SetIRQHandler(void *base, flexcomm_irq_handler_t handler, void *handle); | |
/*@}*/ | |
#endif /* _FSL_FLEXCOMM_H_*/ |