]> git.karo-electronics.de Git - linux-beck.git/commitdiff
greybus: audio: topology: Add helper API to map controlid with widget name
authorVaibhav Agarwal <vaibhav.agarwal@linaro.org>
Tue, 5 Jul 2016 22:09:20 +0000 (17:09 -0500)
committerAlex Elder <elder@linaro.org>
Wed, 6 Jul 2016 02:17:51 +0000 (21:17 -0500)
This API is used by enumerated controls .get/.set callback functions to
fetch control id associated with a widget.

Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mark.greer@animalcreek.com>
Signed-off-by: Alex Elder <elder@linaro.org>
drivers/staging/greybus/audio_codec.h
drivers/staging/greybus/audio_topology.c

index 5a19467c162390e925ffd98df1bca1bf82fa94fa..f4936f18647bfb6f4670287e22ec8c438049aaac 100644 (file)
@@ -123,6 +123,7 @@ struct gbaudio_widget {
 struct gbaudio_control {
        __u8 id;
        char *name;
+       char *wname;
        const char * const *texts;
        struct list_head list;
 };
index 1f9e8b6178dd55f5c248f2454b9e4bfce21fab8b..1bc987449180321d2a3013be042cd8de40408c28 100644 (file)
@@ -77,6 +77,20 @@ static const char *gbaudio_map_controlid(struct gbaudio_module_info *module,
        return NULL;
 }
 
+static int gbaudio_map_wcontrolname(struct gbaudio_module_info *module,
+                                         const char *name)
+{
+       struct gbaudio_control *control;
+
+       list_for_each_entry(control, &module->widget_ctl_list, list) {
+               if (!strncmp(control->wname, name, NAME_SIZE))
+                       return control->id;
+       }
+       dev_warn(module->dev, "%s: missing in modules controls list\n", name);
+
+       return -EINVAL;
+}
+
 static int gbaudio_map_widgetname(struct gbaudio_module_info *module,
                                          const char *name)
 {
@@ -652,6 +666,8 @@ static int gbaudio_tplg_create_widget(struct gbaudio_module_info *module,
                }
                control->id = curr->id;
                control->name = curr->name;
+               control->wname = w->name;
+
                if (curr->info.type == GB_AUDIO_CTL_ELEM_TYPE_ENUMERATED)
                        control->texts = (const char * const *)
                                curr->info.value.enumerated.names;