Lines Matching defs:swidget

1186 static int sof_widget_parse_tokens(struct snd_soc_component *scomp, struct snd_sof_widget *swidget,
1203 dev_err(scomp->dev, "No token list for widget %s\n", swidget->widget->name);
1212 swidget->tuples = kcalloc(num_tuples, sizeof(*swidget->tuples), GFP_KERNEL);
1213 if (!swidget->tuples)
1222 object_token_list[i], swidget->widget->name);
1229 /* parse and save UUID in swidget */
1230 ret = sof_parse_tokens(scomp, swidget,
1237 swidget->widget->name);
1244 swidget->tuples, swidget->num_tuples);
1247 swidget->widget->name);
1254 swidget->tuples, swidget->num_tuples);
1257 swidget->widget->name);
1270 new_tuples = krealloc(swidget->tuples,
1277 swidget->tuples = new_tuples;
1280 /* copy one set of tuples per token ID into swidget->tuples */
1282 object_token_list[i], num_sets, swidget->tuples,
1283 num_tuples, &swidget->num_tuples);
1286 token_list[object_token_list[i]].name, swidget->widget->name, ret);
1293 kfree(swidget->tuples);
1297 static void sof_free_pin_binding(struct snd_sof_widget *swidget,
1305 pin_binding = swidget->input_pin_binding;
1306 num_pins = swidget->num_input_pins;
1308 pin_binding = swidget->output_pin_binding;
1309 num_pins = swidget->num_output_pins;
1320 static int sof_parse_pin_binding(struct snd_sof_widget *swidget,
1332 num_pins = swidget->num_input_pins;
1336 num_pins = swidget->num_output_pins;
1342 ret = sof_parse_token_sets(swidget->scomp, pin_binding, pin_binding_token,
1348 /* copy pin binding array to swidget only if it is defined in topology */
1356 swidget->input_pin_binding = pb;
1358 swidget->output_pin_binding = pb;
1394 struct snd_sof_widget *swidget;
1399 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL);
1400 if (!swidget)
1403 swidget->scomp = scomp;
1404 swidget->widget = w;
1405 swidget->comp_id = sdev->next_comp_id++;
1406 swidget->id = w->id;
1407 swidget->pipeline_id = index;
1408 swidget->private = NULL;
1409 mutex_init(&swidget->setup_mutex);
1411 ida_init(&swidget->output_queue_ida);
1412 ida_init(&swidget->input_queue_ida);
1422 ret = sof_parse_tokens(scomp, swidget, comp_pin_tokens,
1431 if (swidget->num_input_pins > SOF_WIDGET_MAX_NUM_PINS ||
1432 swidget->num_output_pins > SOF_WIDGET_MAX_NUM_PINS) {
1434 swidget->widget->name, swidget->num_input_pins, swidget->num_output_pins);
1439 if (swidget->num_input_pins > 1) {
1440 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_INPUT);
1449 if (swidget->num_output_pins > 1) {
1450 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_OUTPUT);
1461 swidget->comp_id, w->name, swidget->id, index,
1462 swidget->num_input_pins, swidget->num_output_pins,
1481 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1489 swidget->private = dai;
1498 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1519 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1525 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name);
1533 tw->shift, swidget->id, tw->name,
1540 swidget->core = SOF_DSP_PRIMARY_CORE;
1542 int core = sof_get_token_value(SOF_TKN_COMP_CORE_ID, swidget->tuples,
1543 swidget->num_tuples);
1546 swidget->core = core;
1552 ret = widget_ops[w->id].bind_event(scomp, swidget,
1556 swidget->widget->name);
1572 spipe->pipe_widget = swidget;
1573 swidget->spipe = spipe;
1577 w->dobj.private = swidget;
1578 list_add(&swidget->list, &sdev->widget_list);
1581 kfree(swidget->private);
1582 kfree(swidget->tuples);
1584 kfree(swidget);
1614 struct snd_sof_widget *swidget;
1621 swidget = dobj->private;
1622 if (!swidget)
1625 widget = swidget->widget;
1627 switch (swidget->id) {
1630 dai = swidget->private;
1640 struct snd_sof_pipeline *spipe = swidget->spipe;
1644 swidget->spipe = NULL;
1680 if (widget_ops && widget_ops[swidget->id].ipc_free)
1681 widget_ops[swidget->id].ipc_free(swidget);
1683 ida_destroy(&swidget->output_queue_ida);
1684 ida_destroy(&swidget->input_queue_ida);
1686 sof_free_pin_binding(swidget, SOF_PIN_TYPE_INPUT);
1687 sof_free_pin_binding(swidget, SOF_PIN_TYPE_OUTPUT);
1689 kfree(swidget->tuples);
1691 /* remove and free swidget object */
1692 list_del(&swidget->list);
1693 kfree(swidget);
2126 * @swidget: pointer to struct snd_sof_widget that has the same pipeline ID as @pipe_widget
2129 * The function checks if @swidget is associated with any volatile controls. If so, setting
2133 struct snd_sof_widget *swidget)
2141 if (scontrol->comp_id == swidget->comp_id &&
2145 swidget->widget->name);
2151 swidget->spipe = spipe;
2152 swidget->dynamic_pipeline_widget = pipe_widget->dynamic_pipeline_widget;
2183 struct snd_sof_widget *swidget;
2198 list_for_each_entry(swidget, &sdev->widget_list, list)
2199 if (swidget->widget->id != snd_soc_dapm_scheduler &&
2200 swidget->pipeline_id == pipe_widget->pipeline_id) {
2201 ret = sof_set_widget_pipeline(sdev, spipe, swidget);
2205 if (widget_ops && widget_ops[swidget->id].ipc_setup) {
2206 ret = widget_ops[swidget->id].ipc_setup(swidget);
2210 swidget->widget->name);
2347 struct snd_sof_widget *swidget;
2351 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL);
2352 if (!swidget)
2359 kfree(swidget);
2363 swidget->scomp = scomp;
2364 swidget->widget = w;
2365 mutex_init(&swidget->setup_mutex);
2366 w->dobj.private = swidget;
2367 list_add(&swidget->list, &sdev->widget_list);
2379 struct snd_sof_widget *swidget = dobj->private;
2383 if (!swidget)
2386 /* remove and free swidget object */
2387 list_del(&swidget->list);
2388 kfree(swidget);