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
|
#ifdef MEASUREMENT_BY_TICK
|
||||||
tick_cdcInit_tail =OS_GetTick();
|
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_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_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_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_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_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_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_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_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));
|
OS_TICK_TO_USEC(tick_cdcInit_tail));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -396,15 +396,12 @@ void CDC_GetInputPinControl( BOOL *enable_vcnt5, BOOL *enable_sphp, BOOL *enable
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void CDCi_PowerUpPLL( void )
|
static void CDCi_PowerUpPLL( void )
|
||||||
{
|
{
|
||||||
// IOP からの MCLK を check / enable
|
|
||||||
|
|
||||||
// page 0, reg 5 ‚Å P=2,R=1,PLL on <20>Ý’è
|
// page 0, reg 5 ‚Å P=2,R=1,PLL on <20>Ý’è
|
||||||
CDC_ChangePage( 0 );
|
CDC_ChangePage( 0 );
|
||||||
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR,
|
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR,
|
||||||
CDC0_PLL_P_R_PWR | (2 << CDC0_PLL_P_R_DIV_SHIFT) |
|
CDC0_PLL_P_R_PWR |
|
||||||
|
(2 << CDC0_PLL_P_R_DIV_SHIFT) |
|
||||||
(1 << CDC0_PLL_P_R_MUL_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>Ý’è
|
// page 0, reg 5 ‚Å PLL off <20>Ý’è
|
||||||
CDC_ChangePage( 0 );
|
CDC_ChangePage( 0 );
|
||||||
CDC_WriteI2cRegister( REG_CDC0_PLL_P_R_ADDR, 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
|
Name: CDC_PowerUpDAC
|
||||||
|
|
||||||
|
|||||||
@ -41,23 +41,24 @@ static void SNDi_I2SInit(void)
|
|||||||
if (isInitialized == FALSE)
|
if (isInitialized == FALSE)
|
||||||
{
|
{
|
||||||
isInitialized = TRUE;
|
isInitialized = TRUE;
|
||||||
|
|
||||||
reg_SND_POWCNT |= REG_SND_POWCNT_SPE_MASK;
|
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)
|
if ((reg_CFG_CLK & REG_CFG_CLK_SND_MASK) == 0)
|
||||||
{
|
{
|
||||||
// initialize codec with enabling I2S
|
// initialize codec with enabling I2S
|
||||||
CDC_Init();
|
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
|
Name: SND_I2SSetMixingRatio
|
||||||
|
|
||||||
@ -190,25 +205,42 @@ void SND_I2SSetMixingRatio(int nitroRatio)
|
|||||||
if (nitroRatio >= 0 && nitroRatio <= 8)
|
if (nitroRatio >= 0 && nitroRatio <= 8)
|
||||||
{
|
{
|
||||||
reg_SND_I2SCNT &= ~REG_SND_I2SCNT_MIX_RATIO_MASK;
|
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
|
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
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void SND_I2SSetSamplingRatio(BOOL is47kHz)
|
void SND_I2SSetSamplingRatio(BOOL is48kHz)
|
||||||
{
|
{
|
||||||
if (isTwl)
|
if (isTwl)
|
||||||
{
|
{
|
||||||
if (is47kHz)
|
if (is48kHz)
|
||||||
{
|
{
|
||||||
reg_SND_I2SCNT |= REG_SND_I2SCNT_CODEC_SMP_MASK;
|
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;
|
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 ======*/
|
/*====== End of snd_i2s.c ======*/
|
||||||
|
|||||||
@ -15,6 +15,8 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <twl_sp.h>
|
#include <twl_sp.h>
|
||||||
|
#include <twl/cdc.h> // for DS mode
|
||||||
|
#include <twl/snd/ARM7/i2s.h>
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
’è<EFBFBD>”’è‹`
|
’è<EFBFBD>”’è‹`
|
||||||
@ -29,7 +31,7 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static OSHeapHandle InitializeAllocateSystem(void);
|
static OSHeapHandle InitializeAllocateSystem(void);
|
||||||
static void VBlankIntr(void);
|
static void VBlankIntr(void);
|
||||||
#include <twl/cdc.h> // for DS-mode
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: TwlSpMain
|
Name: TwlSpMain
|
||||||
|
|
||||||
@ -59,9 +61,9 @@ void TwlSpMain(void)
|
|||||||
#if 0
|
#if 0
|
||||||
// DS mode
|
// DS mode
|
||||||
SND_Disable();
|
SND_Disable();
|
||||||
reg_SND_I2SCNT &= ~REG_SND_I2SCNT_CODEC_SMP_MASK; // 32kHz
|
SND_I2SSetSamplingRatio(FALSE); // 32kHz
|
||||||
SND_Enable();
|
|
||||||
CDC_GoDsMode();
|
CDC_GoDsMode();
|
||||||
|
SND_Enable();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// reg_CFG_DS_MDFY |= REG_CFG_DS_MDFY_SND_MASK; // SOUND‰ñ˜HƒoƒO<C692>C<EFBFBD>³ (default: off)
|
// 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 );
|
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
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void i_cdcPowerUpPLL( void );
|
void CDC_SetParamPLL( BOOL is48kHz );
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: i_cdcPowerDownPLL
|
|
||||||
|
|
||||||
Description: power down Internal PLL of the CODEC
|
|
||||||
|
|
||||||
Arguments: None
|
|
||||||
|
|
||||||
Returns: None
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
void i_cdcPowerDownPLL( void );
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: CDC_PowerUpDAC
|
Name: CDC_PowerUpDAC
|
||||||
|
|||||||
@ -45,9 +45,13 @@ void SND_I2SBeginSleep(void);
|
|||||||
void SND_I2SEndSleep(void);
|
void SND_I2SEndSleep(void);
|
||||||
|
|
||||||
void SND_I2SMute(BOOL isMute);
|
void SND_I2SMute(BOOL isMute);
|
||||||
|
BOOL SND_I2SIsMute(void);
|
||||||
|
|
||||||
void SND_I2SSetMixingRatio(int nitroRatio);
|
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 */
|
#endif /* SDK_ARM7 */
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user