📄 iodma_api.h
字号:
/********************************************************************************
* Filename : Iodma_api.h *
* Start date : *
* By : *
* Contact : *
* Description : low level api headers.(for only high level api) *
* *
********************************************************************************
*/
#ifndef _IODMA_API_H_
#define _IODMA_API_H_
#ifdef __cplusplus
extern "C" {
#endif
#define IODMA_STATE_STOP 1
#define IODMA_STATE_PLAY_VALID 2
#define IODMA_STATE_PLAY_NOVALID 3
#define _CDDA_IODMA_HISR_ 0
#define IODMA_BASE 0x308000
#define rDMABASE0_H (*(volatile unsigned int *) (IODMA_BASE+0x000))
#define rDMABASE0_L (*(volatile unsigned int *) (IODMA_BASE+0x002))
#define rDMABASE1_H (*(volatile unsigned int *) (IODMA_BASE+0x020))
#define rDMABASE1_L (*(volatile unsigned int *) (IODMA_BASE+0x022))
#define rDMABASE2_H (*(volatile unsigned int *) (IODMA_BASE+0x040))
#define rDMABASE2_L (*(volatile unsigned int *) (IODMA_BASE+0x042))
#define rDMABASE3_H (*(volatile unsigned int *) (IODMA_BASE+0x060))
#define rDMABASE3_L (*(volatile unsigned int *) (IODMA_BASE+0x062))
#define rDMATCNT0_H (*(volatile unsigned int *) (IODMA_BASE+0x008))
#define rDMATCNT0_L (*(volatile unsigned int *) (IODMA_BASE+0x00a))
#define rDMATCNT1_H (*(volatile unsigned int *) (IODMA_BASE+0x028))
#define rDMATCNT1_L (*(volatile unsigned int *) (IODMA_BASE+0x02a))
#define rDMATCNT2_H (*(volatile unsigned int *) (IODMA_BASE+0x048))
#define rDMATCNT2_L (*(volatile unsigned int *) (IODMA_BASE+0x04a))
#define rDMATCNT3_H (*(volatile unsigned int *) (IODMA_BASE+0x068))
#define rDMATCNT3_L (*(volatile unsigned int *) (IODMA_BASE+0x06a))
#define rDMACADDR0_H (*(volatile unsigned int *) (IODMA_BASE+0x00C))
#define rDMACADDR0_L (*(volatile unsigned int *) (IODMA_BASE+0x00e))
#define rDMACADDR1_H (*(volatile unsigned int *) (IODMA_BASE+0x02C))
#define rDMACADDR1_L (*(volatile unsigned int *) (IODMA_BASE+0x02e))
#define rDMACADDR2_H (*(volatile unsigned int *) (IODMA_BASE+0x04C))
#define rDMACADDR2_L (*(volatile unsigned int *) (IODMA_BASE+0x04e))
#define rDMACADDR3_H (*(volatile unsigned int *) (IODMA_BASE+0x06C))
#define rDMACADDR3_L (*(volatile unsigned int *) (IODMA_BASE+0x06e))
#define rDMACON0_H (*(volatile unsigned int *) (IODMA_BASE+0x004))
#define rDMACON0_L (*(volatile unsigned int *) (IODMA_BASE+0x006))
#define rDMACON1_H (*(volatile unsigned int *) (IODMA_BASE+0x024))
#define rDMACON1_L (*(volatile unsigned int *) (IODMA_BASE+0x026))
#define rDMACON2_H (*(volatile unsigned int *) (IODMA_BASE+0x044))
#define rDMACON2_L (*(volatile unsigned int *) (IODMA_BASE+0x046))
#define rDMACON3_H (*(volatile unsigned int *) (IODMA_BASE+0x064))
#define rDMACON3_L (*(volatile unsigned int *) (IODMA_BASE+0x066))
#define rDMACTCNT0_H (*(volatile unsigned int *) (IODMA_BASE+0x010))
#define rDMACTCNT0_L (*(volatile unsigned int *) (IODMA_BASE+0x012))
#define rDMACTCNT1_H (*(volatile unsigned int *) (IODMA_BASE+0x030))
#define rDMACTCNT1_L (*(volatile unsigned int *) (IODMA_BASE+0x032))
#define rDMACTCNT2_H (*(volatile unsigned int *) (IODMA_BASE+0x050))
#define rDMACTCNT2_L (*(volatile unsigned int *) (IODMA_BASE+0x052))
#define rDMACTCNT3_H (*(volatile unsigned int *) (IODMA_BASE+0x070))
#define rDMACTCNT3_L (*(volatile unsigned int *) (IODMA_BASE+0x072))
#define rDMACOM0_H (*(volatile unsigned int *) (IODMA_BASE+0x014))
#define rDMACOM0_L (*(volatile unsigned int *) (IODMA_BASE+0x016))
#define rDMACOM1_H (*(volatile unsigned int *) (IODMA_BASE+0x034))
#define rDMACOM1_L (*(volatile unsigned int *) (IODMA_BASE+0x036))
#define rDMACOM2_H (*(volatile unsigned int *) (IODMA_BASE+0x054))
#define rDMACOM2_L (*(volatile unsigned int *) (IODMA_BASE+0x056))
#define rDMACOM3_H (*(volatile unsigned int *) (IODMA_BASE+0x074))
#define rDMACOM3_L (*(volatile unsigned int *) (IODMA_BASE+0x076))
#define rDMANOFF0_H (*(volatile unsigned int *) (IODMA_BASE+0x018))
#define rDMANOFF0_L (*(volatile unsigned int *) (IODMA_BASE+0x01a))
#define rDMAALLST_H (*(volatile unsigned int *) (IODMA_BASE+0x100))
#define rDMAALLST_L (*(volatile unsigned int *) (IODMA_BASE+0x102))
#define rADC_BASE 0x396000
#define rADC_DATA_H (*(volatile unsigned int *) (rADC_BASE+0x0))
#define rADC_DATA_L (*(volatile unsigned int *) (rADC_BASE+0x2))
#define rADC_CMD_H (*(volatile unsigned int *) (rADC_BASE+0x4))
#define rADC_CMD_L (*(volatile unsigned int *) (rADC_BASE+0x6))
#define rADC_CTRL_H (*(volatile unsigned int *) (rADC_BASE+0x8))
#define rADC_CTRL_L (*(volatile unsigned int *) (rADC_BASE+0xA))
/*********************************************
* Data types
*********************************************/
typedef enum {
DMA_Ch0=0,
DMA_Ch1,
DMA_Ch2,
DMA_Ch3
}DMA_Channel_t;
typedef enum {
DMA_SAMPLE_HOLD=0x2,
DMA_SAMPLE_SKIP,
DMA_COMMAND_START,
DMA_COMMAND_STOP,
DMACLR_HALF_FLAG,
DMACLR_PENDING_FLAG
}DMA_Command_t;
/*********************************************
* Define
*********************************************/
#define IODMA0_Command(x) WRITE32((unsigned char *)&rDMACOM0_H,x)
#define IODMA1_Command(x) WRITE32((unsigned char *)&rDMACOM1_H,x)
#define IODMA2_Command(x) WRITE32((unsigned char *)&rDMACOM2_H,x)
#define IODMA3_Command(x) WRITE32((unsigned char *)&rDMACOM3_H,x)
#define DMA_Disable_Int(n) rDMA_IRQ_MASK &= (~((unsigned long)1<<(n)))
#define DMA_Enable_Int(n) rDMA_IRQ_MASK |= ((unsigned long)1<<(n))
/*********************************************
* Functions Define
*********************************************/
//extern void DMA_Disable_Int(unsigned long x);
//extern void DMA_Enable_Int(unsigned long x);
/* IODMA register values */
#define DSIZE_BYTE 0x0
#define DSIZE_HWORD 0x1
#define DSIZE_WORD 0x2
#define DSIZE_RESERVED 0x3
#define BLEN_BL1 0x0
#define BLEN_BL2 0x1
#define BLEN_BL3 0x2
#define BLEN_BL4 0x3
#define BLEN_BL5 0x4
#define RELOAD_ON 0x1
#define RELOAD_OFF 0x0
#define HCOMINT_ON 0x1
#define HCOMINT_OFF 0x0
#define WCOMINT_ON 0x1
#define WCOMINT_OFF 0x0
/* PWM register values */
#define OS_X_32X 0x0
#define OS_X_64X 0x1
#define OS_X_128X 0x2
#define DEEMP_OFF 0x0
#define DEEMP_32K 0x1
#define DEEMP_44K 0x2
#define DEEMP_48K 0x3
#define DF_24BIT 0x0
#define DF_32BIT 0x1
#define DF_16BIT 0x2
#define DF_8BIT 0x3
#define STMO_STEREO 0x0
#define STMO_MONO 0x1
#define FS_SET_512 0x0
#define FS_SET_1024 0x1
#define FS_SET_2048 0x2
#define FS_SET_4096 0x3
#define FS_SET_8192 0x4
#define IODMA_COUNT 0x480/*0x900*/
void _first_start_audio(ULONG count);
void Init_IODMA(void);
void RunVCD_IODMA(void);
VOID IODMA_Restart ( VOID );
void DeInit_IODMA( void );
void IODMA_Resume( void );
void IODMA_Isr( signed long tmp );
void CallBack_PCMReadBufferAvail(void);
void RunCDDA_IODMA(void);
void IODMA_Stop(void);
#if 0
void CDDA_IO_DMA_start(void);
#endif
void CDDA_first_start(void);
void CDDA_Pause(void);
void CDDA_Resume(void);
#if _SUPPORT_DMA_COPY_
void DMA_COPY(ULONG sys_dst, ULONG sys_src ,ULONG word_cnt);
#endif
#ifdef __cplusplus
}
#endif
#endif /* _IODMA_API_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -