📄 wm8728.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 + -