diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-01 21:00:31 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-01 21:00:31 +0000 |
commit | fd11471a3f9bfbb5f5bdf22866e861bae56ad8ea (patch) | |
tree | 8a61f852ef81a9dd5950e9ebc9ffb8ac41bf3390 /firmware/target/mips/ingenic_jz47xx/codec-jz4740.c | |
parent | 5212f03124c486239479d75cafb8017d84f63ee9 (diff) | |
download | rockbox-fd11471a3f9bfbb5f5bdf22866e861bae56ad8ea.tar.gz rockbox-fd11471a3f9bfbb5f5bdf22866e861bae56ad8ea.zip |
Onda VX747: try at implementing FM tuner support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21160 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/codec-jz4740.c')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/codec-jz4740.c | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/codec-jz4740.c b/firmware/target/mips/ingenic_jz47xx/codec-jz4740.c index 6a0b6ae340..325a3734d8 100644 --- a/firmware/target/mips/ingenic_jz47xx/codec-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/codec-jz4740.c | |||
@@ -20,9 +20,10 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #include "config.h" | 22 | #include "config.h" |
23 | #include "audio.h" | ||
24 | #include "audiohw.h" | ||
23 | #include "jz4740.h" | 25 | #include "jz4740.h" |
24 | #include "system.h" | 26 | #include "system.h" |
25 | #include "audiohw.h" | ||
26 | 27 | ||
27 | /* TODO */ | 28 | /* TODO */ |
28 | const struct sound_settings_info audiohw_settings[] = { | 29 | const struct sound_settings_info audiohw_settings[] = { |
@@ -330,3 +331,66 @@ void audiohw_set_frequency(int freq) | |||
330 | 331 | ||
331 | REG_ICDC_CDCCR2 = (REG_ICDC_CDCCR2 & ~ICDC_CDCCR2_SMPR(0xF)) | speed; | 332 | REG_ICDC_CDCCR2 = (REG_ICDC_CDCCR2 & ~ICDC_CDCCR2_SMPR(0xF)) | speed; |
332 | } | 333 | } |
334 | |||
335 | int audio_channels = 2; | ||
336 | int audio_output_source = AUDIO_SRC_PLAYBACK; | ||
337 | |||
338 | void audio_set_output_source(int source) | ||
339 | { | ||
340 | if((unsigned)source >= AUDIO_NUM_SOURCES) | ||
341 | source = AUDIO_SRC_PLAYBACK; | ||
342 | |||
343 | audio_output_source = source; | ||
344 | } /* audio_set_output_source */ | ||
345 | |||
346 | void audio_input_mux(int source, unsigned flags) | ||
347 | { | ||
348 | static int last_source = AUDIO_SRC_PLAYBACK; | ||
349 | static bool last_recording = false; | ||
350 | bool recording = flags & SRCF_RECORDING; | ||
351 | |||
352 | switch (source) | ||
353 | { | ||
354 | default: /* playback - no recording */ | ||
355 | source = AUDIO_SRC_PLAYBACK; | ||
356 | case AUDIO_SRC_PLAYBACK: | ||
357 | audio_channels = 2; | ||
358 | if(source != last_source) | ||
359 | { | ||
360 | REG_ICDC_CDCCR1 = (REG_ICDC_CDCCR1 & ~(ICDC_CDCCR1_ELININ | ICDC_CDCCR1_EMIC | ICDC_CDCCR1_EADC | ICDC_CDCCR1_SW1ON | ICDC_CDCCR1_HPMUTE)) | ||
361 | | (ICDC_CDCCR1_EDAC | ICDC_CDCCR1_SW2ON); | ||
362 | } | ||
363 | break; | ||
364 | |||
365 | case AUDIO_SRC_MIC: /* recording only */ | ||
366 | audio_channels = 1; | ||
367 | if(source != last_source) | ||
368 | { | ||
369 | REG_ICDC_CDCCR1 = (REG_ICDC_CDCCR1 & ~(ICDC_CDCCR1_ELININ | ICDC_CDCCR1_EDAC | ICDC_CDCCR1_SW2ON | ICDC_CDCCR1_HPMUTE)) | ||
370 | | (ICDC_CDCCR1_EADC | ICDC_CDCCR1_SW1ON | ICDC_CDCCR1_EMIC); | ||
371 | } | ||
372 | break; | ||
373 | |||
374 | case AUDIO_SRC_FMRADIO: /* recording and playback */ | ||
375 | audio_channels = 2; | ||
376 | |||
377 | if(source == last_source && recording == last_recording) | ||
378 | break; | ||
379 | |||
380 | last_recording = recording; | ||
381 | |||
382 | if(recording) | ||
383 | { | ||
384 | REG_ICDC_CDCCR1 = (REG_ICDC_CDCCR1 & ~(ICDC_CDCCR1_EMIC | ICDC_CDCCR1_EDAC | ICDC_CDCCR1_SW2ON | ICDC_CDCCR1_HPMUTE)) | ||
385 | | (ICDC_CDCCR1_EADC | ICDC_CDCCR1_SW1ON | ICDC_CDCCR1_ELININ); | ||
386 | } | ||
387 | else | ||
388 | { | ||
389 | REG_ICDC_CDCCR1 = (REG_ICDC_CDCCR1 & ~(ICDC_CDCCR1_EMIC | ICDC_CDCCR1_EDAC | ICDC_CDCCR1_EADC | | ||
390 | ICDC_CDCCR1_SW2ON | ICDC_CDCCR1_HPMUTE)) | (ICDC_CDCCR1_SW1ON | ICDC_CDCCR1_ELININ); | ||
391 | } | ||
392 | break; | ||
393 | } /* end switch */ | ||
394 | |||
395 | last_source = source; | ||
396 | } /* audio_input_mux */ | ||