tplg               81 sound/soc/soc-topology.c static int soc_tplg_process_headers(struct soc_tplg *tplg);
tplg               82 sound/soc/soc-topology.c static void soc_tplg_complete(struct soc_tplg *tplg);
tplg               87 sound/soc/soc-topology.c static int soc_tplg_check_elem_count(struct soc_tplg *tplg, size_t elem_size,
tplg               90 sound/soc/soc-topology.c 	const u8 *end = tplg->pos + elem_size * count;
tplg               92 sound/soc/soc-topology.c 	if (end > tplg->fw->data + tplg->fw->size) {
tplg               93 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: %s overflow end of data\n",
tplg              101 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg              110 sound/soc/soc-topology.c static inline int soc_tplg_is_eof(struct soc_tplg *tplg)
tplg              112 sound/soc/soc-topology.c 	const u8 *end = tplg->hdr_pos;
tplg              114 sound/soc/soc-topology.c 	if (end >= tplg->fw->data + tplg->fw->size)
tplg              119 sound/soc/soc-topology.c static inline unsigned long soc_tplg_get_hdr_offset(struct soc_tplg *tplg)
tplg              121 sound/soc/soc-topology.c 	return (unsigned long)(tplg->hdr_pos - tplg->fw->data);
tplg              124 sound/soc/soc-topology.c static inline unsigned long soc_tplg_get_offset(struct soc_tplg *tplg)
tplg              126 sound/soc/soc-topology.c 	return (unsigned long)(tplg->pos - tplg->fw->data);
tplg              192 sound/soc/soc-topology.c static int tplc_chan_get_reg(struct soc_tplg *tplg,
tplg              205 sound/soc/soc-topology.c static int tplc_chan_get_shift(struct soc_tplg *tplg,
tplg              230 sound/soc/soc-topology.c static inline void soc_bind_err(struct soc_tplg *tplg,
tplg              233 sound/soc/soc-topology.c 	dev_err(tplg->dev,
tplg              236 sound/soc/soc-topology.c 		soc_tplg_get_offset(tplg));
tplg              239 sound/soc/soc-topology.c static inline void soc_control_err(struct soc_tplg *tplg,
tplg              242 sound/soc/soc-topology.c 	dev_err(tplg->dev,
tplg              245 sound/soc/soc-topology.c 		soc_tplg_get_offset(tplg));
tplg              249 sound/soc/soc-topology.c static int soc_tplg_vendor_load_(struct soc_tplg *tplg,
tplg              254 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->vendor_load)
tplg              255 sound/soc/soc-topology.c 		ret = tplg->ops->vendor_load(tplg->comp, tplg->index, hdr);
tplg              257 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: no vendor load callback for ID %d\n",
tplg              263 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg              265 sound/soc/soc-topology.c 			soc_tplg_get_hdr_offset(tplg),
tplg              266 sound/soc/soc-topology.c 			soc_tplg_get_hdr_offset(tplg),
tplg              272 sound/soc/soc-topology.c static int soc_tplg_vendor_load(struct soc_tplg *tplg,
tplg              275 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_VENDOR)
tplg              278 sound/soc/soc-topology.c 	return soc_tplg_vendor_load_(tplg, hdr);
tplg              283 sound/soc/soc-topology.c static int soc_tplg_widget_load(struct soc_tplg *tplg,
tplg              286 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->widget_load)
tplg              287 sound/soc/soc-topology.c 		return tplg->ops->widget_load(tplg->comp, tplg->index, w,
tplg              295 sound/soc/soc-topology.c static int soc_tplg_widget_ready(struct soc_tplg *tplg,
tplg              298 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->widget_ready)
tplg              299 sound/soc/soc-topology.c 		return tplg->ops->widget_ready(tplg->comp, tplg->index, w,
tplg              306 sound/soc/soc-topology.c static int soc_tplg_dai_load(struct soc_tplg *tplg,
tplg              310 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->dai_load)
tplg              311 sound/soc/soc-topology.c 		return tplg->ops->dai_load(tplg->comp, tplg->index, dai_drv,
tplg              318 sound/soc/soc-topology.c static int soc_tplg_dai_link_load(struct soc_tplg *tplg,
tplg              321 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->link_load)
tplg              322 sound/soc/soc-topology.c 		return tplg->ops->link_load(tplg->comp, tplg->index, link, cfg);
tplg              328 sound/soc/soc-topology.c static void soc_tplg_complete(struct soc_tplg *tplg)
tplg              330 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->complete)
tplg              331 sound/soc/soc-topology.c 		tplg->ops->complete(tplg->comp);
tplg              359 sound/soc/soc-topology.c static int soc_tplg_add_kcontrol(struct soc_tplg *tplg,
tplg              362 sound/soc/soc-topology.c 	struct snd_soc_component *comp = tplg->comp;
tplg              582 sound/soc/soc-topology.c 	const struct soc_tplg *tplg)
tplg              604 sound/soc/soc-topology.c 		ext_ops = tplg->bytes_ext_ops;
tplg              605 sound/soc/soc-topology.c 		num_ops = tplg->bytes_ext_ops_count;
tplg              622 sound/soc/soc-topology.c 	ops = tplg->io_ops;
tplg              623 sound/soc/soc-topology.c 	num_ops = tplg->io_ops_count;
tplg              683 sound/soc/soc-topology.c static int soc_tplg_init_kcontrol(struct soc_tplg *tplg,
tplg              686 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->control_load)
tplg              687 sound/soc/soc-topology.c 		return tplg->ops->control_load(tplg->comp, tplg->index, k,
tplg              694 sound/soc/soc-topology.c static int soc_tplg_create_tlv_db_scale(struct soc_tplg *tplg,
tplg              714 sound/soc/soc-topology.c static int soc_tplg_create_tlv(struct soc_tplg *tplg,
tplg              727 sound/soc/soc-topology.c 			return soc_tplg_create_tlv_db_scale(tplg, kc,
tplg              732 sound/soc/soc-topology.c 			dev_dbg(tplg->dev, "Unsupported TLV type %d\n",
tplg              741 sound/soc/soc-topology.c static inline void soc_tplg_free_tlv(struct soc_tplg *tplg,
tplg              747 sound/soc/soc-topology.c static int soc_tplg_dbytes_create(struct soc_tplg *tplg, unsigned int count,
tplg              755 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg              758 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: Invalid count %d for byte control\n",
tplg              764 sound/soc/soc-topology.c 		be = (struct snd_soc_tplg_bytes_control *)tplg->pos;
tplg              775 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_bytes_control) +
tplg              778 sound/soc/soc-topology.c 		dev_dbg(tplg->dev,
tplg              790 sound/soc/soc-topology.c 		sbe->dobj.ops = tplg->ops;
tplg              794 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc, tplg);
tplg              796 sound/soc/soc-topology.c 			soc_control_err(tplg, &be->hdr, be->hdr.name);
tplg              802 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc,
tplg              805 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg              812 sound/soc/soc-topology.c 		err = soc_tplg_add_kcontrol(tplg, &kc,
tplg              815 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to add %s\n",
tplg              821 sound/soc/soc-topology.c 		list_add(&sbe->dobj.list, &tplg->comp->dobj_list);
tplg              827 sound/soc/soc-topology.c static int soc_tplg_dmixer_create(struct soc_tplg *tplg, unsigned int count,
tplg              835 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg              839 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid count %d for controls\n",
tplg              845 sound/soc/soc-topology.c 		mc = (struct snd_soc_tplg_mixer_control *)tplg->pos;
tplg              855 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_mixer_control) +
tplg              858 sound/soc/soc-topology.c 		dev_dbg(tplg->dev,
tplg              869 sound/soc/soc-topology.c 		sm->reg = tplc_chan_get_reg(tplg, mc->channel,
tplg              871 sound/soc/soc-topology.c 		sm->rreg = tplc_chan_get_reg(tplg, mc->channel,
tplg              873 sound/soc/soc-topology.c 		sm->shift = tplc_chan_get_shift(tplg, mc->channel,
tplg              875 sound/soc/soc-topology.c 		sm->rshift = tplc_chan_get_shift(tplg, mc->channel,
tplg              882 sound/soc/soc-topology.c 		sm->dobj.index = tplg->index;
tplg              883 sound/soc/soc-topology.c 		sm->dobj.ops = tplg->ops;
tplg              888 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc, tplg);
tplg              890 sound/soc/soc-topology.c 			soc_control_err(tplg, &mc->hdr, mc->hdr.name);
tplg              896 sound/soc/soc-topology.c 		err = soc_tplg_create_tlv(tplg, &kc, &mc->hdr);
tplg              898 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to create TLV %s\n",
tplg              905 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc,
tplg              908 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg              910 sound/soc/soc-topology.c 			soc_tplg_free_tlv(tplg, &kc);
tplg              916 sound/soc/soc-topology.c 		err = soc_tplg_add_kcontrol(tplg, &kc,
tplg              919 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to add %s\n",
tplg              921 sound/soc/soc-topology.c 			soc_tplg_free_tlv(tplg, &kc);
tplg              926 sound/soc/soc-topology.c 		list_add(&sm->dobj.list, &tplg->comp->dobj_list);
tplg             1003 sound/soc/soc-topology.c static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
tplg             1011 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg             1015 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid count %d for enum controls\n",
tplg             1021 sound/soc/soc-topology.c 		ec = (struct snd_soc_tplg_enum_control *)tplg->pos;
tplg             1032 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
tplg             1035 sound/soc/soc-topology.c 		dev_dbg(tplg->dev, "ASoC: adding enum kcontrol %s size %d\n",
tplg             1044 sound/soc/soc-topology.c 		se->reg = tplc_chan_get_reg(tplg, ec->channel, SNDRV_CHMAP_FL);
tplg             1045 sound/soc/soc-topology.c 		se->shift_l = tplc_chan_get_shift(tplg, ec->channel,
tplg             1047 sound/soc/soc-topology.c 		se->shift_r = tplc_chan_get_shift(tplg, ec->channel,
tplg             1051 sound/soc/soc-topology.c 		se->dobj.index = tplg->index;
tplg             1053 sound/soc/soc-topology.c 		se->dobj.ops = tplg->ops;
tplg             1061 sound/soc/soc-topology.c 				dev_err(tplg->dev,
tplg             1073 sound/soc/soc-topology.c 				dev_err(tplg->dev,
tplg             1081 sound/soc/soc-topology.c 			dev_err(tplg->dev,
tplg             1089 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&ec->hdr, &kc, tplg);
tplg             1091 sound/soc/soc-topology.c 			soc_control_err(tplg, &ec->hdr, ec->hdr.name);
tplg             1097 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc,
tplg             1100 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg             1107 sound/soc/soc-topology.c 		ret = soc_tplg_add_kcontrol(tplg,
tplg             1110 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: could not add kcontrol %s\n",
tplg             1116 sound/soc/soc-topology.c 		list_add(&se->dobj.list, &tplg->comp->dobj_list);
tplg             1122 sound/soc/soc-topology.c static int soc_tplg_kcontrol_elems_load(struct soc_tplg *tplg,
tplg             1129 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_MIXER) {
tplg             1130 sound/soc/soc-topology.c 		tplg->pos += le32_to_cpu(hdr->size) +
tplg             1135 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: adding %d kcontrols at 0x%lx\n", hdr->count,
tplg             1136 sound/soc/soc-topology.c 		soc_tplg_get_offset(tplg));
tplg             1140 sound/soc/soc-topology.c 		control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos;
tplg             1143 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: invalid control size\n");
tplg             1155 sound/soc/soc-topology.c 			ret = soc_tplg_dmixer_create(tplg, 1,
tplg             1163 sound/soc/soc-topology.c 			ret = soc_tplg_denum_create(tplg, 1,
tplg             1167 sound/soc/soc-topology.c 			ret = soc_tplg_dbytes_create(tplg, 1,
tplg             1171 sound/soc/soc-topology.c 			soc_bind_err(tplg, control_hdr, i);
tplg             1175 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: invalid control\n");
tplg             1185 sound/soc/soc-topology.c static int soc_tplg_add_route(struct soc_tplg *tplg,
tplg             1188 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->dapm_route_load)
tplg             1189 sound/soc/soc-topology.c 		return tplg->ops->dapm_route_load(tplg->comp, tplg->index,
tplg             1195 sound/soc/soc-topology.c static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
tplg             1198 sound/soc/soc-topology.c 	struct snd_soc_dapm_context *dapm = &tplg->comp->dapm;
tplg             1206 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_GRAPH) {
tplg             1207 sound/soc/soc-topology.c 		tplg->pos +=
tplg             1214 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg             1218 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid count %d for DAPM routes\n",
tplg             1223 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: adding %d DAPM routes for index %d\n", count,
tplg             1250 sound/soc/soc-topology.c 		elem = (struct snd_soc_tplg_dapm_graph_elem *)tplg->pos;
tplg             1251 sound/soc/soc-topology.c 		tplg->pos += sizeof(struct snd_soc_tplg_dapm_graph_elem);
tplg             1282 sound/soc/soc-topology.c 		routes[i]->dobj.ops = tplg->ops;
tplg             1283 sound/soc/soc-topology.c 		routes[i]->dobj.index = tplg->index;
tplg             1284 sound/soc/soc-topology.c 		list_add(&routes[i]->dobj.list, &tplg->comp->dobj_list);
tplg             1286 sound/soc/soc-topology.c 		ret = soc_tplg_add_route(tplg, routes[i]);
tplg             1310 sound/soc/soc-topology.c 	struct soc_tplg *tplg, int num_kcontrols)
tplg             1322 sound/soc/soc-topology.c 		mc = (struct snd_soc_tplg_mixer_control *)tplg->pos;
tplg             1333 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_mixer_control) +
tplg             1336 sound/soc/soc-topology.c 		dev_dbg(tplg->dev, " adding DAPM widget mixer control %s at %d\n",
tplg             1347 sound/soc/soc-topology.c 		sm->reg = tplc_chan_get_reg(tplg, mc->channel,
tplg             1349 sound/soc/soc-topology.c 		sm->rreg = tplc_chan_get_reg(tplg, mc->channel,
tplg             1351 sound/soc/soc-topology.c 		sm->shift = tplc_chan_get_shift(tplg, mc->channel,
tplg             1353 sound/soc/soc-topology.c 		sm->rshift = tplc_chan_get_shift(tplg, mc->channel,
tplg             1360 sound/soc/soc-topology.c 		sm->dobj.index = tplg->index;
tplg             1364 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc[i], tplg);
tplg             1366 sound/soc/soc-topology.c 			soc_control_err(tplg, &mc->hdr, mc->hdr.name);
tplg             1371 sound/soc/soc-topology.c 		err = soc_tplg_create_tlv(tplg, &kc[i], &mc->hdr);
tplg             1373 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to create TLV %s\n",
tplg             1380 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc[i],
tplg             1383 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg             1385 sound/soc/soc-topology.c 			soc_tplg_free_tlv(tplg, &kc[i]);
tplg             1403 sound/soc/soc-topology.c 	struct soc_tplg *tplg, int num_kcontrols)
tplg             1415 sound/soc/soc-topology.c 		ec = (struct snd_soc_tplg_enum_control *)tplg->pos;
tplg             1425 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
tplg             1428 sound/soc/soc-topology.c 		dev_dbg(tplg->dev, " adding DAPM widget enum control %s\n",
tplg             1439 sound/soc/soc-topology.c 		se->reg = tplc_chan_get_reg(tplg, ec->channel, SNDRV_CHMAP_FL);
tplg             1440 sound/soc/soc-topology.c 		se->shift_l = tplc_chan_get_shift(tplg, ec->channel,
tplg             1442 sound/soc/soc-topology.c 		se->shift_r = tplc_chan_get_shift(tplg, ec->channel,
tplg             1447 sound/soc/soc-topology.c 		se->dobj.index = tplg->index;
tplg             1454 sound/soc/soc-topology.c 				dev_err(tplg->dev, "ASoC: could not create values for %s\n",
tplg             1464 sound/soc/soc-topology.c 				dev_err(tplg->dev, "ASoC: could not create texts for %s\n",
tplg             1470 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: invalid enum control type %d for %s\n",
tplg             1476 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&ec->hdr, &kc[i], tplg);
tplg             1478 sound/soc/soc-topology.c 			soc_control_err(tplg, &ec->hdr, ec->hdr.name);
tplg             1483 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc[i],
tplg             1486 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg             1513 sound/soc/soc-topology.c 	struct soc_tplg *tplg, int num_kcontrols)
tplg             1525 sound/soc/soc-topology.c 		be = (struct snd_soc_tplg_bytes_control *)tplg->pos;
tplg             1536 sound/soc/soc-topology.c 		tplg->pos += (sizeof(struct snd_soc_tplg_bytes_control) +
tplg             1539 sound/soc/soc-topology.c 		dev_dbg(tplg->dev,
tplg             1554 sound/soc/soc-topology.c 		err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc[i], tplg);
tplg             1556 sound/soc/soc-topology.c 			soc_control_err(tplg, &be->hdr, be->hdr.name);
tplg             1561 sound/soc/soc-topology.c 		err = soc_tplg_init_kcontrol(tplg, &kc[i],
tplg             1564 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to init %s\n",
tplg             1583 sound/soc/soc-topology.c static int soc_tplg_dapm_widget_create(struct soc_tplg *tplg,
tplg             1586 sound/soc/soc-topology.c 	struct snd_soc_dapm_context *dapm = &tplg->comp->dapm;
tplg             1589 sound/soc/soc-topology.c 	struct snd_soc_card *card = tplg->comp->card;
tplg             1600 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: creating DAPM widget %s id %d\n",
tplg             1627 sound/soc/soc-topology.c 	template.dobj.index = tplg->index;
tplg             1629 sound/soc/soc-topology.c 	tplg->pos +=
tplg             1639 sound/soc/soc-topology.c 	control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos;
tplg             1640 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: template %s has %d controls of type %x\n",
tplg             1653 sound/soc/soc-topology.c 			soc_tplg_dapm_widget_dmixer_create(tplg,
tplg             1668 sound/soc/soc-topology.c 			soc_tplg_dapm_widget_denum_create(tplg,
tplg             1679 sound/soc/soc-topology.c 			soc_tplg_dapm_widget_dbytes_create(tplg,
tplg             1687 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid widget control type %d:%d:%d\n",
tplg             1695 sound/soc/soc-topology.c 	ret = soc_tplg_widget_load(tplg, &template, w);
tplg             1712 sound/soc/soc-topology.c 	widget->dobj.ops = tplg->ops;
tplg             1713 sound/soc/soc-topology.c 	widget->dobj.index = tplg->index;
tplg             1714 sound/soc/soc-topology.c 	list_add(&widget->dobj.list, &tplg->comp->dobj_list);
tplg             1716 sound/soc/soc-topology.c 	ret = soc_tplg_widget_ready(tplg, widget, w);
tplg             1735 sound/soc/soc-topology.c static int soc_tplg_dapm_widget_elems_load(struct soc_tplg *tplg,
tplg             1743 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_WIDGET)
tplg             1746 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: adding %d DAPM widgets\n", count);
tplg             1749 sound/soc/soc-topology.c 		widget = (struct snd_soc_tplg_dapm_widget *) tplg->pos;
tplg             1751 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: invalid widget size\n");
tplg             1755 sound/soc/soc-topology.c 		ret = soc_tplg_dapm_widget_create(tplg, widget);
tplg             1757 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to load widget %s\n",
tplg             1766 sound/soc/soc-topology.c static int soc_tplg_dapm_complete(struct soc_tplg *tplg)
tplg             1768 sound/soc/soc-topology.c 	struct snd_soc_card *card = tplg->comp->card;
tplg             1775 sound/soc/soc-topology.c 		dev_warn(tplg->dev, "ASoC: Parent card not yet available,"
tplg             1782 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: failed to create new widgets %d\n",
tplg             1819 sound/soc/soc-topology.c static int soc_tplg_dai_create(struct soc_tplg *tplg,
tplg             1851 sound/soc/soc-topology.c 	ret = soc_tplg_dai_load(tplg, dai_drv, pcm, NULL);
tplg             1853 sound/soc/soc-topology.c 		dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
tplg             1861 sound/soc/soc-topology.c 	dai_drv->dobj.index = tplg->index;
tplg             1862 sound/soc/soc-topology.c 	dai_drv->dobj.ops = tplg->ops;
tplg             1864 sound/soc/soc-topology.c 	list_add(&dai_drv->dobj.list, &tplg->comp->dobj_list);
tplg             1867 sound/soc/soc-topology.c 	return snd_soc_register_dai(tplg->comp, dai_drv);
tplg             1894 sound/soc/soc-topology.c static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
tplg             1916 sound/soc/soc-topology.c 	link->dobj.index = tplg->index;
tplg             1917 sound/soc/soc-topology.c 	link->dobj.ops = tplg->ops;
tplg             1944 sound/soc/soc-topology.c 	ret = soc_tplg_dai_link_load(tplg, link, NULL);
tplg             1946 sound/soc/soc-topology.c 		dev_err(tplg->comp->dev, "ASoC: FE link loading failed\n");
tplg             1950 sound/soc/soc-topology.c 	ret = snd_soc_add_dai_link(tplg->comp->card, link);
tplg             1952 sound/soc/soc-topology.c 		dev_err(tplg->comp->dev, "ASoC: adding FE link failed\n");
tplg             1956 sound/soc/soc-topology.c 	list_add(&link->dobj.list, &tplg->comp->dobj_list);
tplg             1968 sound/soc/soc-topology.c static int soc_tplg_pcm_create(struct soc_tplg *tplg,
tplg             1973 sound/soc/soc-topology.c 	ret = soc_tplg_dai_create(tplg, pcm);
tplg             1977 sound/soc/soc-topology.c 	return  soc_tplg_fe_link_create(tplg, pcm);
tplg             2008 sound/soc/soc-topology.c static int pcm_new_ver(struct soc_tplg *tplg,
tplg             2019 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid PCM size\n");
tplg             2023 sound/soc/soc-topology.c 	dev_warn(tplg->dev, "ASoC: old version of PCM\n");
tplg             2049 sound/soc/soc-topology.c static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,
tplg             2061 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_PCM_DAI)
tplg             2065 sound/soc/soc-topology.c 	pcm = (struct snd_soc_tplg_pcm *)tplg->pos;
tplg             2069 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid size %d for PCM elems\n",
tplg             2074 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg             2078 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid count %d for PCM DAI elems\n",
tplg             2084 sound/soc/soc-topology.c 		pcm = (struct snd_soc_tplg_pcm *)tplg->pos;
tplg             2095 sound/soc/soc-topology.c 			ret = pcm_new_ver(tplg, pcm, &_pcm);
tplg             2101 sound/soc/soc-topology.c 		ret = soc_tplg_pcm_create(tplg, _pcm);
tplg             2111 sound/soc/soc-topology.c 		tplg->pos += size + le32_to_cpu(_pcm->priv.size);
tplg             2117 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: adding %d PCM DAIs\n", count);
tplg             2199 sound/soc/soc-topology.c static int link_new_ver(struct soc_tplg *tplg,
tplg             2211 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid physical link config size\n");
tplg             2215 sound/soc/soc-topology.c 	dev_warn(tplg->dev, "ASoC: old version of physical link config\n");
tplg             2234 sound/soc/soc-topology.c static int soc_tplg_link_config(struct soc_tplg *tplg,
tplg             2258 sound/soc/soc-topology.c 	link = snd_soc_find_dai_link(tplg->comp->card, le32_to_cpu(cfg->id),
tplg             2261 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: physical link %s (id %d) not exist\n",
tplg             2277 sound/soc/soc-topology.c 	ret = soc_tplg_dai_link_load(tplg, link, cfg);
tplg             2279 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: physical link loading failed\n");
tplg             2284 sound/soc/soc-topology.c 	link->dobj.index = tplg->index;
tplg             2285 sound/soc/soc-topology.c 	link->dobj.ops = tplg->ops;
tplg             2287 sound/soc/soc-topology.c 	list_add(&link->dobj.list, &tplg->comp->dobj_list);
tplg             2294 sound/soc/soc-topology.c static int soc_tplg_link_elems_load(struct soc_tplg *tplg,
tplg             2305 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_LINK) {
tplg             2306 sound/soc/soc-topology.c 		tplg->pos += le32_to_cpu(hdr->size) +
tplg             2312 sound/soc/soc-topology.c 	link = (struct snd_soc_tplg_link_config *)tplg->pos;
tplg             2316 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid size %d for physical link elems\n",
tplg             2321 sound/soc/soc-topology.c 	if (soc_tplg_check_elem_count(tplg,
tplg             2325 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: invalid count %d for physical link elems\n",
tplg             2332 sound/soc/soc-topology.c 		link = (struct snd_soc_tplg_link_config *)tplg->pos;
tplg             2339 sound/soc/soc-topology.c 			ret = link_new_ver(tplg, link, &_link);
tplg             2344 sound/soc/soc-topology.c 		ret = soc_tplg_link_config(tplg, _link);
tplg             2354 sound/soc/soc-topology.c 		tplg->pos += size + le32_to_cpu(_link->priv.size);
tplg             2371 sound/soc/soc-topology.c static int soc_tplg_dai_config(struct soc_tplg *tplg,
tplg             2386 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: physical DAI %s not registered\n",
tplg             2392 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: physical DAI %s id mismatch\n",
tplg             2419 sound/soc/soc-topology.c 	ret = soc_tplg_dai_load(tplg, dai_drv, NULL, dai);
tplg             2421 sound/soc/soc-topology.c 		dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
tplg             2429 sound/soc/soc-topology.c static int soc_tplg_dai_elems_load(struct soc_tplg *tplg,
tplg             2438 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_BE_DAI)
tplg             2443 sound/soc/soc-topology.c 		dai = (struct snd_soc_tplg_dai *)tplg->pos;
tplg             2445 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: invalid physical DAI size\n");
tplg             2449 sound/soc/soc-topology.c 		ret = soc_tplg_dai_config(tplg, dai);
tplg             2451 sound/soc/soc-topology.c 			dev_err(tplg->dev, "ASoC: failed to configure DAI\n");
tplg             2455 sound/soc/soc-topology.c 		tplg->pos += (sizeof(*dai) + le32_to_cpu(dai->priv.size));
tplg             2458 sound/soc/soc-topology.c 	dev_dbg(tplg->dev, "ASoC: Configure %d BE DAIs\n", count);
tplg             2471 sound/soc/soc-topology.c static int manifest_new_ver(struct soc_tplg *tplg,
tplg             2483 sound/soc/soc-topology.c 		dev_warn(tplg->dev, "ASoC: invalid manifest size %d\n",
tplg             2490 sound/soc/soc-topology.c 	dev_warn(tplg->dev, "ASoC: old version of manifest\n");
tplg             2513 sound/soc/soc-topology.c static int soc_tplg_manifest_load(struct soc_tplg *tplg,
tplg             2520 sound/soc/soc-topology.c 	if (tplg->pass != SOC_TPLG_PASS_MANIFEST)
tplg             2523 sound/soc/soc-topology.c 	manifest = (struct snd_soc_tplg_manifest *)tplg->pos;
tplg             2531 sound/soc/soc-topology.c 		ret = manifest_new_ver(tplg, manifest, &_manifest);
tplg             2537 sound/soc/soc-topology.c 	if (tplg->comp && tplg->ops && tplg->ops->manifest)
tplg             2538 sound/soc/soc-topology.c 		ret = tplg->ops->manifest(tplg->comp, tplg->index, _manifest);
tplg             2547 sound/soc/soc-topology.c static int soc_valid_header(struct soc_tplg *tplg,
tplg             2550 sound/soc/soc-topology.c 	if (soc_tplg_get_hdr_offset(tplg) >= tplg->fw->size)
tplg             2554 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg             2556 sound/soc/soc-topology.c 			le32_to_cpu(hdr->type), soc_tplg_get_hdr_offset(tplg),
tplg             2557 sound/soc/soc-topology.c 			tplg->fw->size);
tplg             2563 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg             2565 sound/soc/soc-topology.c 			tplg->pass, hdr->magic,
tplg             2566 sound/soc/soc-topology.c 			soc_tplg_get_hdr_offset(tplg), tplg->fw->size);
tplg             2571 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg             2573 sound/soc/soc-topology.c 			tplg->pass, hdr->magic,
tplg             2574 sound/soc/soc-topology.c 			soc_tplg_get_hdr_offset(tplg), tplg->fw->size);
tplg             2581 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg             2583 sound/soc/soc-topology.c 			tplg->pass, hdr->abi,
tplg             2584 sound/soc/soc-topology.c 			SND_SOC_TPLG_ABI_VERSION, soc_tplg_get_hdr_offset(tplg),
tplg             2585 sound/soc/soc-topology.c 			tplg->fw->size);
tplg             2590 sound/soc/soc-topology.c 		dev_err(tplg->dev, "ASoC: header has 0 size at offset 0x%lx.\n",
tplg             2591 sound/soc/soc-topology.c 			soc_tplg_get_hdr_offset(tplg));
tplg             2595 sound/soc/soc-topology.c 	if (tplg->pass == le32_to_cpu(hdr->type))
tplg             2596 sound/soc/soc-topology.c 		dev_dbg(tplg->dev,
tplg             2599 sound/soc/soc-topology.c 			hdr->vendor_type, tplg->pass);
tplg             2605 sound/soc/soc-topology.c static int soc_tplg_load_header(struct soc_tplg *tplg,
tplg             2608 sound/soc/soc-topology.c 	tplg->pos = tplg->hdr_pos + sizeof(struct snd_soc_tplg_hdr);
tplg             2611 sound/soc/soc-topology.c 	if (le32_to_cpu(hdr->index) != tplg->req_index &&
tplg             2612 sound/soc/soc-topology.c 		tplg->req_index != SND_SOC_TPLG_INDEX_ALL)
tplg             2615 sound/soc/soc-topology.c 	tplg->index = le32_to_cpu(hdr->index);
tplg             2621 sound/soc/soc-topology.c 		return soc_tplg_kcontrol_elems_load(tplg, hdr);
tplg             2623 sound/soc/soc-topology.c 		return soc_tplg_dapm_graph_elems_load(tplg, hdr);
tplg             2625 sound/soc/soc-topology.c 		return soc_tplg_dapm_widget_elems_load(tplg, hdr);
tplg             2627 sound/soc/soc-topology.c 		return soc_tplg_pcm_elems_load(tplg, hdr);
tplg             2629 sound/soc/soc-topology.c 		return soc_tplg_dai_elems_load(tplg, hdr);
tplg             2633 sound/soc/soc-topology.c 		return soc_tplg_link_elems_load(tplg, hdr);
tplg             2635 sound/soc/soc-topology.c 		return soc_tplg_manifest_load(tplg, hdr);
tplg             2638 sound/soc/soc-topology.c 		return soc_tplg_vendor_load(tplg, hdr);
tplg             2645 sound/soc/soc-topology.c static int soc_tplg_process_headers(struct soc_tplg *tplg)
tplg             2650 sound/soc/soc-topology.c 	tplg->pass = SOC_TPLG_PASS_START;
tplg             2653 sound/soc/soc-topology.c 	while (tplg->pass <= SOC_TPLG_PASS_END) {
tplg             2655 sound/soc/soc-topology.c 		tplg->hdr_pos = tplg->fw->data;
tplg             2656 sound/soc/soc-topology.c 		hdr = (struct snd_soc_tplg_hdr *)tplg->hdr_pos;
tplg             2658 sound/soc/soc-topology.c 		while (!soc_tplg_is_eof(tplg)) {
tplg             2661 sound/soc/soc-topology.c 			ret = soc_valid_header(tplg, hdr);
tplg             2668 sound/soc/soc-topology.c 			ret = soc_tplg_load_header(tplg, hdr);
tplg             2673 sound/soc/soc-topology.c 			tplg->hdr_pos += le32_to_cpu(hdr->payload_size) +
tplg             2675 sound/soc/soc-topology.c 			hdr = (struct snd_soc_tplg_hdr *)tplg->hdr_pos;
tplg             2679 sound/soc/soc-topology.c 		tplg->pass++;
tplg             2683 sound/soc/soc-topology.c 	ret = soc_tplg_dapm_complete(tplg);
tplg             2685 sound/soc/soc-topology.c 		dev_err(tplg->dev,
tplg             2691 sound/soc/soc-topology.c static int soc_tplg_load(struct soc_tplg *tplg)
tplg             2695 sound/soc/soc-topology.c 	ret = soc_tplg_process_headers(tplg);
tplg             2697 sound/soc/soc-topology.c 		soc_tplg_complete(tplg);
tplg             2706 sound/soc/soc-topology.c 	struct soc_tplg tplg;
tplg             2710 sound/soc/soc-topology.c 	memset(&tplg, 0, sizeof(tplg));
tplg             2711 sound/soc/soc-topology.c 	tplg.fw = fw;
tplg             2712 sound/soc/soc-topology.c 	tplg.dev = comp->dev;
tplg             2713 sound/soc/soc-topology.c 	tplg.comp = comp;
tplg             2714 sound/soc/soc-topology.c 	tplg.ops = ops;
tplg             2715 sound/soc/soc-topology.c 	tplg.req_index = id;
tplg             2716 sound/soc/soc-topology.c 	tplg.io_ops = ops->io_ops;
tplg             2717 sound/soc/soc-topology.c 	tplg.io_ops_count = ops->io_ops_count;
tplg             2718 sound/soc/soc-topology.c 	tplg.bytes_ext_ops = ops->bytes_ext_ops;
tplg             2719 sound/soc/soc-topology.c 	tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;
tplg             2721 sound/soc/soc-topology.c 	ret = soc_tplg_load(&tplg);