1
0
Fork 0
forked from len0rd/rockbox

Gigabeat S samplerate control: Fix really dumb mistake made when doing cleanup. Add some more correctness.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19180 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2008-11-22 14:39:42 +00:00
parent 5dec3b34aa
commit 5dfde5c80b

View file

@ -361,9 +361,9 @@ void audiohw_set_frequency(int sampling_control)
static const struct static const struct
{ {
uint32_t plln : 8; uint32_t plln : 8;
uint32_t pllk0 : 6; uint32_t pllk1 : 6;
uint32_t pllk1 : 9;
uint32_t pllk2 : 9; uint32_t pllk2 : 9;
uint32_t pllk3 : 9;
unsigned char mclkdiv; unsigned char mclkdiv;
unsigned char filter; unsigned char filter;
} sctrl_table[HW_NUM_FREQ] = } sctrl_table[HW_NUM_FREQ] =
@ -371,9 +371,9 @@ void audiohw_set_frequency(int sampling_control)
[HW_FREQ_8] = /* PLL = 65.536MHz */ [HW_FREQ_8] = /* PLL = 65.536MHz */
{ {
.plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(12414886 >> 18), .pllk1 = WMC_PLLK_23_18w(12414886ul >> 18),
.pllk1 = WMC_PLLK_17_9w(12414886 >> 9), .pllk2 = WMC_PLLK_17_9w(12414886ul >> 9),
.pllk2 = WMC_PLLK_8_0w(12414886 >> 0), .pllk3 = WMC_PLLK_8_0w(12414886ul >> 0),
.mclkdiv = WMC_MCLKDIV_8, /* 2.0480 MHz */ .mclkdiv = WMC_MCLKDIV_8, /* 2.0480 MHz */
.filter = WMC_SR_8KHZ, .filter = WMC_SR_8KHZ,
}, },
@ -385,18 +385,18 @@ void audiohw_set_frequency(int sampling_control)
[HW_FREQ_12] = /* PLL = 73.728 MHz */ [HW_FREQ_12] = /* PLL = 73.728 MHz */
{ {
.plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(11869595 >> 18), .pllk1 = WMC_PLLK_23_18w(11869595ul >> 18),
.pllk1 = WMC_PLLK_17_9w(11869595 >> 9), .pllk2 = WMC_PLLK_17_9w(11869595ul >> 9),
.pllk2 = WMC_PLLK_8_0w(11869595 >> 0), .pllk3 = WMC_PLLK_8_0w(11869595ul >> 0),
.mclkdiv = WMC_MCLKDIV_6, /* 3.0720 MHz */ .mclkdiv = WMC_MCLKDIV_6, /* 3.0720 MHz */
.filter = WMC_SR_12KHZ, .filter = WMC_SR_12KHZ,
}, },
[HW_FREQ_16] = /* PLL = 65.536MHz */ [HW_FREQ_16] = /* PLL = 65.536MHz */
{ {
.plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(12414886 >> 18), .pllk1 = WMC_PLLK_23_18w(12414886ul >> 18),
.pllk1 = WMC_PLLK_17_9w(12414886 >> 9), .pllk2 = WMC_PLLK_17_9w(12414886ul >> 9),
.pllk2 = WMC_PLLK_8_0w(12414886 >> 0), .pllk3 = WMC_PLLK_8_0w(12414886ul >> 0),
.mclkdiv = WMC_MCLKDIV_4, /* 4.0960 MHz */ .mclkdiv = WMC_MCLKDIV_4, /* 4.0960 MHz */
.filter = WMC_SR_16KHZ, .filter = WMC_SR_16KHZ,
}, },
@ -408,18 +408,18 @@ void audiohw_set_frequency(int sampling_control)
[HW_FREQ_24] = /* PLL = 73.728 MHz */ [HW_FREQ_24] = /* PLL = 73.728 MHz */
{ {
.plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(11869595 >> 18), .pllk1 = WMC_PLLK_23_18w(11869595ul >> 18),
.pllk1 = WMC_PLLK_17_9w(11869595 >> 9), .pllk2 = WMC_PLLK_17_9w(11869595ul >> 9),
.pllk2 = WMC_PLLK_8_0w(11869595 >> 0), .pllk3 = WMC_PLLK_8_0w(11869595ul >> 0),
.mclkdiv = WMC_MCLKDIV_3, /* 6.1440 MHz */ .mclkdiv = WMC_MCLKDIV_3, /* 6.1440 MHz */
.filter = WMC_SR_24KHZ, .filter = WMC_SR_24KHZ,
}, },
[HW_FREQ_32] = /* PLL = 65.536MHz */ [HW_FREQ_32] = /* PLL = 65.536MHz */
{ {
.plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(7) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(12414886 >> 18), .pllk1 = WMC_PLLK_23_18w(12414886ul >> 18),
.pllk1 = WMC_PLLK_17_9w(12414886 >> 9), .pllk2 = WMC_PLLK_17_9w(12414886ul >> 9),
.pllk2 = WMC_PLLK_8_0w(12414886 >> 0), .pllk3 = WMC_PLLK_8_0w(12414886ul >> 0),
.mclkdiv = WMC_MCLKDIV_2, /* 8.1920 MHz */ .mclkdiv = WMC_MCLKDIV_2, /* 8.1920 MHz */
.filter = WMC_SR_32KHZ, .filter = WMC_SR_32KHZ,
}, },
@ -431,9 +431,9 @@ void audiohw_set_frequency(int sampling_control)
[HW_FREQ_48] = /* PLL = 73.728 MHz */ [HW_FREQ_48] = /* PLL = 73.728 MHz */
{ {
.plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE, .plln = WMC_PLLNw(8) | WMC_PLL_PRESCALE,
.pllk0 = WMC_PLLK_23_18w(11869595 >> 18), .pllk1 = WMC_PLLK_23_18w(11869595ul >> 18),
.pllk1 = WMC_PLLK_17_9w(11869595 >> 9), .pllk2 = WMC_PLLK_17_9w(11869595ul >> 9),
.pllk2 = WMC_PLLK_8_0w(11869595 >> 0), .pllk3 = WMC_PLLK_8_0w(11869595ul >> 0),
.mclkdiv = WMC_MCLKDIV_1_5, /* 12.2880 MHz */ .mclkdiv = WMC_MCLKDIV_1_5, /* 12.2880 MHz */
.filter = WMC_SR_48KHZ, .filter = WMC_SR_48KHZ,
}, },
@ -459,9 +459,9 @@ void audiohw_set_frequency(int sampling_control)
/* Program PLL. */ /* Program PLL. */
wmc_write(WMC_PLL_N, plln); wmc_write(WMC_PLL_N, plln);
wmc_write(WMC_PLLK_23_18, sctrl_table[sampling_control].pllk0); wmc_write(WMC_PLL_K1, sctrl_table[sampling_control].pllk1);
wmc_write(WMC_PLLK_17_9, sctrl_table[sampling_control].pllk1); wmc_write(WMC_PLL_K2, sctrl_table[sampling_control].pllk2);
wmc_write(WMC_PLLK_8_0, sctrl_table[sampling_control].pllk2); wmc_write(WMC_PLL_K3, sctrl_table[sampling_control].pllk3);
/* Turn on PLL. */ /* Turn on PLL. */
wmc_set(WMC_POWER_MANAGEMENT1, WMC_PLLEN); wmc_set(WMC_POWER_MANAGEMENT1, WMC_PLLEN);