📄 ak4356.c
字号:
/******************************************************************************
* File name : AK4356.c *
* Start date : 2002.12.24 *
* By : Lee Kyung Tae *
* Contact : kyungtae.lee@samsung.com *
* Description : Audio DAC control Low Level API *
* $Log:$ *
******************************************************************************
*/
#ifndef _AK4356_C_
#define _AK4356_C_
/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I N C L U D E S
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
#include "AK4356.h"
/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
F U N C T I O N D E F I N E S
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
/******************************************************************************
* Function name : AK43xx_Control
* Arguments :
* IN audio DAC type, register address, data
* OUT
* INOUT
* Return : VOID
* By : Lee Kyung Tae
* Description : AK43xx series audio dac control function.
*
* Revisions :
******************************************************************************
*/
VOID AK43xx_Control( ADAC_Device_t adac, AK43xx_Register_t reg_addr, UINT data )
{
ADAC_CDTI_t cdti;
UINT i, reg1, reg2, reg3, bit;
S5H_ReadReg( ®1, rPCON4 );
S5H_ReadReg( ®2, rPDAT4 );
S5H_WriteReg( rPCON4, 0x5155 ); /* P4.0-P4.7 Output mode(P4.5-Input) */
S5H_WriteReg( rPDAT4, 0xff ); /* Output High */
if( adac == ADAC_AK4356 )
cdti.syntax.cad = 0; /* Chip address cad0, cad1 */
else
cdti.syntax.cad = 1; /* AK4382A fixed to "01" */
cdti.syntax.mode = 1; /* Fixed to "1", Write mode only */
cdti.syntax.addr = reg_addr; /* register address */
cdti.syntax.data = data; /* data */
ADAC_AK43xx_Enable( adac );
ADAC_CDTI_SetupTime( 10 );
for( i = 0; i < 16; i++ )
{
ADAC_SCLK_Low();
S5H_ReadReg( ®3, rPDAT4 );
bit = ( reg3 & ~(1 << ADAC_SDAT) ) |
( (cdti.data & 0x8000) >> (15 - ADAC_SDAT) );
S5H_WriteReg( rPDAT4, bit );
ADAC_CDTI_SetupTime( 10 );
ADAC_SCLK_High();
ADAC_CDTI_HoldTime( 10 );
cdti.data <<= 1;
}
ADAC_AK43xx_Disable( adac );
S5H_WriteReg( rPCON4, reg1 );
S5H_WriteReg( rPDAT4, reg2 );
}
/******************************************************************************
* Function name : ADAC_Init
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Chongkun Lee
* Description : DAC initialize function
* Revisions :
******************************************************************************
*/
VOID ADAC_Init( VOID )
{
}
/******************************************************************************
* Function name : ADAC_Mute
* Arguments :
* IN
* OUT
* INOUT
* Return : VOID
* By : Chongkun Lee
* Description : DAC mute function
* Revisions :
******************************************************************************
*/
VOID ADAC_Mute( BOOL mute )
{
if( mode )
{
AK43xx_Control( ADAC_AK4356, AK4356_CTRL2, AK4356_SMUTE_ON );
AK43xx_Control( ADAC_AK4382_DM, AK4382_CTRL2, AK4382_SMUTE_ON );
AK43xx_Control( ADAC_AK4382_AUG, AK4382_CTRL2, AK4382_SMUTE_ON );
}
else
{
AK43xx_Control( ADAC_AK4356, AK4356_CTRL2, AK4356_SMUTE_OFF );
AK43xx_Control( ADAC_AK4382_DM, AK4382_CTRL2, AK4382_SMUTE_OFF );
AK43xx_Control( ADAC_AK4382_AUG, AK4382_CTRL2, AK4382_SMUTE_OFF );
}
}
VOID ADAC_Deemphasis( BOOL onoff, UINT fs )
{
}
VOID ADAC_Volume( UCHAR vol )
{
}
#endif //_AK4356_C_
/* end of AK4356.c */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -