summaryrefslogtreecommitdiff
path: root/firmware/pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/pcm.c')
-rw-r--r--firmware/pcm.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/firmware/pcm.c b/firmware/pcm.c
index 8080823077..72fe23cb16 100644
--- a/firmware/pcm.c
+++ b/firmware/pcm.c
@@ -361,8 +361,24 @@ void pcm_set_frequency(unsigned int samplerate)
361{ 361{
362 logf("pcm_set_frequency"); 362 logf("pcm_set_frequency");
363 363
364 int index = round_value_to_list32(samplerate, hw_freq_sampr, 364 int index;
365 HW_NUM_FREQ, false); 365
366#ifdef CONFIG_SAMPR_TYPES
367 unsigned int type = samplerate & SAMPR_TYPE_MASK;
368 samplerate &= ~SAMPR_TYPE_MASK;
369
370#ifdef SAMPR_TYPE_REC
371 /* For now, supported targets have direct conversion when configured with
372 * CONFIG_SAMPR_TYPES.
373 * Some hypothetical target with independent rates would need slightly
374 * different handling throughout this source. */
375 if (type == SAMPR_TYPE_REC)
376 samplerate = pcm_sampr_type_rec_to_play(samplerate);
377#endif
378#endif /* CONFIG_SAMPR_TYPES */
379
380 index = round_value_to_list32(samplerate, hw_freq_sampr,
381 HW_NUM_FREQ, false);
366 382
367 if (samplerate != hw_freq_sampr[index]) 383 if (samplerate != hw_freq_sampr[index])
368 index = HW_FREQ_DEFAULT; /* Invalid = default */ 384 index = HW_FREQ_DEFAULT; /* Invalid = default */