mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
add to support 48/32kHz switching.
add several Get functions git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@144 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
e75aed13fd
commit
31c569252d
@ -78,23 +78,23 @@ void CDC_Init( void )
|
||||
#ifdef MEASUREMENT_BY_TICK
|
||||
tick_cdcInit_tail =OS_GetTick();
|
||||
|
||||
OS_TPrintf("cdcInit = %llu, %6d\n", tick_cdcInit_head,
|
||||
OS_TPrintf("CDC_Init = %llu, %6d\n", tick_cdcInit_head,
|
||||
OS_TICK_TO_USEC(tick_cdcInit_head));
|
||||
OS_TPrintf("cdcPowerUpPLL = %llu, %6d\n", tick_cdcPowerUpPLL_head,
|
||||
OS_TPrintf("CDC_PowerUpPLL = %llu, %6d\n", tick_cdcPowerUpPLL_head,
|
||||
OS_TICK_TO_USEC(tick_cdcPowerUpPLL_head));
|
||||
OS_TPrintf("cdcInitSound = %llu, %6d\n", tick_cdcInitSound_head,
|
||||
OS_TPrintf("CDC_InitSound = %llu, %6d\n", tick_cdcInitSound_head,
|
||||
OS_TICK_TO_USEC(tick_cdcInitSound_head));
|
||||
OS_TPrintf("cdcPowerUpDAC = %llu, %6d\n", tick_cdcPowerUpDAC_head,
|
||||
OS_TPrintf("CDC_PowerUpDAC = %llu, %6d\n", tick_cdcPowerUpDAC_head,
|
||||
OS_TICK_TO_USEC(tick_cdcPowerUpDAC_head));
|
||||
OS_TPrintf("cdcSetupDAC = %llu, %6d\n", tick_cdcSetupDAC_head,
|
||||
OS_TPrintf("CDC_SetupDAC = %llu, %6d\n", tick_cdcSetupDAC_head,
|
||||
OS_TICK_TO_USEC(tick_cdcSetupDAC_head));
|
||||
OS_TPrintf("cdcEnableHeadphoneDriver = %llu, %6d\n", tick_cdcEnableHeadphoneDriver_head,
|
||||
OS_TPrintf("CDC_EnableHeadphoneDriver = %llu, %6d\n", tick_cdcEnableHeadphoneDriver_head,
|
||||
OS_TICK_TO_USEC(tick_cdcEnableHeadphoneDriver_head));
|
||||
OS_TPrintf("cdcEnableSpeakerDriver = %llu, %6d\n", tick_cdcEnableSpeakerDriver_head,
|
||||
OS_TPrintf("CDC_EnableSpeakerDriver = %llu, %6d\n", tick_cdcEnableSpeakerDriver_head,
|
||||
OS_TICK_TO_USEC(tick_cdcEnableSpeakerDriver_head));
|
||||
OS_TPrintf("cdcUnmuteDAC = %llu, %6d\n", tick_cdcUnmuteDAC_head,
|
||||
OS_TPrintf("CDC_UnmuteDAC = %llu, %6d\n", tick_cdcUnmuteDAC_head,
|
||||
OS_TICK_TO_USEC(tick_cdcUnmuteDAC_head));
|
||||
OS_TPrintf("cdcInit tail = %llu, %6d\n", tick_cdcInit_tail,
|
||||
OS_TPrintf("CDC_Init tail = %llu, %6d\n", tick_cdcInit_tail,
|
||||
OS_TICK_TO_USEC(tick_cdcInit_tail));
|
||||
#endif
|
||||
}
|
||||
@ -396,15 +396,12 @@ void CDC_GetInputPinControl( BOOL *enable_vcnt5, BOOL *enable_sphp, BOOL *enable
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void CDCi_PowerUpPLL( void )
|
||||
{
|
||||
// IOP からの MCLK を check / enable
|
||||
|
||||
// page 0, reg 5 ‚Å P=2,R=1,PLL on <20>Ý’è
|
||||
CDC_ChangePage( 0 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR,
|
||||
CDC0_PLL_P_R_PWR | (2 << CDC0_PLL_P_R_DIV_SHIFT) |
|
||||
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR,
|
||||
CDC0_PLL_P_R_PWR |
|
||||
(2 << CDC0_PLL_P_R_DIV_SHIFT) |
|
||||
(1 << CDC0_PLL_P_R_MUL_SHIFT) );
|
||||
// ADC / DAC のパワーアップ時が問題?
|
||||
// dly_tsk( 15 );
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
@ -421,11 +418,35 @@ static void CDCi_PowerDownPLL( void )
|
||||
// page 0, reg 5 ‚Å PLL off <20>Ý’è
|
||||
CDC_ChangePage( 0 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR, 0 );
|
||||
// dly_tsk( 15 );
|
||||
|
||||
// IOP からの MCLK を check / disable
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: CDC_SetParamPLL
|
||||
|
||||
Description: setup PLL parameter of the CODEC
|
||||
|
||||
Arguments: is48kHz : set 48 kHz if TRUE. set 32kHz if FALSE.
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
// パラメータをいきなり変更しても問題ないか要確認
|
||||
// Codec Off状態で変更すべき?
|
||||
|
||||
void CDC_SetParamPLL( BOOL is48kHz )
|
||||
{
|
||||
if (is48kHz)
|
||||
{
|
||||
CDC_WriteI2cRegister( REG_CDC0_PLL_J_ADDR, 15 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_NDAC_DIV_ADDR, CDC0_NDAC_DIV_PWR | 5 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_NADC_DIV_ADDR, CDC0_NADC_DIV_PWR | 5 );
|
||||
}
|
||||
else
|
||||
{
|
||||
CDC_WriteI2cRegister( REG_CDC0_PLL_J_ADDR, 21 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_NDAC_DIV_ADDR, CDC0_NDAC_DIV_PWR | 7 );
|
||||
CDC_WriteI2cRegister( REG_CDC0_NADC_DIV_ADDR, CDC0_NADC_DIV_PWR | 7 );
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: CDC_PowerUpDAC
|
||||
|
||||
|
||||
@ -41,23 +41,24 @@ static void SNDi_I2SInit(void)
|
||||
if (isInitialized == FALSE)
|
||||
{
|
||||
isInitialized = TRUE;
|
||||
|
||||
reg_SND_POWCNT |= REG_SND_POWCNT_SPE_MASK;
|
||||
reg_CFG_TWL_EX |= REG_CFG_TWL_EX_I2S_MASK;
|
||||
if (reg_CFG_TWL_EX & REG_CFG_TWL_EX_I2S_MASK)
|
||||
{
|
||||
isTwl = TRUE;
|
||||
// 32KHz
|
||||
// reg_SND_I2SCNT |= REG_SND_I2SCNT_MIX_RATIO_MASK;
|
||||
// reg_SND_I2SCNT &= ~(REG_SND_I2SCNT_MUTE_MASK | REG_SND_I2SCNT_CODEC_SMP_MASK);
|
||||
// 48KHz
|
||||
reg_SND_I2SCNT |= REG_SND_I2SCNT_MIX_RATIO_MASK | REG_SND_I2SCNT_CODEC_SMP_MASK;
|
||||
reg_SND_I2SCNT &= ~(REG_SND_I2SCNT_MUTE_MASK);
|
||||
}
|
||||
|
||||
if ((reg_CFG_CLK & REG_CFG_CLK_SND_MASK) == 0)
|
||||
{
|
||||
// initialize codec with enabling I2S
|
||||
CDC_Init();
|
||||
}
|
||||
|
||||
reg_CFG_TWL_EX |= REG_CFG_TWL_EX_I2S_MASK;
|
||||
if (reg_CFG_TWL_EX & REG_CFG_TWL_EX_I2S_MASK)
|
||||
{
|
||||
isTwl = TRUE;
|
||||
// Set default values
|
||||
SND_I2SSetSamplingRatio(TRUE);
|
||||
SND_I2SSetMixingRatio(8);
|
||||
SND_I2SMute(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -172,6 +173,20 @@ void SND_I2SMute(BOOL isMute)
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SND_I2SIsMute
|
||||
|
||||
Description: Get mute status
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: TRUE if mute
|
||||
*---------------------------------------------------------------------------*/
|
||||
BOOL SND_I2SIsMute(void)
|
||||
{
|
||||
return (BOOL)((reg_SND_I2SCNT & REG_SND_I2SCNT_MUTE_MASK) >> REG_SND_I2SCNT_MUTE_SHIFT);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SND_I2SSetMixingRatio
|
||||
|
||||
@ -190,25 +205,42 @@ void SND_I2SSetMixingRatio(int nitroRatio)
|
||||
if (nitroRatio >= 0 && nitroRatio <= 8)
|
||||
{
|
||||
reg_SND_I2SCNT &= ~REG_SND_I2SCNT_MIX_RATIO_MASK;
|
||||
reg_SND_I2SCNT = (u8)((reg_SND_I2SCNT & ~REG_SND_I2SCNT_MIX_RATIO_MASK) | nitroRatio);
|
||||
reg_SND_I2SCNT = (u8)((reg_SND_I2SCNT & ~REG_SND_I2SCNT_MIX_RATIO_MASK) | (nitroRatio << REG_SND_I2SCNT_MIX_RATIO_SHIFT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SND_I2SGetMixingRatio
|
||||
|
||||
Description: Set mixing ratio
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: NITRO : DSP ratio. (0-8)
|
||||
if 8, nitro sound is all.
|
||||
if 0, DSP sound is all.
|
||||
*---------------------------------------------------------------------------*/
|
||||
int SND_I2SGetMixingRatio(void)
|
||||
{
|
||||
return (reg_SND_I2SCNT & REG_SND_I2SCNT_MIX_RATIO_MASK) >> REG_SND_I2SCNT_MIX_RATIO_SHIFT;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SND_I2SSetSamplingRatio
|
||||
|
||||
Description: Set I2S sampling ratio
|
||||
Description: Set I2S sampling ratio.
|
||||
It can be called while I2S is disabled.
|
||||
|
||||
Arguments: is47kHz : set 48 kHz if TRUE. set 32kHz if FALSE.
|
||||
Arguments: is48kHz : set 48 kHz if TRUE. set 32kHz if FALSE.
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void SND_I2SSetSamplingRatio(BOOL is47kHz)
|
||||
void SND_I2SSetSamplingRatio(BOOL is48kHz)
|
||||
{
|
||||
if (isTwl)
|
||||
{
|
||||
if (is47kHz)
|
||||
if (is48kHz)
|
||||
{
|
||||
reg_SND_I2SCNT |= REG_SND_I2SCNT_CODEC_SMP_MASK;
|
||||
}
|
||||
@ -216,7 +248,22 @@ void SND_I2SSetSamplingRatio(BOOL is47kHz)
|
||||
{
|
||||
reg_SND_I2SCNT &= ~REG_SND_I2SCNT_CODEC_SMP_MASK;
|
||||
}
|
||||
CDC_SetParamPLL(is48kHz);
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SND_I2SIsSamplingRatio48kHz
|
||||
|
||||
Description: Get I2S sampling ratio.
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: TRUE if 48 kHz. otherwise FALSE
|
||||
*---------------------------------------------------------------------------*/
|
||||
BOOL SND_I2SIsSamplingRatio48kHz(void)
|
||||
{
|
||||
return (BOOL)((reg_SND_I2SCNT & REG_SND_I2SCNT_CODEC_SMP_MASK) >> REG_SND_I2SCNT_CODEC_SMP_SHIFT);
|
||||
}
|
||||
|
||||
/*====== End of snd_i2s.c ======*/
|
||||
|
||||
@ -15,6 +15,8 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl_sp.h>
|
||||
#include <twl/cdc.h> // for DS mode
|
||||
#include <twl/snd/ARM7/i2s.h>
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
’è<EFBFBD>”’è‹`
|
||||
@ -29,7 +31,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
static OSHeapHandle InitializeAllocateSystem(void);
|
||||
static void VBlankIntr(void);
|
||||
#include <twl/cdc.h> // for DS-mode
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: TwlSpMain
|
||||
|
||||
@ -59,9 +61,9 @@ void TwlSpMain(void)
|
||||
#if 0
|
||||
// DS mode
|
||||
SND_Disable();
|
||||
reg_SND_I2SCNT &= ~REG_SND_I2SCNT_CODEC_SMP_MASK; // 32kHz
|
||||
SND_Enable();
|
||||
SND_I2SSetSamplingRatio(FALSE); // 32kHz
|
||||
CDC_GoDsMode();
|
||||
SND_Enable();
|
||||
#endif
|
||||
|
||||
// reg_CFG_DS_MDFY |= REG_CFG_DS_MDFY_SND_MASK; // SOUND‰ñ˜HƒoƒO<C692>C<EFBFBD>³ (default: off)
|
||||
|
||||
@ -152,26 +152,15 @@ void CDC_SetInputPinControl( BOOL enable_vcnt5, BOOL enable_sphp, BOOL enable
|
||||
void CDC_GetInputPinControl( BOOL *enable_vcnt5, BOOL *enable_sphp, BOOL *enable_pmoff );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_cdcPowerUpPLL
|
||||
Name: CDC_SetParamPLL
|
||||
|
||||
Description: power up Internal PLL of the CODEC
|
||||
Description: setup PLL parameter of the CODEC
|
||||
|
||||
Arguments: None
|
||||
Arguments: is48kHz : set 48 kHz if TRUE. set 32kHz if FALSE.
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void i_cdcPowerUpPLL( void );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_cdcPowerDownPLL
|
||||
|
||||
Description: power down Internal PLL of the CODEC
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void i_cdcPowerDownPLL( void );
|
||||
void CDC_SetParamPLL( BOOL is48kHz );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: CDC_PowerUpDAC
|
||||
|
||||
@ -45,9 +45,13 @@ void SND_I2SBeginSleep(void);
|
||||
void SND_I2SEndSleep(void);
|
||||
|
||||
void SND_I2SMute(BOOL isMute);
|
||||
BOOL SND_I2SIsMute(void);
|
||||
|
||||
void SND_I2SSetMixingRatio(int nitroRatio);
|
||||
void SND_I2SSetSamplingRatio(BOOL is47kHz);
|
||||
int SND_I2SGetMixingRatio(void);
|
||||
|
||||
void SND_I2SSetSamplingRatio(BOOL is48kHz);
|
||||
BOOL SND_I2SIsSamplingRatio48kHz( void );
|
||||
|
||||
#endif /* SDK_ARM7 */
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user