summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/wm8731.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-12-12 11:01:07 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-12-12 11:01:07 +0000
commite69d567d9ebf7d236ff9663b11ac396cc71dcd75 (patch)
tree093b9d1bc979d79be1fcd0daac1d8daf8ac55503 /firmware/drivers/audio/wm8731.c
parent0ad97d13fc52b28de566dc0ddaf7245583eec2cc (diff)
downloadrockbox-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.c39
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);
}