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

📄 ak4356.c

📁 SAMSUNG 5009的源代码
💻 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( &reg1, rPCON4 );
	S5H_ReadReg( &reg2, 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( &reg3, 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 + -