⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iodma_api.h

📁 三星ic 9980的源代码. 718版.
💻 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 + -