//***************************************************************************** // // i2s.h // // Defines and Macros for the I2S. // // 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. // //***************************************************************************** #ifndef __I2S_H__ #define __I2S_H__ //***************************************************************************** // // If building with a C++ compiler, make all of the definitions in this header // have a C binding. // //***************************************************************************** #ifdef __cplusplus extern "C" { #endif //***************************************************************************** // // I2S DMA ports. // //***************************************************************************** #define I2S_TX_DMA_PORT 0x4401E200 #define I2S_RX_DMA_PORT 0x4401E280 //***************************************************************************** // // Values that can be passed to I2SConfigSetExpClk() as the ulConfig parameter. // //***************************************************************************** #define I2S_SLOT_SIZE_24 0x00B200B4 #define I2S_SLOT_SIZE_16 0x00700074 #define I2S_PORT_CPU 0x00000008 #define I2S_PORT_DMA 0x00000000 //***************************************************************************** // // Values that can be passed as ulDataLine parameter. // //***************************************************************************** #define I2S_DATA_LINE_0 0x00000001 #define I2S_DATA_LINE_1 0x00000002 //***************************************************************************** // // Values that can be passed to I2SSerializerConfig() as the ulSerMode // parameter. // //***************************************************************************** #define I2S_SER_MODE_TX 0x00000001 #define I2S_SER_MODE_RX 0x00000002 #define I2S_SER_MODE_DISABLE 0x00000000 //***************************************************************************** // // Values that can be passed to I2SSerializerConfig() as the ulInActState // parameter. // //***************************************************************************** #define I2S_INACT_TRI_STATE 0x00000000 #define I2S_INACT_LOW_LEVEL 0x00000008 #define I2S_INACT_HIGH_LEVEL 0x0000000C //***************************************************************************** // // Values that can be passed to I2SIntEnable() and I2SIntDisable() as the // ulIntFlags parameter. // //***************************************************************************** #define I2S_INT_XUNDRN 0x00000001 #define I2S_INT_XSYNCERR 0x00000002 #define I2S_INT_XLAST 0x00000010 #define I2S_INT_XDATA 0x00000020 #define I2S_INT_XSTAFRM 0x00000080 #define I2S_INT_XDMA 0x80000000 #define I2S_INT_ROVRN 0x00010000 #define I2S_INT_RSYNCERR 0x00020000 #define I2S_INT_RLAST 0x00100000 #define I2S_INT_RDATA 0x00200000 #define I2S_INT_RSTAFRM 0x00800000 #define I2S_INT_RDMA 0x40000000 //***************************************************************************** // // Values that can be passed to I2SIntClear() as the // ulIntFlags parameter and returned from I2SIntStatus(). // //***************************************************************************** #define I2S_STS_XERR 0x00000100 #define I2S_STS_XDMAERR 0x00000080 #define I2S_STS_XSTAFRM 0x00000040 #define I2S_STS_XDATA 0x00000020 #define I2S_STS_XLAST 0x00000010 #define I2S_STS_XSYNCERR 0x00000002 #define I2S_STS_XUNDRN 0x00000001 #define I2S_STS_XDMA 0x80000000 #define I2S_STS_RERR 0x01000000 #define I2S_STS_RDMAERR 0x00800000 #define I2S_STS_RSTAFRM 0x00400000 #define I2S_STS_RDATA 0x00200000 #define I2S_STS_RLAST 0x00100000 #define I2S_STS_RSYNCERR 0x00020000 #define I2S_STS_ROVERN 0x00010000 #define I2S_STS_RDMA 0x40000000 //***************************************************************************** // // Values that can be passed to I2SEnable() as the ulMode parameter. // //***************************************************************************** #define I2S_MODE_TX_ONLY 0x00000001 #define I2S_MODE_TX_RX_SYNC 0x00000003 //***************************************************************************** // // API Function prototypes // //***************************************************************************** extern void I2SEnable(unsigned long ulBase, unsigned long ulMode); extern void I2SDisable(unsigned long ulBase); extern void I2SDataPut(unsigned long ulBase, unsigned long ulDataLine, unsigned long ulData); extern long I2SDataPutNonBlocking(unsigned long ulBase, unsigned long ulDataLine, unsigned long ulData); extern void I2SDataGet(unsigned long ulBase, unsigned long ulDataLine, unsigned long *pulData); extern long I2SDataGetNonBlocking(unsigned long ulBase, unsigned long ulDataLine, unsigned long *pulData); extern void I2SConfigSetExpClk(unsigned long ulBase, unsigned long ulI2SClk, unsigned long ulBitClk, unsigned long ulConfig); extern void I2STxFIFOEnable(unsigned long ulBase, unsigned long ulTxLevel, unsigned long ulWordsPerTransfer); extern void I2STxFIFODisable(unsigned long ulBase); extern void I2SRxFIFOEnable(unsigned long ulBase, unsigned long ulRxLevel, unsigned long ulWordsPerTransfer); extern void I2SRxFIFODisable(unsigned long ulBase); extern unsigned long I2STxFIFOStatusGet(unsigned long ulBase); extern unsigned long I2SRxFIFOStatusGet(unsigned long ulBase); extern void I2SSerializerConfig(unsigned long ulBase, unsigned long ulDataLine, unsigned long ulSerMode, unsigned long ulInActState); extern void I2SIntEnable(unsigned long ulBase, unsigned long ulIntFlags); extern void I2SIntDisable(unsigned long ulBase, unsigned long ulIntFlags); extern unsigned long I2SIntStatus(unsigned long ulBase); extern void I2SIntClear(unsigned long ulBase, unsigned long ulIntFlags); extern void I2SIntRegister(unsigned long ulBase, void (*pfnHandler)(void)); extern void I2SIntUnregister(unsigned long ulBase); //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif #endif //__I2S_H__