diff options
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/hosted/alsa-controls.c | 9 | ||||
-rw-r--r-- | firmware/target/hosted/alsa-controls.h | 2 | ||||
-rw-r--r-- | firmware/target/hosted/pcm-alsa.c | 4 |
3 files changed, 15 insertions, 0 deletions
diff --git a/firmware/target/hosted/alsa-controls.c b/firmware/target/hosted/alsa-controls.c index 9747fbefa9..289f2e76c9 100644 --- a/firmware/target/hosted/alsa-controls.c +++ b/firmware/target/hosted/alsa-controls.c | |||
@@ -72,6 +72,15 @@ bool alsa_controls_find(snd_ctl_elem_id_t *id, const char *name) | |||
72 | return false; | 72 | return false; |
73 | } | 73 | } |
74 | 74 | ||
75 | bool alsa_has_control(const char *name) | ||
76 | { | ||
77 | snd_ctl_elem_id_t *id; | ||
78 | /* allocate things on stack */ | ||
79 | snd_ctl_elem_id_alloca(&id); | ||
80 | /* find control */ | ||
81 | return alsa_controls_find(id, name); | ||
82 | } | ||
83 | |||
75 | /* find a control element enum index by name, return -1 if not found */ | 84 | /* find a control element enum index by name, return -1 if not found */ |
76 | int alsa_controls_find_enum(const char *name, const char *enum_name) | 85 | int alsa_controls_find_enum(const char *name, const char *enum_name) |
77 | { | 86 | { |
diff --git a/firmware/target/hosted/alsa-controls.h b/firmware/target/hosted/alsa-controls.h index ea2475a98e..f5c8439721 100644 --- a/firmware/target/hosted/alsa-controls.h +++ b/firmware/target/hosted/alsa-controls.h | |||
@@ -34,6 +34,8 @@ void alsa_controls_close(void); | |||
34 | /* find a control element ID by name, return false of not found, the id needs | 34 | /* find a control element ID by name, return false of not found, the id needs |
35 | * to be allocated */ | 35 | * to be allocated */ |
36 | bool alsa_controls_find(snd_ctl_elem_id_t *id, const char *name); | 36 | bool alsa_controls_find(snd_ctl_elem_id_t *id, const char *name); |
37 | /* check wether a control exists */ | ||
38 | bool alsa_has_control(const char *name); | ||
37 | /* find a control element enum index by name, return -1 if not found */ | 39 | /* find a control element enum index by name, return -1 if not found */ |
38 | int alsa_controls_find_enum(const char *name, const char *enum_name); | 40 | int alsa_controls_find_enum(const char *name, const char *enum_name); |
39 | /* set a control, potentially supports several values */ | 41 | /* set a control, potentially supports several values */ |
diff --git a/firmware/target/hosted/pcm-alsa.c b/firmware/target/hosted/pcm-alsa.c index c84679e9f3..f6a3ffce71 100644 --- a/firmware/target/hosted/pcm-alsa.c +++ b/firmware/target/hosted/pcm-alsa.c | |||
@@ -479,6 +479,10 @@ static void pcm_dma_apply_settings_nolock(void) | |||
479 | { | 479 | { |
480 | snd_pcm_drop(handle); | 480 | snd_pcm_drop(handle); |
481 | set_hwparams(handle, pcm_sampr); | 481 | set_hwparams(handle, pcm_sampr); |
482 | #if defined(HAVE_NWZ_LINUX_CODEC) | ||
483 | /* Sony NWZ linux driver uses a nonstandard mecanism to set the sampling rate */ | ||
484 | audiohw_set_frequency(pcm_sampr); | ||
485 | #endif | ||
482 | } | 486 | } |
483 | 487 | ||
484 | void pcm_dma_apply_settings(void) | 488 | void pcm_dma_apply_settings(void) |