mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
Better sound quality on the iAudio X5 using the correct MCLK frequency
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9354 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
8bdd92b05e
commit
e62152ddf9
4 changed files with 10 additions and 10 deletions
|
|
@ -81,7 +81,7 @@ void tlv320_init(void)
|
||||||
tlv320_write_reg(REG_DAIF, DAIF_IWL_16|DAIF_FOR_I2S);
|
tlv320_write_reg(REG_DAIF, DAIF_IWL_16|DAIF_FOR_I2S);
|
||||||
tlv320_set_headphone_vol(0, 0);
|
tlv320_set_headphone_vol(0, 0);
|
||||||
tlv320_write_reg(REG_DIA, DIA_ACT);
|
tlv320_write_reg(REG_DIA, DIA_ACT);
|
||||||
tlv320_write_reg(REG_SRC, SRC_CLKIN);
|
tlv320_write_reg(REG_SRC, (8 << 2)); /* 44.1kHz */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -118,20 +118,20 @@ void pcm_set_frequency(unsigned int frequency)
|
||||||
switch(frequency)
|
switch(frequency)
|
||||||
{
|
{
|
||||||
case 11025:
|
case 11025:
|
||||||
pcm_freq = 0x4;
|
pcm_freq = 0x2;
|
||||||
#ifdef HAVE_UDA1380
|
#ifdef HAVE_UDA1380
|
||||||
uda1380_set_nsorder(3);
|
uda1380_set_nsorder(3);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 22050:
|
case 22050:
|
||||||
pcm_freq = 0x6;
|
pcm_freq = 0x4;
|
||||||
#ifdef HAVE_UDA1380
|
#ifdef HAVE_UDA1380
|
||||||
uda1380_set_nsorder(3);
|
uda1380_set_nsorder(3);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 44100:
|
case 44100:
|
||||||
default:
|
default:
|
||||||
pcm_freq = 0xC;
|
pcm_freq = 0x6;
|
||||||
#ifdef HAVE_UDA1380
|
#ifdef HAVE_UDA1380
|
||||||
uda1380_set_nsorder(5);
|
uda1380_set_nsorder(5);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -600,7 +600,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
||||||
PLLCR = 0x11856005;
|
PLLCR = 0x11c56005;
|
||||||
CSCR0 = 0x00001180; /* Flash: 4 wait states */
|
CSCR0 = 0x00001180; /* Flash: 4 wait states */
|
||||||
CSCR1 = 0x00000980; /* LCD: 2 wait states */
|
CSCR1 = 0x00000980; /* LCD: 2 wait states */
|
||||||
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
||||||
|
|
@ -617,7 +617,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
||||||
PLLCR = 0x1385e005;
|
PLLCR = 0x13c5e005;
|
||||||
CSCR0 = 0x00000580; /* Flash: 1 wait state */
|
CSCR0 = 0x00000580; /* Flash: 1 wait state */
|
||||||
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
||||||
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
||||||
|
|
@ -633,7 +633,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
|
||||||
PLLCR = 0x10800200; /* Power down PLL, but keep CLSEL and CRSEL */
|
PLLCR = 0x10c00200; /* Power down PLL, but keep CLSEL and CRSEL */
|
||||||
CSCR0 = 0x00000180; /* Flash: 0 wait states */
|
CSCR0 = 0x00000180; /* Flash: 0 wait states */
|
||||||
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
||||||
DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
|
DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
||||||
PLLCR = 0x13042045;
|
PLLCR = 0x13442045;
|
||||||
CSCR0 = 0x00001180; /* Flash: 4 wait states */
|
CSCR0 = 0x00001180; /* Flash: 4 wait states */
|
||||||
CSCR1 = 0x00000980; /* LCD: 2 wait states */
|
CSCR1 = 0x00000980; /* LCD: 2 wait states */
|
||||||
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
||||||
|
|
@ -54,7 +54,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, false);
|
||||||
PLLCR = 0x16030045;
|
PLLCR = 0x16430045;
|
||||||
CSCR0 = 0x00000580; /* Flash: 1 wait state */
|
CSCR0 = 0x00000580; /* Flash: 1 wait state */
|
||||||
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
||||||
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
while(!(PLLCR & 0x80000000)) {}; /* Wait until the PLL has locked.
|
||||||
|
|
@ -70,7 +70,7 @@ void set_cpu_frequency(long frequency)
|
||||||
/* Refresh timer for bypass frequency */
|
/* Refresh timer for bypass frequency */
|
||||||
PLLCR &= ~1; /* Bypass mode */
|
PLLCR &= ~1; /* Bypass mode */
|
||||||
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
|
timers_adjust_prescale(CPUFREQ_DEFAULT_MULT, true);
|
||||||
PLLCR = 0x10800200; /* Power down PLL, but keep CLSEL and CRSEL */
|
PLLCR = 0x10400200; /* Power down PLL, but keep CLSEL and CRSEL */
|
||||||
CSCR0 = 0x00000180; /* Flash: 0 wait states */
|
CSCR0 = 0x00000180; /* Flash: 0 wait states */
|
||||||
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
CSCR1 = 0x00000180; /* LCD: 0 wait states */
|
||||||
DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
|
DCR = (0x8000 | DEFAULT_REFRESH_TIMER); /* Refresh timer */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue