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

📄 wm8728.c

📁 SAMSUNG 5009的源代码
💻 C
字号:
/******************************************************************************
 * File name   : WM8728.c
 * Start date  : 2003.09.15
 * By          : Chongkun Lee
 * Contact     : bach1004@samsung.com
 * Description : WM8728 Audio DAC control Low Level API
 * $Log:$
 ******************************************************************************
 */
#ifndef	_WM8728_C_
#define	_WM8728_C_


/******************************************************
 *       INCLUDES
 *****************************************************/
#include 	"WM8728.h"

 
/******************************************************************************
 *  Function name : WM8728_Control
 *  Arguments     :
 *       IN         register address, data
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : PCM1742 series audio dac control function.
 *
 *  Revisions     :
 ******************************************************************************
 */
VOID WM8728_Control(UCHAR idx,USHORT data) //Gaoping test 0712
{
	UCHAR 				count;
	SysInterruptLevel_t oldlevel;
	UINT				datal;

	datal = (UINT) data;

	//SysPrintf("\n PCM1742 Start[%x][%x]\n", idx, data);	
  
	/* Interrupt disable temporary */
	SysControlInterrupt( INTERRUPT_DISABLE, &oldlevel, 0 );

	WM8728_LatchHigh();

	WM8728_ClkHigh(); 
	
	WM8728_Enable();

	/* Send Register Address */
	for(count=0 ; count<7 ; count++)
	{
		WM8728_ClkLow();
		
		if(idx & 0x40)
			WM8728_DataHigh();
		else
			WM8728_DataLow();
		
		idx=idx<<1;
				
		WM8728_ClkHigh();
	}
	
	/* Send Data */
	for(count=0 ; count<9 ; count++)
	{
		WM8728_ClkLow();
				
		if(datal & 0x100)
			WM8728_DataHigh();
		else
			WM8728_DataLow();

		datal=datal<<1;

		//if( count == 8 )
		//	WM8728_Enable();
	
		WM8728_ClkHigh();	
		
		if( count == 8 ) {
			WM8728_LatchLow();	
		}
	}

	
	WM8728_ClkLow();

	WM8728_LatchHigh();

	WM8728_ClkHigh();

	//WM8728_DataHigh();
	WM8728_Disable();
	
	SysControlInterrupt( oldlevel, &oldlevel, 0 );

}

/******************************************************************************
 *  Function name : ADAC_Init
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC initialize function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Init( VOID )
{
//	rP1PUR = 1;	
	WM8728_Control(0x0, 0x1ff);
	WM8728_Control(0x1, 0x1ff);
	WM8728_Control(0x2, 0x10);
	WM8728_Control(0x3, 0x100);
}

/******************************************************************************
 *  Function name : ADAC_Mute
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC mute function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Mute( BOOL mute )
{
	char i;

	if( SH_AUD_GetAdacDeEmphasis() )
		i = 0x12;
	else
		i = 0x10;
			
	if( mute )
	{
		WM8728_Control(2, i|1);
		rPDAT3 |= (1<<1);	/*  oms 11/19 HW Mute On */
	}
	else
	{
		rPDAT3 &= ~(1<<1);	/*  oms 11/19 HW Mute Off */
		WM8728_Control(2, i);
	}
}

VOID ADAC_Deemphasis( BOOL onoff, UINT fs )
{
}

/******************************************************************************
 *  Function name : ADAC_Volume
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC volume function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Volume( UCHAR vol )
{
	UCHAR data;

	if( vol == 0 )
		data = 0;
	else
		data = (vol*2) + 195;
	
	WM8728_Control(0, 0x100|data);
	WM8728_Control(1, 0x100|data);
}
 
#endif
/* end of WM8728.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -