summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/hosted/alsa-controls.c9
-rw-r--r--firmware/target/hosted/alsa-controls.h2
-rw-r--r--firmware/target/hosted/pcm-alsa.c4
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
75bool 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 */
76int alsa_controls_find_enum(const char *name, const char *enum_name) 85int 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 */
36bool alsa_controls_find(snd_ctl_elem_id_t *id, const char *name); 36bool alsa_controls_find(snd_ctl_elem_id_t *id, const char *name);
37/* check wether a control exists */
38bool 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 */
38int alsa_controls_find_enum(const char *name, const char *enum_name); 40int 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
484void pcm_dma_apply_settings(void) 488void pcm_dma_apply_settings(void)