diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2008-12-12 11:01:07 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2008-12-12 11:01:07 +0000 |
| commit | e69d567d9ebf7d236ff9663b11ac396cc71dcd75 (patch) | |
| tree | 093b9d1bc979d79be1fcd0daac1d8daf8ac55503 /firmware/drivers/audio/wm8731.c | |
| parent | 0ad97d13fc52b28de566dc0ddaf7245583eec2cc (diff) | |
| download | rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.zip rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.tar.gz rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.tar.bz2 rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.tar.xz | |
Bring consistency to pcm implementation and samplerate handling. Less low-level duplication. A small test_sampr fix so it works on coldfire again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19400 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/audio/wm8731.c')
| -rw-r--r-- | firmware/drivers/audio/wm8731.c | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/firmware/drivers/audio/wm8731.c b/firmware/drivers/audio/wm8731.c index c065de6..2b74d71 100644 --- a/firmware/drivers/audio/wm8731.c +++ b/firmware/drivers/audio/wm8731.c @@ -224,35 +224,24 @@ void audiohw_close(void) /* 2) Remove the WM codec supplies. */ } -void audiohw_set_sample_rate(int sampling_control) +void audiohw_set_frequency(int fsel) { - int rate; - - switch(sampling_control) + /* For 24MHz MCLK */ + static const unsigned char srctrl_table[HW_NUM_FREQ] = { - case SAMPR_96: - rate = WMC_USB24_96000HZ; - break; - case SAMPR_88: - rate = WMC_USB24_88200HZ; - break; - case SAMPR_48: - rate = WMC_USB24_48000HZ; - break; - default: - case SAMPR_44: - rate = WMC_USB24_44100HZ; - break; - case SAMPR_32: - rate = WMC_USB24_32000HZ; - break; - case SAMPR_8: - rate = WMC_USB24_8000HZ; - break; - } + [HW_FREQ_8] = WMC_USB24_8000HZ, + [HW_FREQ_32] = WMC_USB24_32000HZ, + [HW_FREQ_44] = WMC_USB24_44100HZ, + [HW_FREQ_48] = WMC_USB24_48000HZ, + [HW_FREQ_88] = WMC_USB24_88200HZ, + [HW_FREQ_96] = WMC_USB24_96000HZ, + }; + + if ((unsigned)fsel >= HW_NUM_FREQ) + fsel = HW_FREQ_DEFAULT; codec_set_active(false); - wmc_write(SAMPCTRL, rate); + wmc_write(SAMPCTRL, srctrl_table[fsel]); codec_set_active(true); } |