diff options
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 c065de620a..2b74d718b0 100644 --- a/firmware/drivers/audio/wm8731.c +++ b/firmware/drivers/audio/wm8731.c | |||
@@ -224,35 +224,24 @@ void audiohw_close(void) | |||
224 | /* 2) Remove the WM codec supplies. */ | 224 | /* 2) Remove the WM codec supplies. */ |
225 | } | 225 | } |
226 | 226 | ||
227 | void audiohw_set_sample_rate(int sampling_control) | 227 | void audiohw_set_frequency(int fsel) |
228 | { | 228 | { |
229 | int rate; | 229 | /* For 24MHz MCLK */ |
230 | 230 | static const unsigned char srctrl_table[HW_NUM_FREQ] = | |
231 | switch(sampling_control) | ||
232 | { | 231 | { |
233 | case SAMPR_96: | 232 | [HW_FREQ_8] = WMC_USB24_8000HZ, |
234 | rate = WMC_USB24_96000HZ; | 233 | [HW_FREQ_32] = WMC_USB24_32000HZ, |
235 | break; | 234 | [HW_FREQ_44] = WMC_USB24_44100HZ, |
236 | case SAMPR_88: | 235 | [HW_FREQ_48] = WMC_USB24_48000HZ, |
237 | rate = WMC_USB24_88200HZ; | 236 | [HW_FREQ_88] = WMC_USB24_88200HZ, |
238 | break; | 237 | [HW_FREQ_96] = WMC_USB24_96000HZ, |
239 | case SAMPR_48: | 238 | }; |
240 | rate = WMC_USB24_48000HZ; | 239 | |
241 | break; | 240 | if ((unsigned)fsel >= HW_NUM_FREQ) |
242 | default: | 241 | fsel = HW_FREQ_DEFAULT; |
243 | case SAMPR_44: | ||
244 | rate = WMC_USB24_44100HZ; | ||
245 | break; | ||
246 | case SAMPR_32: | ||
247 | rate = WMC_USB24_32000HZ; | ||
248 | break; | ||
249 | case SAMPR_8: | ||
250 | rate = WMC_USB24_8000HZ; | ||
251 | break; | ||
252 | } | ||
253 | 242 | ||
254 | codec_set_active(false); | 243 | codec_set_active(false); |
255 | wmc_write(SAMPCTRL, rate); | 244 | wmc_write(SAMPCTRL, srctrl_table[fsel]); |
256 | codec_set_active(true); | 245 | codec_set_active(true); |
257 | } | 246 | } |
258 | 247 | ||