summaryrefslogtreecommitdiff
path: root/src/ucm
diff options
context:
space:
mode:
authorMargarita Olaya <magi@slimlogic.co.uk>2011-03-18 11:26:22 -0600
committerTakashi Iwai <tiwai@suse.de>2011-03-18 18:28:07 +0100
commitae0a44c628423d8eaec64d119511815d6884ab6b (patch)
tree12dbfd9532e379adfb174f9317df08d7cc877cce /src/ucm
parent8650c02ae21b620fbe8d5e90bf5639e5a4a3f401 (diff)
downloadalsa-lib-ae0a44c628423d8eaec64d119511815d6884ab6b.tar.gz
alsa-lib: ucm: allow values to be read from devices
This allows devices value to be read using the get_value(). Also fix a little formatting. Signed-off-by: Margarita Olaya Cabrera <magi@slimlogic.co.uk> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'src/ucm')
-rw-r--r--src/ucm/main.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/ucm/main.c b/src/ucm/main.c
index 42fd3733..88f8bf68 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -1059,24 +1059,31 @@ static int get_value3(const char **value,
* \param uc_mgr Use case manager
* \param identifier Value identifier (string)
* \param value Returned value string
- * \param modifier modifier name (string)
+ * \param item Modifier or Device name (string)
* \return Zero on success (value is filled), otherwise a negative error code
*/
static int get_value(snd_use_case_mgr_t *uc_mgr,
- const char *identifier,
- const char **value,
- const char *modifier)
+ const char *identifier,
+ const char **value,
+ const char *item)
{
- struct use_case_modifier *mod;
+ struct use_case_modifier *mod;
+ struct use_case_device *dev;
int err;
- if (modifier != NULL) {
- mod = find_modifier(uc_mgr, modifier);
+ if (item != NULL) {
+ mod = find_modifier(uc_mgr, item);
if (mod != NULL) {
err = get_value1(value, &mod->value_list, identifier);
if (err >= 0 || err != -ENOENT)
return err;
}
+ dev = find_device(uc_mgr->active_verb, item);
+ if (dev != NULL) {
+ err = get_value1(value, &dev->value_list, identifier);
+ if (err >= 0 || err != -ENOENT)
+ return err;
+ }
}
err = get_value1(value, &uc_mgr->active_verb->value_list, identifier);
if (err >= 0 || err != -ENOENT)