Lines Matching refs:swidget
1186 static int sof_widget_parse_tokens(struct snd_soc_component *scomp, struct snd_sof_widget *swidget, in sof_widget_parse_tokens() argument
1203 dev_err(scomp->dev, "No token list for widget %s\n", swidget->widget->name); in sof_widget_parse_tokens()
1212 swidget->tuples = kcalloc(num_tuples, sizeof(*swidget->tuples), GFP_KERNEL); in sof_widget_parse_tokens()
1213 if (!swidget->tuples) in sof_widget_parse_tokens()
1222 object_token_list[i], swidget->widget->name); in sof_widget_parse_tokens()
1230 ret = sof_parse_tokens(scomp, swidget, in sof_widget_parse_tokens()
1237 swidget->widget->name); in sof_widget_parse_tokens()
1244 swidget->tuples, swidget->num_tuples); in sof_widget_parse_tokens()
1247 swidget->widget->name); in sof_widget_parse_tokens()
1254 swidget->tuples, swidget->num_tuples); in sof_widget_parse_tokens()
1257 swidget->widget->name); in sof_widget_parse_tokens()
1270 new_tuples = krealloc(swidget->tuples, in sof_widget_parse_tokens()
1277 swidget->tuples = new_tuples; in sof_widget_parse_tokens()
1282 object_token_list[i], num_sets, swidget->tuples, in sof_widget_parse_tokens()
1283 num_tuples, &swidget->num_tuples); in sof_widget_parse_tokens()
1286 token_list[object_token_list[i]].name, swidget->widget->name, ret); in sof_widget_parse_tokens()
1293 kfree(swidget->tuples); in sof_widget_parse_tokens()
1297 static void sof_free_pin_binding(struct snd_sof_widget *swidget, in sof_free_pin_binding() argument
1305 pin_binding = swidget->input_pin_binding; in sof_free_pin_binding()
1306 num_pins = swidget->num_input_pins; in sof_free_pin_binding()
1308 pin_binding = swidget->output_pin_binding; in sof_free_pin_binding()
1309 num_pins = swidget->num_output_pins; in sof_free_pin_binding()
1320 static int sof_parse_pin_binding(struct snd_sof_widget *swidget, in sof_parse_pin_binding() argument
1332 num_pins = swidget->num_input_pins; in sof_parse_pin_binding()
1336 num_pins = swidget->num_output_pins; in sof_parse_pin_binding()
1342 ret = sof_parse_token_sets(swidget->scomp, pin_binding, pin_binding_token, in sof_parse_pin_binding()
1356 swidget->input_pin_binding = pb; in sof_parse_pin_binding()
1358 swidget->output_pin_binding = pb; in sof_parse_pin_binding()
1394 struct snd_sof_widget *swidget; in sof_widget_ready() local
1399 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL); in sof_widget_ready()
1400 if (!swidget) in sof_widget_ready()
1403 swidget->scomp = scomp; in sof_widget_ready()
1404 swidget->widget = w; in sof_widget_ready()
1405 swidget->comp_id = sdev->next_comp_id++; in sof_widget_ready()
1406 swidget->id = w->id; in sof_widget_ready()
1407 swidget->pipeline_id = index; in sof_widget_ready()
1408 swidget->private = NULL; in sof_widget_ready()
1409 mutex_init(&swidget->setup_mutex); in sof_widget_ready()
1411 ida_init(&swidget->output_queue_ida); in sof_widget_ready()
1412 ida_init(&swidget->input_queue_ida); in sof_widget_ready()
1422 ret = sof_parse_tokens(scomp, swidget, comp_pin_tokens, in sof_widget_ready()
1431 if (swidget->num_input_pins > SOF_WIDGET_MAX_NUM_PINS || in sof_widget_ready()
1432 swidget->num_output_pins > SOF_WIDGET_MAX_NUM_PINS) { in sof_widget_ready()
1434 swidget->widget->name, swidget->num_input_pins, swidget->num_output_pins); in sof_widget_ready()
1439 if (swidget->num_input_pins > 1) { in sof_widget_ready()
1440 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_INPUT); in sof_widget_ready()
1449 if (swidget->num_output_pins > 1) { in sof_widget_ready()
1450 ret = sof_parse_pin_binding(swidget, priv, SOF_PIN_TYPE_OUTPUT); in sof_widget_ready()
1461 swidget->comp_id, w->name, swidget->id, index, in sof_widget_ready()
1462 swidget->num_input_pins, swidget->num_output_pins, in sof_widget_ready()
1481 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size); in sof_widget_ready()
1489 swidget->private = dai; in sof_widget_ready()
1498 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size); in sof_widget_ready()
1519 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size); in sof_widget_ready()
1525 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name); in sof_widget_ready()
1533 tw->shift, swidget->id, tw->name, in sof_widget_ready()
1540 swidget->core = SOF_DSP_PRIMARY_CORE; in sof_widget_ready()
1542 int core = sof_get_token_value(SOF_TKN_COMP_CORE_ID, swidget->tuples, in sof_widget_ready()
1543 swidget->num_tuples); in sof_widget_ready()
1546 swidget->core = core; in sof_widget_ready()
1552 ret = widget_ops[w->id].bind_event(scomp, swidget, in sof_widget_ready()
1556 swidget->widget->name); in sof_widget_ready()
1572 spipe->pipe_widget = swidget; in sof_widget_ready()
1573 swidget->spipe = spipe; in sof_widget_ready()
1577 w->dobj.private = swidget; in sof_widget_ready()
1578 list_add(&swidget->list, &sdev->widget_list); in sof_widget_ready()
1581 kfree(swidget->private); in sof_widget_ready()
1582 kfree(swidget->tuples); in sof_widget_ready()
1584 kfree(swidget); in sof_widget_ready()
1614 struct snd_sof_widget *swidget; in sof_widget_unload() local
1621 swidget = dobj->private; in sof_widget_unload()
1622 if (!swidget) in sof_widget_unload()
1625 widget = swidget->widget; in sof_widget_unload()
1627 switch (swidget->id) { in sof_widget_unload()
1630 dai = swidget->private; in sof_widget_unload()
1640 struct snd_sof_pipeline *spipe = swidget->spipe; in sof_widget_unload()
1644 swidget->spipe = NULL; in sof_widget_unload()
1680 if (widget_ops && widget_ops[swidget->id].ipc_free) in sof_widget_unload()
1681 widget_ops[swidget->id].ipc_free(swidget); in sof_widget_unload()
1683 ida_destroy(&swidget->output_queue_ida); in sof_widget_unload()
1684 ida_destroy(&swidget->input_queue_ida); in sof_widget_unload()
1686 sof_free_pin_binding(swidget, SOF_PIN_TYPE_INPUT); in sof_widget_unload()
1687 sof_free_pin_binding(swidget, SOF_PIN_TYPE_OUTPUT); in sof_widget_unload()
1689 kfree(swidget->tuples); in sof_widget_unload()
1692 list_del(&swidget->list); in sof_widget_unload()
1693 kfree(swidget); in sof_widget_unload()
2131 struct snd_sof_widget *swidget) in sof_set_widget_pipeline() argument
2139 if (scontrol->comp_id == swidget->comp_id && in sof_set_widget_pipeline()
2143 swidget->widget->name); in sof_set_widget_pipeline()
2149 swidget->spipe = spipe; in sof_set_widget_pipeline()
2150 swidget->dynamic_pipeline_widget = pipe_widget->dynamic_pipeline_widget; in sof_set_widget_pipeline()
2181 struct snd_sof_widget *swidget; in sof_complete() local
2196 list_for_each_entry(swidget, &sdev->widget_list, list) in sof_complete()
2197 if (swidget->widget->id != snd_soc_dapm_scheduler && in sof_complete()
2198 swidget->pipeline_id == pipe_widget->pipeline_id) { in sof_complete()
2199 ret = sof_set_widget_pipeline(sdev, spipe, swidget); in sof_complete()
2203 if (widget_ops && widget_ops[swidget->id].ipc_setup) { in sof_complete()
2204 ret = widget_ops[swidget->id].ipc_setup(swidget); in sof_complete()
2208 swidget->widget->name); in sof_complete()
2345 struct snd_sof_widget *swidget; in sof_dspless_widget_ready() local
2349 swidget = kzalloc(sizeof(*swidget), GFP_KERNEL); in sof_dspless_widget_ready()
2350 if (!swidget) in sof_dspless_widget_ready()
2357 kfree(swidget); in sof_dspless_widget_ready()
2361 swidget->scomp = scomp; in sof_dspless_widget_ready()
2362 swidget->widget = w; in sof_dspless_widget_ready()
2363 mutex_init(&swidget->setup_mutex); in sof_dspless_widget_ready()
2364 w->dobj.private = swidget; in sof_dspless_widget_ready()
2365 list_add(&swidget->list, &sdev->widget_list); in sof_dspless_widget_ready()
2377 struct snd_sof_widget *swidget = dobj->private; in sof_dspless_widget_unload() local
2381 if (!swidget) in sof_dspless_widget_unload()
2385 list_del(&swidget->list); in sof_dspless_widget_unload()
2386 kfree(swidget); in sof_dspless_widget_unload()