Lines Matching refs:module

32 	struct gbaudio_module_info *module;
40 dev_dbg(codec->dev, "%s:Find module#%d\n", __func__, dev_id);
43 list_for_each_entry(module, &codec->module_list, list) {
44 if (module->dev_id == dev_id) {
46 return module;
50 dev_warn(codec->dev, "%s: module#%d missing in codec list\n", name,
55 static const char *gbaudio_map_controlid(struct gbaudio_module_info *module,
63 list_for_each_entry(control, &module->ctl_list, list) {
72 list_for_each_entry(control, &module->widget_ctl_list, list) {
84 static int gbaudio_map_controlname(struct gbaudio_module_info *module,
89 list_for_each_entry(control, &module->ctl_list, list) {
94 dev_warn(module->dev, "%s: missing in modules controls list\n", name);
99 static int gbaudio_map_wcontrolname(struct gbaudio_module_info *module,
104 list_for_each_entry(control, &module->widget_ctl_list, list) {
108 dev_warn(module->dev, "%s: missing in modules controls list\n", name);
113 static int gbaudio_map_widgetname(struct gbaudio_module_info *module,
118 list_for_each_entry(widget, &module->widget_list, list) {
122 dev_warn(module->dev, "%s: missing in modules widgets list\n", name);
127 static const char *gbaudio_map_widgetid(struct gbaudio_module_info *module,
132 list_for_each_entry(widget, &module->widget_list, list) {
171 struct gbaudio_module_info *module;
200 module = find_gb_module(gbcodec, kcontrol->id.name);
201 if (!module)
203 name = gbaudio_map_controlid(module, data->ctl_id,
222 struct gbaudio_module_info *module;
228 module = find_gb_module(gb, kcontrol->id.name);
229 if (!module)
234 bundle = to_gb_bundle(module->dev);
240 ret = gb_audio_gb_get_control(module->mgmt_connection, data->ctl_id,
284 struct gbaudio_module_info *module;
290 module = find_gb_module(gb, kcontrol->id.name);
291 if (!module)
296 bundle = to_gb_bundle(module->dev);
329 ret = gb_audio_gb_set_control(module->mgmt_connection, data->ctl_id,
386 struct gbaudio_module_info *module;
394 module = find_gb_module(gb, kcontrol->id.name);
395 if (!module)
399 bundle = to_gb_bundle(module->dev);
410 ret = gb_audio_gb_get_control(module->mgmt_connection, data->ctl_id,
435 struct gbaudio_module_info *module;
443 module = find_gb_module(gb, kcontrol->id.name);
444 if (!module)
449 bundle = to_gb_bundle(module->dev);
465 ret = gb_audio_gb_get_control(module->mgmt_connection, data->ctl_id,
480 ret = gb_audio_gb_set_control(module->mgmt_connection,
510 /* Ensure GB module supports jack slot */
518 /* Ensure GB module supports jack slot */
556 struct gbaudio_module_info *module;
559 module = find_gb_module(gb, kcontrol->id.name);
560 if (!module)
563 ctl_id = gbaudio_map_controlname(module, kcontrol->id.name);
567 bundle = to_gb_bundle(module->dev);
573 ret = gb_audio_gb_get_control(module->mgmt_connection, ctl_id,
601 struct gbaudio_module_info *module;
604 module = find_gb_module(gb, kcontrol->id.name);
605 if (!module)
608 ctl_id = gbaudio_map_controlname(module, kcontrol->id.name);
624 bundle = to_gb_bundle(module->dev);
630 ret = gb_audio_gb_set_control(module->mgmt_connection, ctl_id,
719 struct gbaudio_module_info *module;
726 module = find_gb_module(gb, kcontrol->id.name);
727 if (!module)
730 ctl_id = gbaudio_map_wcontrolname(module, kcontrol->id.name);
734 bundle = to_gb_bundle(module->dev);
740 ret = gb_audio_gb_get_control(module->mgmt_connection, ctl_id,
767 struct gbaudio_module_info *module;
776 module = find_gb_module(gb, kcontrol->id.name);
777 if (!module)
780 ctl_id = gbaudio_map_wcontrolname(module, kcontrol->id.name);
785 bundle = to_gb_bundle(module->dev);
791 ret = gb_audio_gb_get_control(module->mgmt_connection, ctl_id,
829 ret = gb_audio_gb_set_control(module->mgmt_connection, ctl_id,
935 struct gbaudio_module_info *module;
940 /* Find relevant module */
941 module = find_gb_module(gbcodec, w->name);
942 if (!module)
946 wid = gbaudio_map_widgetname(module, w->name);
952 bundle = to_gb_bundle(module->dev);
960 ret = gb_audio_gb_enable_widget(module->mgmt_connection, wid);
962 ret = gbaudio_module_update(gbcodec, w, module, 1);
965 ret = gb_audio_gb_disable_widget(module->mgmt_connection, wid);
967 ret = gbaudio_module_update(gbcodec, w, module, 0);
1018 static int gbaudio_tplg_create_widget(struct gbaudio_module_info *module,
1031 dev_err(module->dev, "Invalid kcontrol count=%d for %s\n",
1039 widget_kctls = devm_kzalloc(module->dev, size, GFP_KERNEL);
1049 ret = gbaudio_tplg_create_wcontrol(module, &widget_kctls[i],
1052 dev_err(module->dev,
1057 control = devm_kzalloc(module->dev,
1077 gb_generate_enum_strings(module, gbenum);
1089 list_add(&control->list, &module->widget_ctl_list);
1090 dev_dbg(module->dev, "%s: control of type %d created\n",
1096 snprintf(w->name, sizeof(w->name), "GB %d %s", module->dev_id, temp_name);
1101 module->op_devices |= GBAUDIO_DEVICE_OUT_SPEAKER;
1105 module->op_devices |= (GBAUDIO_DEVICE_OUT_WIRED_HEADSET
1107 module->ip_devices |= GBAUDIO_DEVICE_IN_WIRED_HEADSET;
1111 module->ip_devices |= GBAUDIO_DEVICE_IN_BUILTIN_MIC;
1132 dev_dbg(module->dev, "%s: widget of type %d created\n", dw->name,
1136 list_for_each_entry_safe(control, _control, &module->widget_ctl_list,
1139 devm_kfree(module->dev, control);
1144 static int gbaudio_tplg_process_kcontrols(struct gbaudio_module_info *module,
1154 size = sizeof(struct snd_kcontrol_new) * module->num_controls;
1155 dapm_kctls = devm_kzalloc(module->dev, size, GFP_KERNEL);
1160 for (i = 0; i < module->num_controls; i++) {
1161 ret = gbaudio_tplg_create_kcontrol(module, &dapm_kctls[i],
1164 dev_err(module->dev, "%s:%d type not supported\n",
1168 control = devm_kzalloc(module->dev, sizeof(struct
1178 snprintf(curr->name, sizeof(curr->name), "GB %d %s", module->dev_id,
1190 gb_generate_enum_strings(module, gbenum);
1200 list_add(&control->list, &module->ctl_list);
1201 dev_dbg(module->dev, "%d:%s created of type %d\n", curr->id,
1205 module->controls = dapm_kctls;
1209 list_for_each_entry_safe(control, _control, &module->ctl_list,
1212 devm_kfree(module->dev, control);
1214 devm_kfree(module->dev, dapm_kctls);
1218 static int gbaudio_tplg_process_widgets(struct gbaudio_module_info *module,
1227 size = sizeof(struct snd_soc_dapm_widget) * module->num_dapm_widgets;
1228 dapm_widgets = devm_kzalloc(module->dev, size, GFP_KERNEL);
1233 for (i = 0; i < module->num_dapm_widgets; i++) {
1234 ret = gbaudio_tplg_create_widget(module, &dapm_widgets[i],
1237 dev_err(module->dev, "%s:%d type not supported\n",
1241 widget = devm_kzalloc(module->dev, sizeof(struct
1250 list_add(&widget->list, &module->widget_list);
1253 module->dapm_widgets = dapm_widgets;
1258 list_for_each_entry_safe(widget, _widget, &module->widget_list,
1261 devm_kfree(module->dev, widget);
1263 devm_kfree(module->dev, dapm_widgets);
1267 static int gbaudio_tplg_process_routes(struct gbaudio_module_info *module,
1275 size = sizeof(struct snd_soc_dapm_route) * module->num_dapm_routes;
1276 dapm_routes = devm_kzalloc(module->dev, size, GFP_KERNEL);
1280 module->dapm_routes = dapm_routes;
1283 for (i = 0; i < module->num_dapm_routes; i++) {
1285 gbaudio_map_widgetid(module, curr->destination_id);
1287 dev_err(module->dev, "%d:%d:%d:%d - Invalid sink\n",
1294 gbaudio_map_widgetid(module, curr->source_id);
1296 dev_err(module->dev, "%d:%d:%d:%d - Invalid source\n",
1303 gbaudio_map_controlid(module,
1308 dev_err(module->dev, "%d:%d:%d:%d - Invalid control\n",
1314 dev_dbg(module->dev, "Route {%s, %s, %s}\n", dapm_routes->sink,
1324 devm_kfree(module->dev, module->dapm_routes);
1328 static int gbaudio_tplg_process_header(struct gbaudio_module_info *module,
1332 module->num_controls = tplg_data->num_controls;
1333 module->num_dapm_widgets = tplg_data->num_widgets;
1334 module->num_dapm_routes = tplg_data->num_routes;
1337 module->dai_offset = (unsigned long)&tplg_data->data;
1338 module->control_offset = module->dai_offset +
1340 module->widget_offset = module->control_offset +
1342 module->route_offset = module->widget_offset +
1345 dev_dbg(module->dev, "DAI offset is 0x%lx\n", module->dai_offset);
1346 dev_dbg(module->dev, "control offset is %lx\n",
1347 module->control_offset);
1348 dev_dbg(module->dev, "widget offset is %lx\n", module->widget_offset);
1349 dev_dbg(module->dev, "route offset is %lx\n", module->route_offset);
1354 int gbaudio_tplg_parse_data(struct gbaudio_module_info *module,
1366 ret = gbaudio_tplg_process_header(module, tplg_data);
1368 dev_err(module->dev, "%d: Error in parsing topology header\n",
1374 controls = (struct gb_audio_control *)module->control_offset;
1375 ret = gbaudio_tplg_process_kcontrols(module, controls);
1377 dev_err(module->dev,
1381 dev_dbg(module->dev, "Control parsing finished\n");
1384 widgets = (struct gb_audio_widget *)module->widget_offset;
1385 ret = gbaudio_tplg_process_widgets(module, widgets);
1387 dev_err(module->dev,
1391 dev_dbg(module->dev, "Widget parsing finished\n");
1394 routes = (struct gb_audio_route *)module->route_offset;
1395 ret = gbaudio_tplg_process_routes(module, routes);
1397 dev_err(module->dev,
1401 dev_dbg(module->dev, "Route parsing finished\n");
1406 module->jack_mask = jack_type & GBCODEC_JACK_MASK;
1407 module->button_mask = jack_type & GBCODEC_JACK_BUTTON_MASK;
1413 void gbaudio_tplg_release(struct gbaudio_module_info *module)
1418 if (!module->topology)
1422 list_for_each_entry_safe(control, _control, &module->ctl_list,
1425 devm_kfree(module->dev, control);
1427 if (module->controls)
1428 devm_kfree(module->dev, module->controls);
1431 list_for_each_entry_safe(control, _control, &module->widget_ctl_list,
1434 devm_kfree(module->dev, control);
1438 list_for_each_entry_safe(widget, _widget, &module->widget_list,
1441 devm_kfree(module->dev, widget);
1443 if (module->dapm_widgets)
1444 devm_kfree(module->dev, module->dapm_widgets);
1447 if (module->dapm_routes)
1448 devm_kfree(module->dev, module->dapm_routes);