summaryrefslogtreecommitdiff
path: root/firmware/target/arm/gigabeat/meg-fx
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2007-01-18 13:48:06 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2007-01-18 13:48:06 +0000
commitb01da58c5540ea497e33fef3b2c99e92c6b2bb33 (patch)
tree9f2499a64a1bcb4ba6b7972f788765f552152b7f /firmware/target/arm/gigabeat/meg-fx
parent97d59dd38c6cb65d75efd09efd9be6846f6921a0 (diff)
downloadrockbox-b01da58c5540ea497e33fef3b2c99e92c6b2bb33.tar.gz
rockbox-b01da58c5540ea497e33fef3b2c99e92c6b2bb33.zip
the gigabeat supports all frequencies but 64kHz
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12065 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/gigabeat/meg-fx')
-rw-r--r--firmware/target/arm/gigabeat/meg-fx/pcm-meg-fx.c45
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
27static int pcm_freq = HW_SAMPR_DEFAULT; /* 44.1 is default */ 27static 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
218void pcm_set_frequency(unsigned int frequency) 228void 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}