diff options
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/hosted/pcm-alsa.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/firmware/target/hosted/pcm-alsa.c b/firmware/target/hosted/pcm-alsa.c index d42775e8ef..1395d071aa 100644 --- a/firmware/target/hosted/pcm-alsa.c +++ b/firmware/target/hosted/pcm-alsa.c | |||
@@ -443,6 +443,7 @@ static int async_rw(snd_pcm_t *handle) | |||
443 | } else { | 443 | } else { |
444 | return state; | 444 | return state; |
445 | } | 445 | } |
446 | |||
446 | return 0; | 447 | return 0; |
447 | } | 448 | } |
448 | 449 | ||
@@ -470,6 +471,10 @@ void pcm_play_dma_init(void) | |||
470 | if ((err = snd_pcm_nonblock(handle, 1))) | 471 | if ((err = snd_pcm_nonblock(handle, 1))) |
471 | panicf("Could not set non-block mode: %s\n", snd_strerror(err)); | 472 | panicf("Could not set non-block mode: %s\n", snd_strerror(err)); |
472 | 473 | ||
474 | #if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC) | ||
475 | audiohw_mute(true); | ||
476 | #endif | ||
477 | |||
473 | if ((err = set_hwparams(handle)) < 0) | 478 | if ((err = set_hwparams(handle)) < 0) |
474 | { | 479 | { |
475 | panicf("Setting of hwparams failed: %s\n", snd_strerror(err)); | 480 | panicf("Setting of hwparams failed: %s\n", snd_strerror(err)); |
@@ -523,12 +528,14 @@ static void pcm_dma_apply_settings_nolock(void) | |||
523 | audiohw_mute(true); | 528 | audiohw_mute(true); |
524 | snd_pcm_drop(handle); | 529 | snd_pcm_drop(handle); |
525 | set_hwparams(handle); | 530 | set_hwparams(handle); |
526 | audiohw_mute(false); | 531 | // audiohw_mute(false); /// Play DMA will unmute us. |
527 | } | 532 | } |
528 | } | 533 | } |
529 | #else | 534 | #else |
530 | static void pcm_dma_apply_settings_nolock(void) | 535 | static void pcm_dma_apply_settings_nolock(void) |
531 | { | 536 | { |
537 | logf("PCM DMA Settings %d %d", sample_rate, pcm_sampr); | ||
538 | |||
532 | snd_pcm_drop(handle); | 539 | snd_pcm_drop(handle); |
533 | set_hwparams(handle); | 540 | set_hwparams(handle); |
534 | #if defined(HAVE_NWZ_LINUX_CODEC) | 541 | #if defined(HAVE_NWZ_LINUX_CODEC) |
@@ -557,6 +564,9 @@ void pcm_play_dma_stop(void) | |||
557 | snd_pcm_drain(handle); | 564 | snd_pcm_drain(handle); |
558 | snd_pcm_nonblock(handle, 1); | 565 | snd_pcm_nonblock(handle, 1); |
559 | sample_rate = 0; | 566 | sample_rate = 0; |
567 | #if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC) | ||
568 | audiohw_mute(true); | ||
569 | #endif | ||
560 | logf("PCM DMA stopped"); | 570 | logf("PCM DMA stopped"); |
561 | } | 571 | } |
562 | 572 | ||
@@ -600,6 +610,9 @@ void pcm_play_dma_start(const void *addr, size_t size) | |||
600 | logf("Start error: %s\n", snd_strerror(err)); | 610 | logf("Start error: %s\n", snd_strerror(err)); |
601 | return; | 611 | return; |
602 | } | 612 | } |
613 | #if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC) | ||
614 | audiohw_mute(false); | ||
615 | #endif | ||
603 | if (err == 0) | 616 | if (err == 0) |
604 | return; | 617 | return; |
605 | break; | 618 | break; |