diff options
Diffstat (limited to 'firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c')
-rw-r--r-- | firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c index 003872ac31..fcfe813ab7 100644 --- a/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c +++ b/firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c | |||
@@ -26,6 +26,18 @@ | |||
26 | 26 | ||
27 | static int pcm_freq = HW_SAMPR_DEFAULT; /* 44.1 is default */ | 27 | static int pcm_freq = HW_SAMPR_DEFAULT; /* 44.1 is default */ |
28 | 28 | ||
29 | #define GIGABEAT_8000HZ 0x4d | ||
30 | #define GIGABEAT_11025HZ 0x32 | ||
31 | #define GIGABEAT_12000HZ 0x61 | ||
32 | #define GIGABEAT_16000HZ 0x55 | ||
33 | #define GIGABEAT_22050HZ 0x36 | ||
34 | #define GIGABEAT_24000HZ 0x79 | ||
35 | #define GIGABEAT_32000HZ 0x59 | ||
36 | #define GIGABEAT_44100HZ 0x22 | ||
37 | #define GIGABEAT_48000HZ 0x41 | ||
38 | #define GIGABEAT_88200HZ 0x3e | ||
39 | #define GIGABEAT_96000HZ 0x5d | ||
40 | |||
29 | #define FIFO_COUNT ((IISFCON >> 6) & 0x01F) | 41 | #define FIFO_COUNT ((IISFCON >> 6) & 0x01F) |
30 | 42 | ||
31 | /* number of bytes in FIFO */ | 43 | /* number of bytes in FIFO */ |
@@ -213,28 +225,49 @@ void pcm_play_pause_unpause(void) | |||
213 | INTMSK &= ~(1<<19); | 225 | INTMSK &= ~(1<<19); |
214 | } | 226 | } |
215 | 227 | ||
216 | |||
217 | |||
218 | void pcm_set_frequency(unsigned int frequency) | 228 | void pcm_set_frequency(unsigned int frequency) |
219 | { | 229 | { |
220 | int sr_ctrl; | 230 | int sr_ctrl; |
221 | 231 | ||
222 | switch(frequency) | 232 | switch(frequency) |
223 | { | 233 | { |
234 | case SAMPR_8: | ||
235 | sr_ctrl = GIGABEAT_8000HZ; | ||
236 | break; | ||
224 | case SAMPR_11: | 237 | case SAMPR_11: |
225 | sr_ctrl = 0x19 << 1; | 238 | sr_ctrl = GIGABEAT_11025HZ; |
239 | break; | ||
240 | case SAMPR_12: | ||
241 | sr_ctrl = GIGABEAT_12000HZ; | ||
242 | break; | ||
243 | case SAMPR_16: | ||
244 | sr_ctrl = GIGABEAT_16000HZ; | ||
226 | break; | 245 | break; |
227 | case SAMPR_22: | 246 | case SAMPR_22: |
228 | sr_ctrl = 0x1B << 1; | 247 | sr_ctrl = GIGABEAT_22050HZ; |
248 | break; | ||
249 | case SAMPR_24: | ||
250 | sr_ctrl = GIGABEAT_24000HZ; | ||
251 | break; | ||
252 | case SAMPR_32: | ||
253 | sr_ctrl = GIGABEAT_32000HZ; | ||
229 | break; | 254 | break; |
230 | default: | 255 | default: |
256 | frequency = SAMPR_44; | ||
231 | case SAMPR_44: | 257 | case SAMPR_44: |
232 | sr_ctrl = 0x11 << 1; | 258 | sr_ctrl = GIGABEAT_44100HZ; |
259 | break; | ||
260 | case SAMPR_48: | ||
261 | sr_ctrl = GIGABEAT_48000HZ; | ||
233 | break; | 262 | break; |
234 | case SAMPR_88: | 263 | case SAMPR_88: |
235 | sr_ctrl = 0x1F << 1; | 264 | sr_ctrl = GIGABEAT_88200HZ; |
265 | break; | ||
266 | case SAMPR_96: | ||
267 | sr_ctrl = GIGABEAT_96000HZ; | ||
236 | break; | 268 | break; |
237 | } | 269 | } |
270 | |||
238 | audiohw_set_sample_rate(sr_ctrl); | 271 | audiohw_set_sample_rate(sr_ctrl); |
239 | pcm_freq = frequency; | 272 | pcm_freq = frequency; |
240 | } | 273 | } |