| /******************************************************************************* | |
| * Copyright (C) 2007, ZTE Corporation. | |
| * | |
| * File Name: | |
| * File Mark: | |
| * Description: | |
| * Others: | |
| * Version: 1.0 | |
| * Author: weizhigang | |
| * Date: 2010-8-6 | |
| * History 1: | |
| * Date: | |
| * Version: | |
| * Author: | |
| * Modification: | |
| * History 2: | |
| ********************************************************************************/ | |
| #ifndef _DRVS_SSP_H | |
| #define _DRVS_SSP_H | |
| /**************************************************************************** | |
| * Include files | |
| ****************************************************************************/ | |
| #include "drvs_dma.h" | |
| /**************************************************************************** | |
| * Macros | |
| ****************************************************************************/ | |
| //#define SSP_INT_ENABLE 0 | |
| //#define SSP_DMA_ENABLE 1 | |
| #define SSP_ASSERT() zOss_ASSERT(0) | |
| #define SSP_ERROR(format,args...) do {SSP_ASSERT();zOss_Printf(1,1,format,##args);} while(0) | |
| #define SSP_DEBUG_RAMLOG | |
| #ifdef SSP_DEBUG_RAMLOG | |
| #define zDrvSsp_RamLog(s...) zDrvRamlog_PRINTF(RAMLOG_MOD_SPI,s) | |
| #else | |
| #define zDrvSsp_RamLog(s...) | |
| #endif | |
| #define SPI_PRINTF(cond, format, args...) do { if(cond) zOss_Printf(SUBMDL_TEST, PRINT_LEVEL_NORMAL, format, ##args);}while(0) | |
| /**************************************************************************** | |
| * Types | |
| ****************************************************************************/ | |
| //define ssp num --zhangpei add | |
| typedef enum _T_SspDevNum | |
| { | |
| SSP_DEV_0 = 0, | |
| SSP_DEV_1 = 1, | |
| SSP_DEV_NUM | |
| } | |
| T_SspDevNum; | |
| typedef enum _T_SspMSMode | |
| { | |
| SSP_MS_MASTER = 0x0, | |
| SSP_MS_SLAVE = 0x1, | |
| } | |
| T_SspMSMode; | |
| //define ssp mode | |
| typedef enum _T_SspMode | |
| { | |
| SSP_AS_SPI = 0x0, | |
| SSP_AS_TISS = 0x1, | |
| } | |
| T_SspMode; | |
| //define ssp mode | |
| typedef enum _T_SspXferWidth | |
| { | |
| SSP_8_BIT = 7, | |
| SSP_9_BIT = 8, | |
| SSP_16_BIT = 15, | |
| SSP_32_BIT = 31 | |
| } | |
| T_SspXferWidth; | |
| //define ssp mode | |
| typedef enum _T_SspPolarity | |
| { | |
| SPH_SPO_00 = 0x0, | |
| SPH_SPO_01 = 0x1, | |
| SPH_SPO_10 = 0x2, | |
| SPH_SPO_11 = 0x3 | |
| } | |
| T_SspPolarity; | |
| //defined for ssp frequency changing | |
| typedef enum _T_SspFrequency | |
| { | |
| SSP_FREQ_52M, | |
| SSP_FREQ_39M, | |
| SSP_FREQ_26M, | |
| SSP_FREQ_13M, | |
| SSP_FREQ_6M5, | |
| SSP_FREQ_3M2, | |
| SSP_FREQ_1M6, | |
| SSP_FREQ_812K5, | |
| SSP_FREQ_NUM, | |
| } | |
| T_SspFrequency; | |
| typedef enum _T_SspCamMode | |
| { | |
| SSP_NORMAL_MODE = 0x0, | |
| SSP_CAMERA_MODE = 0x1, | |
| } | |
| T_SspCamMode; | |
| //define ssp cs level | |
| typedef enum _T_SspCsLevel | |
| { | |
| SSP_CS_LOW = 0, | |
| SSP_CS_HIGH = 1 | |
| } | |
| T_SspCsLevel; | |
| //define the status | |
| #define RXFIFOFULL 1 | |
| #define RXFIFONOTFULL 0 | |
| #define RXFIFOEMPT 0 | |
| #define RXFIFONOTEMPT 1 | |
| #define TXFIFOFULL 0 | |
| #define TXFIFONOTFULL 1 | |
| #define TXFIFOEMPTY 1 | |
| #define TXFIFONOTEMPTY 0 | |
| //define register bit field segment | |
| typedef volatile struct | |
| { | |
| /*0x00*/ | |
| UINT32 SSP_VER_REG; | |
| /*0x04*/ | |
| UINT32 SSP_COM_CTRL; | |
| /*0x08*/ | |
| UINT32 SSP_FMT_CTRL; | |
| /*0x0c*/ | |
| UINT32 SSP_DR; | |
| /*0x10*/ | |
| UINT32 SSP_FIFO_CTRL; | |
| /*0x14*/ | |
| UINT32 SSP_FIFO_SR; | |
| /*0x18*/ | |
| UINT32 SSP_INTR_EN; | |
| //0x1c | |
| UINT32 SSP_ISR_OR_ICR; | |
| //0x20 | |
| UINT32 SSP_TIMING; | |
| } | |
| T_SspReg; | |
| typedef enum _T_SspStatus | |
| { | |
| SSP_STA_INIT = 0, | |
| SSP_STA_OPENED, | |
| SSP_STA_XFER, | |
| SSP_STA_DMA_ERR, | |
| SSP_STA_DONE, | |
| } | |
| T_SspStatus; | |
| typedef struct _T_SspDmaInfo | |
| { | |
| UINT32 rxDmaChl; // ssp rx Dma channel number | |
| UINT32 txDmaChl; | |
| T_ZDrvDma_ChannelDef rxDmaChlDef; | |
| T_ZDrvDma_ChannelDef txDmaChlDef; | |
| zDrvDma_CallbackFunc rxDmaCbFunc; // ssp rx callback function | |
| zDrvDma_CallbackFunc txDmaCbFunc; | |
| ZOSS_SEMAPHORE_ID TxDmaSema; | |
| ZOSS_SEMAPHORE_ID RxDmaSema; | |
| } T_SspDmaInfo; | |
| typedef union _T_SspData | |
| { | |
| UINT8 *Buf_8; | |
| UINT16 *Buf_16; | |
| UINT32 *Buf_32; | |
| VOID *Buf; | |
| } T_SspData; | |
| typedef struct | |
| { | |
| T_SspDevNum devNum; //indicate the ssp device num | |
| T_SspReg* regPtr; | |
| T_SspDmaInfo SspDmaInfo; | |
| T_SspStatus status; | |
| T_SspMSMode msMode; | |
| T_SspMode mode; | |
| T_SspPolarity polarity; | |
| T_SspXferWidth xferWidth; | |
| //NT32 SspWorkClock; //the wanted freq | |
| //NT32 RealSspWorkClock; //the actral freq | |
| UINT32 SspWorkClock; //the wanted freq | |
| UINT32 tx_thres; | |
| UINT32 rx_thres; | |
| UINT32 Len_tx_remin; | |
| VOID* txBuf; | |
| UINT32 Len_rx_remin; | |
| VOID* rxBuf; | |
| UINT32 bPrint; | |
| //ZOSS_SEMAPHORE_ID txSem; | |
| // ZOSS_SEMAPHORE_ID rxSem; | |
| } | |
| T_SspDevHnd; | |
| /**************************************************************************** | |
| * Constants | |
| ****************************************************************************/ | |
| /**************************************************************************** | |
| * Global Variables | |
| ****************************************************************************/ | |
| /**************************************************************************** | |
| * Function Prototypes | |
| ****************************************************************************/ | |
| SINT32 zDrvSsp_Transfer(VOID* hnd, VOID* txBuf ,VOID* rxBuf,UINT32 Len); | |
| //VOID* zDrvSsp_Open(T_SspDevNum devNum, T_SspMSMode msMode); | |
| VOID* zDrvSsp_Open(T_SspDevNum devNum); | |
| //VOID zDrvSsp_Reset(T_SspDevNum devNum); | |
| SINT32 zDrvSsp_Set_XferWidth(VOID* hnd,T_SspXferWidth length); | |
| SINT32 zDrvSsp_Xfer(VOID* hnd, VOID* txBuf ,VOID* rxBuf,UINT32 Len); | |
| SINT32 zDrvSsp_DmaXfer(VOID* hnd, VOID* txBuf ,VOID* rxBuf,UINT32 Len); | |
| //SINT32 zDrvSsp_DmaEnable(T_SspDevNum devNum); | |
| //SINT32 zDrvSsp_DmaDisable(T_SspDevNum devNum); | |
| //NT32 zDrvSsp_ChangeFreq(VOID *hnd, T_SspFrequency Freq); | |
| SINT32 zDrvSsp_SetMSMode(VOID *hnd, T_SspMSMode msMode); | |
| SINT32 zDrvSsp_Initiate(VOID); | |
| SINT32 zDrvSsp_Ioctl(VOID *hnd, T_DRVIO_CTRL_KEY function, VOID *arg); | |
| #endif/*_FILENAME_H*/ | |