Lines Matching defs:swidget

1192 static int sof_widget_parse_tokens(struct snd_soc_component *scomp, struct snd_sof_widget *swidget,
1209 dev_err(scomp->dev, "No token list for widget %s\n", swidget->widget->name);
1218 swidget->tuples = kcalloc(num_tuples, sizeof(*swidget->tuples), GFP_KERNEL);
1219 if (!swidget->tuples)
1228 object_token_list[i], swidget->widget->name);
1235 /* parse and save UUID in swidget */
1236 ret = sof_parse_tokens(scomp, swidget,
1243 swidget->widget->name);
1250 swidget->tuples, swidget->num_tuples);
1253 swidget->widget->name);
1260 swidget->tuples, swidget->num_tuples);
1263 swidget->widget->name);
1276 new_tuples = krealloc(swidget->tuples,
1283 swidget->tuples = new_tuples;
1286 /* copy one set of tuples per token ID into swidget->tuples */
1288 object_token_list[i], num_sets, swidget->tuples,
1289 num_tuples, &swidget->num_tuples);
1292 token_list[object_token_list[i]].name, swidget->widget->name, ret);
1299 kfree(swidget->tuples);
1303 static void sof_free_pin_binding(struct snd_sof_widget *swidget,
1311 pin_binding = swidget->input_pin_binding;
1312 num_pins = swidget->num_input_pins;
1314 pin_binding = swidget->output_pin_binding;
1315 num_pins = swidget->num_output_pins;
1326 static int sof_parse_pin_binding(struct snd_sof_widget *swidget,
1338 num_pins = swidget->num_input_pins;
1342 num_pins = swidget->num_output_pins;
1348 ret = sof_parse_token_sets(swidget->scomp, pin_binding, pin_binding_token,
1354 /* copy pin binding array to swidget only if it is defined in topology */
1362 swidget->input_pin_binding = pb;
1364 swidget->output_pin_binding = pb;
1400 struct snd_sof_widget *swidget;
1405 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL);
1406 if (!swidget)
1409 swidget->scomp = scomp;
1410 swidget->widget = w;
1411 swidget->comp_id = sdev->next_comp_id++;
1412 swidget->id = w->id;
1413 swidget->pipeline_id = index;
1414 swidget->private = NULL;
1415 mutex_init(&swidget->setup_mutex);
1417 ida_init(&swidget->output_queue_ida);
1418 ida_init(&swidget->input_queue_ida);
1428 ret = sof_parse_tokens(scomp, swidget, comp_pin_tokens,
1437 if (swidget->num_input_pins > SOF_WIDGET_MAX_NUM_PINS ||
1438 swidget->num_output_pins > SOF_WIDGET_MAX_NUM_PINS) {
1440 swidget->widget->name, swidget->num_input_pins, swidget->num_output_pins);
1445 if (swidget->num_input_pins > 1) {
1446 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_INPUT);
1455 if (swidget->num_output_pins > 1) {
1456 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_OUTPUT);
1467 swidget->comp_id, w->name, swidget->id, index,
1468 swidget->num_input_pins, swidget->num_output_pins,
1487 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1495 swidget->private = dai;
1504 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1525 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1531 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name);
1539 swidget->id, tw->name, strnlen(tw->sname, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) > 0
1545 swidget->core = SOF_DSP_PRIMARY_CORE;
1547 int core = sof_get_token_value(SOF_TKN_COMP_CORE_ID, swidget->tuples,
1548 swidget->num_tuples);
1551 swidget->core = core;
1557 ret = widget_ops[w->id].bind_event(scomp, swidget,
1561 swidget->widget->name);
1577 spipe->pipe_widget = swidget;
1578 swidget->spipe = spipe;
1582 w->dobj.private = swidget;
1583 list_add(&swidget->list, &sdev->widget_list);
1586 kfree(swidget->private);
1587 kfree(swidget->tuples);
1589 kfree(swidget);
1619 struct snd_sof_widget *swidget;
1626 swidget = dobj->private;
1627 if (!swidget)
1630 widget = swidget->widget;
1632 switch (swidget->id) {
1635 dai = swidget->private;
1645 struct snd_sof_pipeline *spipe = swidget->spipe;
1649 swidget->spipe = NULL;
1685 if (widget_ops && widget_ops[swidget->id].ipc_free)
1686 widget_ops[swidget->id].ipc_free(swidget);
1688 ida_destroy(&swidget->output_queue_ida);
1689 ida_destroy(&swidget->input_queue_ida);
1691 sof_free_pin_binding(swidget, SOF_PIN_TYPE_INPUT);
1692 sof_free_pin_binding(swidget, SOF_PIN_TYPE_OUTPUT);
1694 kfree(swidget->tuples);
1696 /* remove and free swidget object */
1697 list_del(&swidget->list);
1698 kfree(swidget);
2142 * @swidget: pointer to struct snd_sof_widget that has the same pipeline ID as @pipe_widget
2145 * The function checks if @swidget is associated with any volatile controls. If so, setting
2149 struct snd_sof_widget *swidget)
2157 if (scontrol->comp_id == swidget->comp_id &&
2161 swidget->widget->name);
2167 swidget->spipe = spipe;
2168 swidget->dynamic_pipeline_widget = pipe_widget->dynamic_pipeline_widget;
2199 struct snd_sof_widget *swidget;
2214 list_for_each_entry(swidget, &sdev->widget_list, list)
2215 if (swidget->widget->id != snd_soc_dapm_scheduler &&
2216 swidget->pipeline_id == pipe_widget->pipeline_id) {
2217 ret = sof_set_widget_pipeline(sdev, spipe, swidget);
2221 if (widget_ops && widget_ops[swidget->id].ipc_setup) {
2222 ret = widget_ops[swidget->id].ipc_setup(swidget);
2226 swidget->widget->name);
2366 struct snd_sof_widget *swidget;
2370 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL);
2371 if (!swidget)
2376 kfree(swidget);
2384 kfree(swidget);
2391 kfree(swidget);
2396 swidget->scomp = scomp;
2397 swidget->widget = w;
2398 swidget->private = sdai;
2399 mutex_init(&swidget->setup_mutex);
2400 w->dobj.private = swidget;
2401 list_add(&swidget->list, &sdev->widget_list);
2413 struct snd_sof_widget *swidget = dobj->private;
2417 if (!swidget)
2420 /* remove and free swidget object */
2421 list_del(&swidget->list);
2422 kfree(swidget->private);
2423 kfree(swidget);