text: //*****************************************************************************
  // mcasp_if.h
  //
  //  MCASP interface APIs.
  //
  // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ 
  // 
  // 
  //  Redistribution and use in source and binary forms, with or without 
  //  modification, are permitted provided that the following conditions 
  //  are met:
  //
  //    Redistributions of source code must retain the above copyright 
  //    notice, this list of conditions and the following disclaimer.
  //
  //    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.
  //
  //    Neither the name of Texas Instruments Incorporated nor the names of
  //    its contributors may be used to endorse or promote products derived
  //    from this software without specific prior written permission.
  //
  //  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.
  //
  //*****************************************************************************
  //*****************************************************************************
  //
  // mcasp_if.h - Defines and prototypes for MultiChannel Audio Serial Port.
  //
  //*****************************************************************************
  
  #ifndef __MCASP_IF_H__
  #define __MCASP_IF_H__
  
  //*****************************************************************************
  //
  // If building with a C++ compiler, make all of the definitions in this header
  // have a C binding.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  extern "C"
  {
  #endif
    
  #define WFIFO_NUMDMA_WORDS      1
  #define MCASP_DMA_PORT_ADDR     0x4401E200
  
  //
  // Update the sampling freq, channels, sample length appropriately
  //
  typedef enum {
  	SAMPLING_FREQ_8_KHZ = 8000,
  	SAMPLING_FREQ_11_X_KHZ = 11025,
  	SAMPLING_FREQ_16_KHZ = 16000,
      SAMPLING_FREQ_22_X_KHZ = 22050,
      SAMPLING_FREQ_32_KHZ = 32000,
  	SAMPLING_FREQ_44_1_KHZ = 44100,
  	SAMPLING_FREQ_48_KHZ = 48000
  } tESamplFreq;
  
  typedef enum {
  	CH_MONO = 1,
  	CH_STEREO = 2
  } tENumChannels;
  
  typedef enum {
  	BIT_8_PCM = 8,
  	BIT_16_PCM = 16,
  	BIT_24_PCM = 24,
      BIT_32_PCM = 32
  } tESampleLen;
  
  #define I2S_MODE_RX		0x01
  #define I2S_MODE_TX		0x02
  #define I2S_MODE_RX_TX	0x03
  
  //
  // Audio Renderer Interface APIs
  //
  extern void AudioRendererInit();
  extern void AudioCapturerInit();
  extern void AudioInit();
  extern void McASPInit();
  extern void AudioRendererSetupCPUMode(void (*pfnAppCbHndlr)(void));
  extern void AudioRendererSetupDMAMode(void (*pfnAppCbHndlr)(void), 
                                        unsigned long ulCallbackEvtSamples);
  extern void AudioCapturerSetupCPUMode(void (*pfnAppCbHndlr)(void));
  extern long AudioCapturerSetupDMAMode(void (*pfnAppCbHndlr)(void), 
                                        unsigned long ulCallbackEvtSamples);
  
  extern long AudioSetupDMAMode(void (*pfnAppCbHndlr)(void),
                                        unsigned long ulCallbackEvtSamples,
                                        unsigned char RxTx);
  
  
  extern unsigned int* AudioRendererGetDMADataPtr();
  extern unsigned int* AudioCapturerGetDMADataPtr();
  extern void AudioCapturerConfigure(int iSamplingFrequency,
                                     short sNumOfChannels,
                                     short sBitsPerSample);
  extern void AudioRendererConfigure(int iSamplingFrequency,
                                     short sNumOfChannels,
                                     short sBitsPerSample);
  extern void AudioRendererStart();
  extern void AudioCapturerStart();
  extern void AudioRendererStop();
  extern void AudioRendererDeInit();
  extern unsigned int BitClockConfigure(int iSamplingFrequency,
                                        short sNumOfChannels,
                                        short sBitsPerSample);
  
  extern void AudioCaptureRendererConfigure(unsigned char bitsPerSample,
  											unsigned short bitRate,
  											unsigned char noOfChannels,
  											unsigned char RxTx,
  											unsigned char	dma);
  
  extern void Audio_Start(unsigned char RxTx);
  //*****************************************************************************
  //
  // Mark the end of the C bindings section for C++ compilers.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  }
  #endif
  
  #endif //  __MCASP_IF_H__
  