diff options
Diffstat (limited to 'cpu/ixp/npe/include/IxSspAcc.h')
-rw-r--r-- | cpu/ixp/npe/include/IxSspAcc.h | 1271 |
1 files changed, 0 insertions, 1271 deletions
diff --git a/cpu/ixp/npe/include/IxSspAcc.h b/cpu/ixp/npe/include/IxSspAcc.h deleted file mode 100644 index 35e7abf..0000000 --- a/cpu/ixp/npe/include/IxSspAcc.h +++ /dev/null @@ -1,1271 +0,0 @@ -/** - * @file IxSspAcc.h - * - * @brief Header file for the IXP400 SSP Serial Port Access (IxSspAcc) - * - * @version $Revision: 0.1 $ - * - * @par - * IXP400 SW Release version 2.0 - * - * -- Copyright Notice -- - * - * @par - * Copyright 2001-2005, Intel Corporation. - * All rights reserved. - * - * @par - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Intel Corporation nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * @par - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @par - * -- End of Copyright Notice -- - */ - -/** - * @defgroup IxSspAcc IXP400 SSP Serial Port Access (IxSspAcc) API - * - * @brief IXP400 SSP Serial Port Access Public API - * - * @{ - */ -#ifndef IXSSPACC_H -#define IXSSPACC_H - -#ifdef __ixp46X - -#include "IxOsal.h" - -/* - * Section for enum - */ -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccDataSize - * - * @brief The data sizes in bits that are supported by the protocol - */ -typedef enum -{ - DATA_SIZE_TOO_SMALL = 0x2, - DATA_SIZE_4 = 0x3, - DATA_SIZE_5, - DATA_SIZE_6, - DATA_SIZE_7, - DATA_SIZE_8, - DATA_SIZE_9, - DATA_SIZE_10, - DATA_SIZE_11, - DATA_SIZE_12, - DATA_SIZE_13, - DATA_SIZE_14, - DATA_SIZE_15, - DATA_SIZE_16, - DATA_SIZE_TOO_BIG -} IxSspAccDataSize; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccPortStatus - * - * @brief The status of the SSP port to be set to enable/disable - */ -typedef enum -{ - SSP_PORT_DISABLE = 0x0, - SSP_PORT_ENABLE, - INVALID_SSP_PORT_STATUS -} IxSspAccPortStatus; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccFrameFormat - * - * @brief The frame format that is to be used - SPI, SSP, or Microwire - */ -typedef enum -{ - SPI_FORMAT = 0x0, - SSP_FORMAT, - MICROWIRE_FORMAT, - INVALID_FORMAT -} IxSspAccFrameFormat; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccClkSource - * - * @brief The source to produce the SSP serial clock - */ -typedef enum -{ - ON_CHIP_CLK = 0x0, - EXTERNAL_CLK, - INVALID_CLK_SOURCE -} IxSspAccClkSource; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccSpiSclkPhase - * - * @brief The SPI SCLK Phase: - * 0 - SCLK is inactive one cycle at the start of a frame and 1/2 cycle at the - * end of a frame. - * 1 - SCLK is inactive 1/2 cycle at the start of a frame and one cycle at the - * end of a frame. - */ -typedef enum -{ - START_ONE_END_HALF = 0x0, - START_HALF_END_ONE, - INVALID_SPI_PHASE -} IxSspAccSpiSclkPhase; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccSpiSclkPolarity - * - * @brief The SPI SCLK Polarity can be set to either low or high. - */ -typedef enum -{ - SPI_POLARITY_LOW = 0x0, - SPI_POLARITY_HIGH, - INVALID_SPI_POLARITY -} IxSspAccSpiSclkPolarity; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccMicrowireCtlWord - * - * @brief The Microwire control word can be either 8 or 16 bit. - */ -typedef enum -{ - MICROWIRE_8_BIT = 0x0, - MICROWIRE_16_BIT, - INVALID_MICROWIRE_CTL_WORD -} IxSspAccMicrowireCtlWord; - -/** - * @ingroup IxSspAcc - * - * @enum IxSspAccFifoThreshold - * - * @brief The threshold in frames (each frame is defined by IxSspAccDataSize) - * that can be set for the FIFO to trigger a threshold exceed when - * checking with the ExceedThresholdCheck functions or an interrupt - * when it is enabled. - */ -typedef enum -{ - FIFO_TSHLD_1 = 0x0, - FIFO_TSHLD_2, - FIFO_TSHLD_3, - FIFO_TSHLD_4, - FIFO_TSHLD_5, - FIFO_TSHLD_6, - FIFO_TSHLD_7, - FIFO_TSHLD_8, - FIFO_TSHLD_9, - FIFO_TSHLD_10, - FIFO_TSHLD_11, - FIFO_TSHLD_12, - FIFO_TSHLD_13, - FIFO_TSHLD_14, - FIFO_TSHLD_15, - FIFO_TSHLD_16, - INVALID_FIFO_TSHLD -} IxSspAccFifoThreshold; - -/** - * @ingroup IxSspAcc - * - * @enum IX_SSP_STATUS - * - * @brief The statuses that can be returned in a SSP Serial Port Access - */ -typedef enum -{ - IX_SSP_SUCCESS = IX_SUCCESS, /**< Success status */ - IX_SSP_FAIL, /**< Fail status */ - IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING, /**< - Rx FIFO Overrun handler is NULL. */ - IX_SSP_RX_FIFO_HANDLER_MISSING, /**< - Rx FIFO threshold hit or above handler is NULL - */ - IX_SSP_TX_FIFO_HANDLER_MISSING, /**< - Tx FIFO threshold hit or below handler is NULL - */ - IX_SSP_FIFO_NOT_EMPTY_FOR_SETTING_CTL_CMD, /**< - Tx FIFO not empty and therefore microwire - control command size setting is not allowed. */ - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE, /**< - frame format selected is invalid. */ - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE, /**< - data size selected is invalid. */ - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE, /**< - source clock selected is invalid. */ - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE, /**< - Tx FIFO threshold selected is invalid. */ - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE, /**< - Rx FIFO threshold selected is invalid. */ - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE, /**< - SPI phase selected is invalid. */ - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE, /**< - SPI polarity selected is invalid. */ - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE, /**< - Microwire control command selected is invalid - */ - IX_SSP_INT_UNBIND_FAIL, /**< Interrupt unbind fail to unbind SSP - interrupt */ - IX_SSP_INT_BIND_FAIL, /**< Interrupt bind fail during init */ - IX_SSP_RX_FIFO_NOT_EMPTY, /**< - Rx FIFO not empty while trying to change data - size. */ - IX_SSP_TX_FIFO_NOT_EMPTY, /**< - Rx FIFO not empty while trying to change data - size or microwire control command size. */ - IX_SSP_POLL_MODE_BLOCKING, /**< - poll mode selected blocks interrupt mode from - being selected. */ - IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD, /**< - Tx FIFO level hit or below threshold. */ - IX_SSP_TX_FIFO_EXCEED_THRESHOLD, /**< - Tx FIFO level exceeded threshold. */ - IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD, /**< - Rx FIFO level hit or exceeded threshold. */ - IX_SSP_RX_FIFO_BELOW_THRESHOLD, /**< - Rx FIFO level below threshold. */ - IX_SSP_BUSY, /**< SSP is busy. */ - IX_SSP_IDLE, /**< SSP is idle. */ - IX_SSP_OVERRUN_OCCURRED, /**< - SSP has experienced an overrun. */ - IX_SSP_NO_OVERRUN, /**< - SSP did not experience an overrun. */ - IX_SSP_NOT_SUPORTED, /**< hardware does not support SSP */ - IX_SSP_NOT_INIT, /**< SSP Access not intialized */ - IX_SSP_NULL_POINTER /**< parameter passed in is NULL */ -} IX_SSP_STATUS; - -/** - * @ingroup IxSspAcc - * - * @brief SSP Rx FIFO Overrun handler - * - * This function is called for the client to handle Rx FIFO Overrun that occurs - * in the SSP hardware - */ -typedef void (*RxFIFOOverrunHandler)(void); - -/** - * @ingroup IxSspAcc - * - * @brief SSP Rx FIFO Threshold hit or above handler - * - * This function is called for the client to handle Rx FIFO threshold hit or - * or above that occurs in the SSP hardware - */ -typedef void (*RxFIFOThresholdHandler)(void); - -/** - * @ingroup IxSspAcc - * - * @brief SSP Tx FIFO Threshold hit or below handler - * - * This function is called for the client to handle Tx FIFO threshold hit or - * or below that occurs in the SSP hardware - */ -typedef void (*TxFIFOThresholdHandler)(void); - - -/* - * Section for struct - */ -/** - * @ingroup IxSspAcc - * - * @brief contains all the variables required to initialize the SSP serial port - * hardware. - * - * Structure to be filled and used for calling initialization - */ -typedef struct -{ - IxSspAccFrameFormat FrameFormatSelected;/**<Select between SPI, SSP and - Microwire. */ - IxSspAccDataSize DataSizeSelected; /**<Select between 4 and 16. */ - IxSspAccClkSource ClkSourceSelected; /**<Select clock source to be - on-chip or external. */ - IxSspAccFifoThreshold TxFIFOThresholdSelected; - /**<Select Tx FIFO threshold - between 1 to 16. */ - IxSspAccFifoThreshold RxFIFOThresholdSelected; - /**<Select Rx FIFO threshold - between 1 to 16. */ - BOOL RxFIFOIntrEnable; /**<Enable/disable Rx FIFO - threshold interrupt. Disabling - this interrupt will require - the use of the polling function - RxFIFOExceedThresholdCheck. */ - BOOL TxFIFOIntrEnable; /**<Enable/disable Tx FIFO - threshold interrupt. Disabling - this interrupt will require - the use of the polling function - TxFIFOExceedThresholdCheck. */ - RxFIFOThresholdHandler RxFIFOThsldHdlr; /**<Pointer to function to handle - a Rx FIFO interrupt. */ - TxFIFOThresholdHandler TxFIFOThsldHdlr; /**<Pointer to function to handle - a Tx FIFO interrupt. */ - RxFIFOOverrunHandler RxFIFOOverrunHdlr; /**<Pointer to function to handle - a Rx FIFO overrun interrupt. */ - BOOL LoopbackEnable; /**<Select operation mode to be - normal or loopback mode. */ - IxSspAccSpiSclkPhase SpiSclkPhaseSelected; - /**<Select SPI SCLK phase to start - with one inactive cycle and end - with 1/2 inactive cycle or - start with 1/2 inactive cycle - and end with one inactive - cycle. (Only used in - SPI format). */ - IxSspAccSpiSclkPolarity SpiSclkPolaritySelected; - /**<Select SPI SCLK idle state - to be low or high. (Only used in - SPI format). */ - IxSspAccMicrowireCtlWord MicrowireCtlWordSelected; - /**<Select Microwire control - format to be 8 or 16-bit. (Only - used in Microwire format). */ - UINT8 SerialClkRateSelected; /**<Select between 0 (1.8432Mbps) - and 255 (7.2Kbps). The - formula used is Bit rate = - 3.6864x10^6 / - (2 x (SerialClkRateSelect + 1)) - */ -} IxSspInitVars; - -/** - * @ingroup IxSspAcc - * - * @brief contains counters of the SSP statistics - * - * Structure contains all values of counters and associated overflows. - */ -typedef struct -{ - UINT32 ixSspRcvCounter; /**<Total frames received. */ - UINT32 ixSspXmitCounter; /**<Total frames transmitted. */ - UINT32 ixSspOverflowCounter;/**<Total occurrences of overflow. */ -} IxSspAccStatsCounters; - - -/* - * Section for prototypes interface functions - */ - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccInit ( - IxSspInitVars *initVarsSelected); - * - * @brief Initializes the SSP Access module. - * - * @param "IxSspAccInitVars [in] *initVarsSelected" - struct containing required - * variables for initialization - * - * Global Data : - * - None. - * - * This API will initialize the SSP Serial Port hardware to the user specified - * configuration. Then it will enable the SSP Serial Port. - * *NOTE*: Once interrupt or polling mode is selected, the mode cannot be - * changed via the interrupt enable/disable function but the init needs to be - * called again to change it. - * - * @return - * - IX_SSP_SUCCESS - Successfully initialize and enable the SSP - * serial port. - * - IX_SSP_RX_FIFO_HANDLER_MISSING - interrupt mode is selected but RX FIFO - * handler pointer is NULL - * - IX_SSP_TX_FIFO_HANDLER_MISSING - interrupt mode is selected but TX FIFO - * handler pointer is NULL - * - IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING - interrupt mode is selected but - * RX FIFO Overrun handler pointer is NULL - * - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not - * allowed. - * - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not - * allowed. - * - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - frame format selected is invalid - * - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - data size selected is invalid - * - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - clock source selected is invalid - * - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - Tx FIFO threshold level - * selected is invalid - * - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - Rx FIFO threshold level - * selected is invalid - * - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - SPI phase selected is invalid - * - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - SPI polarity selected is invalid - * - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - microwire control command - * size is invalid - * - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt - * - IX_SSP_INT_BIND_FAIL - interrupt handler failed to bind to SSP interrupt - * hardware trigger - * - IX_SSP_NOT_SUPORTED - hardware does not support SSP - * - IX_SSP_NULL_POINTER - parameter passed in is NULL - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccInit (IxSspInitVars *initVarsSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccUninit ( - void) - * - * @brief Un-initializes the SSP Serial Port Access component - * - * @param - None - * - * Global Data : - * - None. - * - * This API will disable the SSP Serial Port hardware. The client can call the - * init function again if they wish to enable the SSP. - * - * @return - * - IX_SSP_SUCCESS - successfully uninit SSP component - * - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccUninit (void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccFIFODataSubmit ( - UINT16 *data, - UINT32 amtOfData) - * - * @brief Inserts data into the SSP Serial Port's FIFO - * - * @param "UINT16 [in] *data" - pointer to the location to transmit the data - * from - * "UINT32 [in] amtOfData" - number of data to be transmitted. - * - * Global Data : - * - None. - * - * This API will insert the amount of data specified by "amtOfData" from buffer - * pointed to by "data" into the FIFO to be transmitted by the hardware. - * - * @return - * - IX_SSP_SUCCESS - Data inserted successfully into FIFO - * - IX_SSP_FAIL - FIFO insufficient space - * - IX_SSP_NULL_POINTER - data pointer passed by client is NULL - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccFIFODataSubmit ( - UINT16* data, - UINT32 amtOfData); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccFIFODataReceive ( - UINT16 *data, - UINT32 amtOfData) - * - * @brief Extract data from the SSP Serial Port's FIFO - * - * @param "UINT16 [in] *data" - pointer to the location to receive the data into - * "UINT32 [in] amtOfData" - number of data to be received. - * - * Global Data : - * - None. - * - * This API will extract the amount of data specified by "amtOfData" from the - * FIFO already received by the hardware into the buffer pointed to by "data". - * - * @return - * - IX_SSP_SUCCESS - Data extracted successfully from FIFO - * - IX_SSP_FAIL - FIFO has no data - * - IX_SSP_NULL_POINTER - data pointer passed by client is NULL - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccFIFODataReceive ( - UINT16* data, - UINT32 amtOfData); - - -/** - * Polling Functions - */ - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccTxFIFOHitOrBelowThresholdCheck ( - void) - * - * @brief Check if the Tx FIFO threshold has been hit or fallen below. - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return whether the Tx FIFO threshold has been exceeded or not - * - * @return - * - IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD - Tx FIFO level hit or below threshold . - * - IX_SSP_TX_FIFO_EXCEED_THRESHOLD - Tx FIFO level exceeded threshold. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccTxFIFOHitOrBelowThresholdCheck ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOHitOrAboveThresholdCheck ( - void) - * - * @brief Check if the Rx FIFO threshold has been hit or exceeded. - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return whether the Rx FIFO level is below threshold or not - * - * @return - * - IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD - Rx FIFO level hit or exceeded threshold - * - IX_SSP_RX_FIFO_BELOW_THRESHOLD - Rx FIFO level below threshold - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccRxFIFOHitOrAboveThresholdCheck ( - void); - - -/** - * Configuration functions - * - * NOTE: These configurations are not required to be called once init is called - * unless configurations need to be changed on the fly. - */ - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccSSPPortStatusSet ( - IxSspAccPortStatus portStatusSelected) - * - * @brief Enables/disables the SSP Serial Port hardware. - * - * @param "IxSspAccPortStatus [in] portStatusSelected" - Set the SSP port to - * enable or disable - * - * Global Data : - * - None. - * - * This API will enable/disable the SSP Serial Port hardware. - * NOTE: This function is called by init to enable the SSP after setting up the - * configurations and by uninit to disable the SSP. - * - * @return - * - IX_SSP_SUCCESS - Port status set with valid enum value - * - IX_SSP_FAIL - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccSSPPortStatusSet ( - IxSspAccPortStatus portStatusSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccFrameFormatSelect ( - IxSspAccFrameFormat frameFormatSelected) - * - * @brief Sets the frame format for the SSP Serial Port hardware - * - * @param "IxSspAccFrameFormat [in] frameFormatSelected" - The frame format of - * SPI, SSP or Microwire can be selected as the format - * - * Global Data : - * - None. - * - * This API will set the format for the transfers via user input. - * *NOTE*: The SSP hardware will be disabled to clear the FIFOs. Then its - * previous state (enabled/disabled) restored after changing the format. - * - * @return - * - IX_SSP_SUCCESS - frame format set with valid enum value - * - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - invalid frame format value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccFrameFormatSelect ( - IxSspAccFrameFormat frameFormatSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccDataSizeSelect ( - IxSspAccDataSize dataSizeSelected) - * - * @brief Sets the data size for transfers - * - * @param "IxSspAccDataSize [in] dataSizeSelected" - The data size between 4 - * and 16 that can be selected for data transfers - * - * Global Data : - * - None. - * - * This API will set the data size for the transfers via user input. It will - * disallow the change of the data size if either of the Rx/Tx FIFO is not - * empty to prevent data loss. - * *NOTE*: The SSP port will be disabled if the FIFOs are found to be empty and - * if between the check and disabling of the SSP (which clears the - * FIFOs) data is received into the FIFO, it might be lost. - * *NOTE*: The FIFOs can be cleared by disabling the SSP Port if necessary to - * force the data size change. - * - * @return - * - IX_SSP_SUCCESS - data size set with valid enum value - * - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not - * allowed. - * - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not - * allowed. - * - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccDataSizeSelect ( - IxSspAccDataSize dataSizeSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccClockSourceSelect( - IxSspAccClkSource clkSourceSelected) - * - * @brief Sets the clock source of the SSP Serial Port hardware - * - * @param "IxSspAccClkSource [in] clkSourceSelected" - The clock source from - * either external source on on-chip can be selected as the source - * - * Global Data : - * - None. - * - * This API will set the clock source for the transfers via user input. - * - * @return - * - IX_SSP_SUCCESS - clock source set with valid enum value - * - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccClockSourceSelect ( - IxSspAccClkSource clkSourceSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccSerialClockRateConfigure ( - UINT8 serialClockRateSelected) - * - * @brief Sets the on-chip Serial Clock Rate of the SSP Serial Port hardware. - * - * @param "UINT8 [in] serialClockRateSelected" - The serial clock rate that can - * be set is between 7.2Kbps and 1.8432Mbps. The formula used is - * Bit rate = 3.6864x10^6 / (2 x (SerialClockRateSelected + 1)) - * - * Global Data : - * - None. - * - * This API will set the serial clock rate for the transfers via user input. - * - * @return - * - IX_SSP_SUCCESS - Serial clock rate configured successfully - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccSerialClockRateConfigure ( - UINT8 serialClockRateSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOIntEnable ( - RxFIFOThresholdHandler rxFIFOIntrHandler) - * - * @brief Enables service request interrupt whenever the Rx FIFO hits its - * threshold - * - * @param "void [in] *rxFIFOIntrHandler(UINT32)" - function pointer to the - * interrupt handler for the Rx FIFO exceeded. - * - * Global Data : - * - None. - * - * This API will enable the service request interrupt for the Rx FIFO - * - * @return - * - IX_SSP_SUCCESS - Rx FIFO level interrupt enabled successfully - * - IX_SSP_RX_FIFO_HANDLER_MISSING - missing handler for Rx FIFO level interrupt - * - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not - * allowed to be enabled. Use init to enable interrupt mode. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccRxFIFOIntEnable ( - RxFIFOThresholdHandler rxFIFOIntrHandler); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOIntDisable ( - void) - * - * @brief Disables service request interrupt of the Rx FIFO. - * - * @param - None - * - * Global Data : - * - None. - * - * This API will disable the service request interrupt of the Rx FIFO. - * - * @return - * - IX_SSP_SUCCESS - Rx FIFO Interrupt disabled successfully - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccRxFIFOIntDisable ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccTxFIFOIntEnable ( - TxFIFOThresholdHandler txFIFOIntrHandler) - * - * @brief Enables service request interrupt of the Tx FIFO. - * - * @param "void [in] *txFIFOIntrHandler(UINT32)" - function pointer to the - * interrupt handler for the Tx FIFO exceeded. - * - * Global Data : - * - None. - * - * This API will enable the service request interrupt of the Tx FIFO. - * - * @return - * - IX_SSP_SUCCESS - Tx FIFO level interrupt enabled successfully - * - IX_SSP_TX_FIFO_HANDLER_MISSING - missing handler for Tx FIFO level interrupt - * - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not - * allowed to be enabled. Use init to enable interrupt mode. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccTxFIFOIntEnable ( - TxFIFOThresholdHandler txFIFOIntrHandler); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccTxFIFOIntDisable ( - void) - * - * @brief Disables service request interrupt of the Tx FIFO - * - * @param - None - * - * Global Data : - * - None. - * - * This API will disable the service request interrupt of the Tx FIFO - * - * @return - * - IX_SSP_SUCCESS - Tx FIFO Interrupt disabled successfuly. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccTxFIFOIntDisable ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccLoopbackEnable ( - BOOL loopbackEnable) - * - * @brief Enables/disables the loopback mode - * - * @param "BOOL [in] loopbackEnable" - True to enable and false to disable. - * - * Global Data : - * - None. - * - * This API will set the mode of operation to either loopback or normal mode - * according to the user input. - * - * @return - * - IX_SSP_SUCCESS - Loopback enabled successfully - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccLoopbackEnable ( - BOOL loopbackEnable); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccSpiSclkPolaritySet ( - IxSspAccSpiSclkPolarity spiSclkPolaritySelected) - * - * @brief Sets the SPI SCLK Polarity to Low or High - * - * @param - "IxSspAccSpiSclkPolarity [in] spiSclkPolaritySelected" - SPI SCLK - * polarity that can be selected to either high or low - * - * Global Data : - * - None. - * - * This API is only used for the SPI frame format and will set the SPI SCLK polarity - * to either low or high - * - * @return - * - IX_SSP_SUCCESS - SPI Sclk polarity set with valid enum value - * - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - invalid SPI polarity value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccSpiSclkPolaritySet ( - IxSspAccSpiSclkPolarity spiSclkPolaritySelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccSpiSclkPhaseSet ( - IxSspAccSpiSclkPhase spiSclkPhaseSelected) - * - * @brief Sets the SPI SCLK Phase - * - * @param "IxSspAccSpiSclkPhase [in] spiSclkPhaseSelected" - Phase of either - * the SCLK is inactive one cycle at the start of a frame and 1/2 - * cycle at the end of a frame, OR - * the SCLK is inactive 1/2 cycle at the start of a frame and one - * cycle at the end of a frame. - * - * Global Data : - * - IX_SSP_SUCCESS - SPI Sclk phase set with valid enum value - * - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - invalid SPI phase value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * This API is only used for the SPI frame format and will set the SPI SCLK - * phase according to user input. - * - * @return - * - None - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccSpiSclkPhaseSet ( - IxSspAccSpiSclkPhase spiSclkPhaseSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccMicrowireControlWordSet ( - IxSspAccMicrowireCtlWord microwireCtlWordSelected) - * - * @brief Sets the Microwire control word to 8 or 16 bit format - * - * @param "IxSspAccMicrowireCtlWord [in] microwireCtlWordSelected" - Microwire - * control word format can be either 8 or 16 bit format - * - * Global Data : - * - None. - * - * This API is only used for the Microwire frame format and will set the - * control word to 8 or 16 bit format - * - * @return - * - IX_SSP_SUCCESS - Microwire Control Word set with valid enum value - * - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not - * allowed. - * - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccMicrowireControlWordSet ( - IxSspAccMicrowireCtlWord microwireCtlWordSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccTxFIFOThresholdSet ( - IxSspAccFifoThreshold txFIFOThresholdSelected) - * - * @brief Sets the Tx FIFO Threshold. - * - * @param "IxSspAccFifoThreshold [in] txFIFOThresholdSelected" - Threshold that - * is set for a Tx FIFO service request to be triggered - * - * Global Data : - * - None. - * - * This API will set the threshold for a Tx FIFO threshold to be triggered - * - * @return - * - IX_SSP_SUCCESS - Tx FIFO Threshold set with valid enum value - * - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccTxFIFOThresholdSet ( - IxSspAccFifoThreshold txFIFOThresholdSelected); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOThresholdSet ( - IxSspAccFifoThreshold rxFIFOThresholdSelected) - * - * @brief Sets the Rx FIFO Threshold. - * - * @param "IxSspAccFifoThreshold [in] rxFIFOThresholdSelected" - Threshold that - * is set for a Tx FIFO service request to be triggered - * - * Global Data : - * - None. - * - * This API will will set the threshold for a Rx FIFO threshold to be triggered - * - * @return - * - IX_SSP_SUCCESS - Rx FIFO Threshold set with valid enum value - * - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccRxFIFOThresholdSet ( - IxSspAccFifoThreshold rxFIFOThresholdSelected); - - -/** - * Debug functions - */ - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccStatsGet ( - IxSspAccStatsCounters *sspStats) - * - * @brief Returns the SSP Statistics through the pointer passed in - * - * @param "IxSspAccStatsCounters [in] *sspStats" - SSP statistics counter will - * be read and written to the location pointed by this pointer. - * - * Global Data : - * - None. - * - * This API will return the statistics counters of the SSP transfers. - * - * @return - * - IX_SSP_SUCCESS - Stats obtained into the pointer provided successfully - * - IX_SSP_FAIL - client provided pointer is NULL - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccStatsGet ( - IxSspAccStatsCounters *sspStats); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccStatsReset ( - void) - * - * @brief Resets the SSP Statistics - * - * @param - None - * - * Global Data : - * - None. - * - * This API will reset the SSP statistics counters. - * - * @return - * - None - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC void -ixSspAccStatsReset ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccShow ( - void) - * - * @brief Display SSP status registers and statistics counters. - * - * @param - None - * - * Global Data : - * - None. - * - * This API will display the status registers of the SSP and the statistics - * counters. - * - * @return - * - IX_SSP_SUCCESS - SSP show called successfully. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccShow ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccSSPBusyCheck ( - void) - * - * @brief Determine the state of the SSP serial port hardware. - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return the state of the SSP serial port hardware - busy or - * idle - * - * @return - * - IX_SSP_BUSY - SSP is busy - * - IX_SSP_IDLE - SSP is idle. - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccSSPBusyCheck ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccTxFIFOLevelGet ( - void) - * - * @brief Obtain the Tx FIFO's level - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return the level of the Tx FIFO - * - * @return - * - 0..16; 0 can also mean SSP not initialized and will need to be init. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC UINT8 -ixSspAccTxFIFOLevelGet ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOLevelGet ( - void) - * - * @brief Obtain the Rx FIFO's level - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return the level of the Rx FIFO - * - * @return - * - 0..16; 0 can also mean SSP not initialized and will need to be init. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC UINT8 -ixSspAccRxFIFOLevelGet ( - void); - -/** - * @ingroup IxSspAcc - * - * @fn ixSspAccRxFIFOOverrunCheck ( - void) - * - * @brief Check if the Rx FIFO has overrun its FIFOs - * - * @param - None - * - * Global Data : - * - None. - * - * This API will return whether the Rx FIFO has overrun its 16 FIFOs - * - * @return - * - IX_SSP_OVERRUN_OCCURRED - Rx FIFO overrun occurred - * - IX_SSP_NO_OVERRUN - Rx FIFO did not overrun - * - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called. - * - * @li Reentrant : yes - * @li ISR Callable : yes - * - */ -PUBLIC IX_SSP_STATUS -ixSspAccRxFIFOOverrunCheck ( - void); - -#endif /* __ixp46X */ -#endif /* IXSSPACC_H */ |