diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/audio.h | 20 | ||||
-rw-r--r-- | firmware/export/config_caps.h | 9 | ||||
-rw-r--r-- | firmware/export/spdif.h | 8 | ||||
-rw-r--r-- | firmware/pcm_record.c | 26 | ||||
-rw-r--r-- | firmware/target/arm/audio-pp.c | 4 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/audio-e200.c | 6 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/m5/audio-m5.c | 5 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/x5/audio-x5.c | 4 | ||||
-rw-r--r-- | firmware/target/coldfire/iriver/audio-iriver.c | 6 | ||||
-rw-r--r-- | firmware/target/coldfire/iriver/h100/power-h100.c | 3 | ||||
-rw-r--r-- | firmware/target/coldfire/iriver/h100/spdif-h100.c | 3 | ||||
-rw-r--r-- | firmware/target/coldfire/pcm-coldfire.c | 2 |
12 files changed, 53 insertions, 43 deletions
diff --git a/firmware/export/audio.h b/firmware/export/audio.h index a79a734e29..e6fed90069 100644 --- a/firmware/export/audio.h +++ b/firmware/export/audio.h | |||
@@ -194,12 +194,7 @@ void audio_record(const char *filename); | |||
194 | void audio_stop_recording(void); | 194 | void audio_stop_recording(void); |
195 | void audio_pause_recording(void); | 195 | void audio_pause_recording(void); |
196 | void audio_resume_recording(void); | 196 | void audio_resume_recording(void); |
197 | #if CONFIG_CODEC == SWCODEC | ||
198 | static inline void audio_new_file(const char *filename) | ||
199 | { audio_record(filename); } | ||
200 | #else | ||
201 | void audio_new_file(const char *filename); | 197 | void audio_new_file(const char *filename); |
202 | #endif /* CONFIG_CODEC == SWCODEC */ | ||
203 | void audio_set_recording_options(struct audio_recording_options *options); | 198 | void audio_set_recording_options(struct audio_recording_options *options); |
204 | void audio_set_recording_gain(int left, int right, int type); | 199 | void audio_set_recording_gain(int left, int right, int type); |
205 | unsigned long audio_recorded_time(void); | 200 | unsigned long audio_recorded_time(void); |
@@ -211,11 +206,22 @@ unsigned long audio_num_recorded_bytes(void); | |||
211 | bool audio_load_encoder(int afmt); | 206 | bool audio_load_encoder(int afmt); |
212 | void audio_remove_encoder(void); | 207 | void audio_remove_encoder(void); |
213 | unsigned char *audio_get_recording_buffer(size_t *buffer_size); | 208 | unsigned char *audio_get_recording_buffer(size_t *buffer_size); |
214 | void audio_set_source(int source, unsigned flags); | ||
215 | void audio_set_output_source(int source); | ||
216 | #endif /* CONFIG_CODEC == SWCODEC */ | 209 | #endif /* CONFIG_CODEC == SWCODEC */ |
210 | |||
217 | #endif /* HAVE_RECORDING */ | 211 | #endif /* HAVE_RECORDING */ |
218 | 212 | ||
213 | #if CONFIG_CODEC == SWCODEC | ||
214 | /* SWCODEC misc. audio functions */ | ||
215 | #if INPUT_SRC_CAPS != 0 | ||
216 | /* audio.c */ | ||
217 | void audio_set_input_source(int source, unsigned flags); | ||
218 | /* audio_input_mux: target-specific implementation used by audio_set_source | ||
219 | to set hardware inputs and audio paths */ | ||
220 | void audio_input_mux(int source, unsigned flags); | ||
221 | void audio_set_output_source(int source); | ||
222 | #endif /* INPUT_SRC_CAPS */ | ||
223 | #endif /* CONFIG_CODEC == SWCODEC */ | ||
224 | |||
219 | #ifdef HAVE_SPDIF_IN | 225 | #ifdef HAVE_SPDIF_IN |
220 | /* returns index into rec_master_sampr_list */ | 226 | /* returns index into rec_master_sampr_list */ |
221 | int audio_get_spdif_sample_rate(void); | 227 | int audio_get_spdif_sample_rate(void); |
diff --git a/firmware/export/config_caps.h b/firmware/export/config_caps.h index 8e3832d3a7..62cae8f8d8 100644 --- a/firmware/export/config_caps.h +++ b/firmware/export/config_caps.h | |||
@@ -66,6 +66,10 @@ | |||
66 | #define HAVE_FMRADIO_IN_(...) | 66 | #define HAVE_FMRADIO_IN_(...) |
67 | #endif | 67 | #endif |
68 | 68 | ||
69 | #if INPUT_SRC_CAPS != 0 && (INPUT_SRC_CAPS & (INPUT_SRC_CAPS-1)) != 0 | ||
70 | #define HAVE_MULTI_INPUT_SRC | ||
71 | #endif | ||
72 | |||
69 | #ifdef HAVE_RECORDING | 73 | #ifdef HAVE_RECORDING |
70 | /* Recordable source implies it has the input as well */ | 74 | /* Recordable source implies it has the input as well */ |
71 | 75 | ||
@@ -104,4 +108,9 @@ | |||
104 | #else | 108 | #else |
105 | #define HAVE_FMRADIO_REC_(...) | 109 | #define HAVE_FMRADIO_REC_(...) |
106 | #endif | 110 | #endif |
111 | |||
112 | #if REC_SRC_CAPS != 0 && (REC_SRC_CAPS & (REC_SRC_CAPS-1)) != 0 | ||
113 | #define HAVE_MULTI_REC_SRC | ||
114 | #endif | ||
115 | |||
107 | #endif /* HAVE_RECORDING */ | 116 | #endif /* HAVE_RECORDING */ |
diff --git a/firmware/export/spdif.h b/firmware/export/spdif.h index f4712fb88f..4179c7873f 100644 --- a/firmware/export/spdif.h +++ b/firmware/export/spdif.h | |||
@@ -20,6 +20,12 @@ | |||
20 | #ifndef SPDIF_H | 20 | #ifndef SPDIF_H |
21 | #define SPDIF_H | 21 | #define SPDIF_H |
22 | 22 | ||
23 | #ifdef HAVE_SPDIF_POWER | ||
24 | #define IF_SPDIF_POWER_(...) __VA_ARGS__ | ||
25 | #else | ||
26 | #define IF_SPDIF_POWER_(...) | ||
27 | #endif | ||
28 | |||
23 | /* Initialize the S/PDIF driver */ | 29 | /* Initialize the S/PDIF driver */ |
24 | void spdif_init(void); | 30 | void spdif_init(void); |
25 | /* Return the S/PDIF frequency in herz - unrounded */ | 31 | /* Return the S/PDIF frequency in herz - unrounded */ |
@@ -27,7 +33,7 @@ unsigned long spdif_measure_frequency(void); | |||
27 | #ifdef HAVE_SPDIF_OUT | 33 | #ifdef HAVE_SPDIF_OUT |
28 | /* Set the S/PDIF audio feed - Use AUDIO_SRC_* values - | 34 | /* Set the S/PDIF audio feed - Use AUDIO_SRC_* values - |
29 | will be off if not powered or !on */ | 35 | will be off if not powered or !on */ |
30 | void spdif_set_output_source(int source, bool on); | 36 | void spdif_set_output_source(int source IF_SPDIF_POWER_(, bool on)); |
31 | /* Return the last set S/PDIF audio source - literally the last value passed | 37 | /* Return the last set S/PDIF audio source - literally the last value passed |
32 | to spdif_set_monitor regardless of power state */ | 38 | to spdif_set_monitor regardless of power state */ |
33 | int spdif_get_output_source(bool *src_on); | 39 | int spdif_get_output_source(bool *src_on); |
diff --git a/firmware/pcm_record.c b/firmware/pcm_record.c index c27f80400d..1430100a09 100644 --- a/firmware/pcm_record.c +++ b/firmware/pcm_record.c | |||
@@ -481,6 +481,14 @@ void audio_record(const char *filename) | |||
481 | } /* audio_record */ | 481 | } /* audio_record */ |
482 | 482 | ||
483 | /** | 483 | /** |
484 | * audio_record wrapper for API compatibility with HW codec | ||
485 | */ | ||
486 | void audio_new_file(const char *filename) | ||
487 | { | ||
488 | audio_record(filename); | ||
489 | } /* audio_new_file */ | ||
490 | |||
491 | /** | ||
484 | * Stop current recording if recording | 492 | * Stop current recording if recording |
485 | */ | 493 | */ |
486 | void audio_stop_recording(void) | 494 | void audio_stop_recording(void) |
@@ -551,22 +559,6 @@ unsigned long audio_num_recorded_bytes(void) | |||
551 | return num_rec_bytes; | 559 | return num_rec_bytes; |
552 | } /* audio_num_recorded_bytes */ | 560 | } /* audio_num_recorded_bytes */ |
553 | 561 | ||
554 | #ifdef HAVE_SPDIF_IN | ||
555 | /** | ||
556 | * Return SPDIF sample rate index in audio_master_sampr_list. Since we base | ||
557 | * our reading on the actual SPDIF sample rate (which might be a bit | ||
558 | * inaccurate), we round off to the closest sample rate that is supported by | ||
559 | * SPDIF. | ||
560 | */ | ||
561 | int audio_get_spdif_sample_rate(void) | ||
562 | { | ||
563 | unsigned long measured_rate = spdif_measure_frequency(); | ||
564 | /* Find which SPDIF sample rate we're closest to. */ | ||
565 | return round_value_to_list32(measured_rate, audio_master_sampr_list, | ||
566 | SAMPR_NUM_FREQ, false); | ||
567 | } /* audio_get_spdif_sample_rate */ | ||
568 | #endif /* HAVE_SPDIF_IN */ | ||
569 | |||
570 | /***************************************************************************/ | 562 | /***************************************************************************/ |
571 | /* */ | 563 | /* */ |
572 | /* Functions that execute in the context of pcmrec_thread */ | 564 | /* Functions that execute in the context of pcmrec_thread */ |
@@ -1756,7 +1748,7 @@ void enc_set_parameters(struct enc_parameters *params) | |||
1756 | fnq_size *= MAX_PATH; | 1748 | fnq_size *= MAX_PATH; |
1757 | logf("fnq files:%ld", fnq_size / MAX_PATH); | 1749 | logf("fnq files:%ld", fnq_size / MAX_PATH); |
1758 | 1750 | ||
1759 | #if 1 | 1751 | #if 0 |
1760 | logf("ab :%08lX", (uintptr_t)audiobuf); | 1752 | logf("ab :%08lX", (uintptr_t)audiobuf); |
1761 | logf("pcm:%08lX", (uintptr_t)pcm_buffer); | 1753 | logf("pcm:%08lX", (uintptr_t)pcm_buffer); |
1762 | logf("enc:%08lX", (uintptr_t)enc_buffer); | 1754 | logf("enc:%08lX", (uintptr_t)enc_buffer); |
diff --git a/firmware/target/arm/audio-pp.c b/firmware/target/arm/audio-pp.c index 91670cb015..9fff197520 100644 --- a/firmware/target/arm/audio-pp.c +++ b/firmware/target/arm/audio-pp.c | |||
@@ -29,7 +29,7 @@ void audio_set_output_source(int source) | |||
29 | source = AUDIO_SRC_PLAYBACK; | 29 | source = AUDIO_SRC_PLAYBACK; |
30 | } /* audio_set_output_source */ | 30 | } /* audio_set_output_source */ |
31 | 31 | ||
32 | void audio_set_source(int source, unsigned flags) | 32 | void audio_input_mux(int source, unsigned flags) |
33 | { | 33 | { |
34 | (void)flags; | 34 | (void)flags; |
35 | /* Prevent pops from unneeded switching */ | 35 | /* Prevent pops from unneeded switching */ |
@@ -87,6 +87,6 @@ void audio_set_source(int source, unsigned flags) | |||
87 | } /* end switch */ | 87 | } /* end switch */ |
88 | 88 | ||
89 | last_source = source; | 89 | last_source = source; |
90 | } /* audio_set_source */ | 90 | } /* audio_input_mux */ |
91 | 91 | ||
92 | 92 | ||
diff --git a/firmware/target/arm/sandisk/sansa-e200/audio-e200.c b/firmware/target/arm/sandisk/sansa-e200/audio-e200.c index f046f0db99..0c3db7b87b 100644 --- a/firmware/target/arm/sandisk/sansa-e200/audio-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/audio-e200.c | |||
@@ -39,7 +39,7 @@ void audio_set_output_source(int source) | |||
39 | set_fiq_status(oldmode); | 39 | set_fiq_status(oldmode); |
40 | } /* audio_set_output_source */ | 40 | } /* audio_set_output_source */ |
41 | 41 | ||
42 | void audio_set_source(int source, unsigned flags) | 42 | void audio_input_mux(int source, unsigned flags) |
43 | { | 43 | { |
44 | static int last_source = AUDIO_SRC_PLAYBACK; | 44 | static int last_source = AUDIO_SRC_PLAYBACK; |
45 | static bool last_recording = false; | 45 | static bool last_recording = false; |
@@ -89,6 +89,4 @@ void audio_set_source(int source, unsigned flags) | |||
89 | } /* end switch */ | 89 | } /* end switch */ |
90 | 90 | ||
91 | last_source = source; | 91 | last_source = source; |
92 | } /* audio_set_source */ | 92 | } /* audio_input_mux */ |
93 | |||
94 | |||
diff --git a/firmware/target/coldfire/iaudio/m5/audio-m5.c b/firmware/target/coldfire/iaudio/m5/audio-m5.c index 2442351fed..87a7c35574 100644 --- a/firmware/target/coldfire/iaudio/m5/audio-m5.c +++ b/firmware/target/coldfire/iaudio/m5/audio-m5.c | |||
@@ -35,7 +35,7 @@ void audio_set_output_source(int source) | |||
35 | set_irq_level(level); | 35 | set_irq_level(level); |
36 | } /* audio_set_output_source */ | 36 | } /* audio_set_output_source */ |
37 | 37 | ||
38 | void audio_set_source(int source, unsigned flags) | 38 | void audio_input_mux(int source, unsigned flags) |
39 | { | 39 | { |
40 | /* Prevent pops from unneeded switching */ | 40 | /* Prevent pops from unneeded switching */ |
41 | static int last_source = AUDIO_SRC_PLAYBACK; | 41 | static int last_source = AUDIO_SRC_PLAYBACK; |
@@ -79,5 +79,4 @@ void audio_set_source(int source, unsigned flags) | |||
79 | or_l((1 << 29), &GPIO_FUNCTION); | 79 | or_l((1 << 29), &GPIO_FUNCTION); |
80 | 80 | ||
81 | last_source = source; | 81 | last_source = source; |
82 | } /* audio_set_source */ | 82 | } /* audio_input_mux */ |
83 | |||
diff --git a/firmware/target/coldfire/iaudio/x5/audio-x5.c b/firmware/target/coldfire/iaudio/x5/audio-x5.c index 91100ed751..594ff3b574 100644 --- a/firmware/target/coldfire/iaudio/x5/audio-x5.c +++ b/firmware/target/coldfire/iaudio/x5/audio-x5.c | |||
@@ -35,7 +35,7 @@ void audio_set_output_source(int source) | |||
35 | set_irq_level(level); | 35 | set_irq_level(level); |
36 | } /* audio_set_output_source */ | 36 | } /* audio_set_output_source */ |
37 | 37 | ||
38 | void audio_set_source(int source, unsigned flags) | 38 | void audio_input_mux(int source, unsigned flags) |
39 | { | 39 | { |
40 | /* Prevent pops from unneeded switching */ | 40 | /* Prevent pops from unneeded switching */ |
41 | static int last_source = AUDIO_SRC_PLAYBACK; | 41 | static int last_source = AUDIO_SRC_PLAYBACK; |
@@ -109,5 +109,5 @@ void audio_set_source(int source, unsigned flags) | |||
109 | or_l((1 << 29), &GPIO_FUNCTION); | 109 | or_l((1 << 29), &GPIO_FUNCTION); |
110 | 110 | ||
111 | last_source = source; | 111 | last_source = source; |
112 | } /* audio_set_source */ | 112 | } /* audio_input_mux */ |
113 | 113 | ||
diff --git a/firmware/target/coldfire/iriver/audio-iriver.c b/firmware/target/coldfire/iriver/audio-iriver.c index bd071430b2..4d22e7c987 100644 --- a/firmware/target/coldfire/iriver/audio-iriver.c +++ b/firmware/target/coldfire/iriver/audio-iriver.c | |||
@@ -44,7 +44,7 @@ void audio_set_output_source(int source) | |||
44 | set_irq_level(level); | 44 | set_irq_level(level); |
45 | } /* audio_set_output_source */ | 45 | } /* audio_set_output_source */ |
46 | 46 | ||
47 | void audio_set_source(int source, unsigned flags) | 47 | void audio_input_mux(int source, unsigned flags) |
48 | { | 48 | { |
49 | /* Prevent pops from unneeded switching */ | 49 | /* Prevent pops from unneeded switching */ |
50 | static int last_source = AUDIO_SRC_PLAYBACK; | 50 | static int last_source = AUDIO_SRC_PLAYBACK; |
@@ -131,6 +131,4 @@ void audio_set_source(int source, unsigned flags) | |||
131 | or_l(MUX_BIT, &GPIO_FUNCTION); | 131 | or_l(MUX_BIT, &GPIO_FUNCTION); |
132 | 132 | ||
133 | last_source = source; | 133 | last_source = source; |
134 | } /* audio_set_source */ | 134 | } /* audio_input_mux */ |
135 | |||
136 | |||
diff --git a/firmware/target/coldfire/iriver/h100/power-h100.c b/firmware/target/coldfire/iriver/h100/power-h100.c index ce1c350802..943168967f 100644 --- a/firmware/target/coldfire/iriver/h100/power-h100.c +++ b/firmware/target/coldfire/iriver/h100/power-h100.c | |||
@@ -89,7 +89,8 @@ void spdif_power_enable(bool on) | |||
89 | 89 | ||
90 | #ifndef BOOTLOADER | 90 | #ifndef BOOTLOADER |
91 | /* Make sure the feed is reset */ | 91 | /* Make sure the feed is reset */ |
92 | spdif_set_output_source(spdif_get_output_source(NULL), true); | 92 | spdif_set_output_source(spdif_get_output_source(NULL) |
93 | IF_SPDIF_POWER_(, true)); | ||
93 | #endif | 94 | #endif |
94 | } | 95 | } |
95 | 96 | ||
diff --git a/firmware/target/coldfire/iriver/h100/spdif-h100.c b/firmware/target/coldfire/iriver/h100/spdif-h100.c index ee4a9402ea..beede3fdce 100644 --- a/firmware/target/coldfire/iriver/h100/spdif-h100.c +++ b/firmware/target/coldfire/iriver/h100/spdif-h100.c | |||
@@ -33,7 +33,8 @@ void spdif_init(void) | |||
33 | { | 33 | { |
34 | /* PHASECONFIG setup: gain = 3*2^13, source = EBUIN */ | 34 | /* PHASECONFIG setup: gain = 3*2^13, source = EBUIN */ |
35 | PHASECONFIG = (6 << 3) | (4 << 0); | 35 | PHASECONFIG = (6 << 3) | (4 << 0); |
36 | spdif_set_output_source(AUDIO_SRC_PLAYBACK, true); | 36 | spdif_set_output_source(AUDIO_SRC_PLAYBACK |
37 | IF_SPDIF_POWER_(, true)); | ||
37 | } | 38 | } |
38 | 39 | ||
39 | /* Return the S/PDIF frequency in herz - unrounded */ | 40 | /* Return the S/PDIF frequency in herz - unrounded */ |
diff --git a/firmware/target/coldfire/pcm-coldfire.c b/firmware/target/coldfire/pcm-coldfire.c index dc40dacf0e..41aa9fbc61 100644 --- a/firmware/target/coldfire/pcm-coldfire.c +++ b/firmware/target/coldfire/pcm-coldfire.c | |||
@@ -271,7 +271,7 @@ void pcm_init(void) | |||
271 | /* Initialize default register values. */ | 271 | /* Initialize default register values. */ |
272 | audiohw_init(); | 272 | audiohw_init(); |
273 | 273 | ||
274 | audio_set_source(AUDIO_SRC_PLAYBACK, SRCF_PLAYBACK); | 274 | audio_input_mux(AUDIO_SRC_PLAYBACK, SRCF_PLAYBACK); |
275 | 275 | ||
276 | audiohw_set_frequency(freq_ent[FPARM_FSEL]); | 276 | audiohw_set_frequency(freq_ent[FPARM_FSEL]); |
277 | coldfire_set_pllcr_audio_bits(PLLCR_SET_AUDIO_BITS_DEFPARM); | 277 | coldfire_set_pllcr_audio_bits(PLLCR_SET_AUDIO_BITS_DEFPARM); |