Lines Matching refs:link
95 /* build a PCM (FE DAI & DAI link) element */
127 /* build all PCM (FE DAI & DAI link) elements */
232 struct snd_soc_tplg_link_config *link = elem->link;
237 err = tplg_build_stream_cfg(tplg, link->stream,
238 link->num_streams, elem->index);
254 " referenced by link '%s'",
259 memcpy(&link->hw_config[num_hw_configs],
269 link = elem->link; /* realloc */
277 /* add link to manifest */
283 /* build physical DAI link configurations */
740 /* Parse name and id of a front-end DAI (ie. cpu dai of a FE DAI link) */
839 /* Parse PCM (for front end DAI & DAI link) in text conf file */
1137 /* parse physical link runtime supported HW configs in text conf file */
1142 struct snd_soc_tplg_link_config *link = elem->link;
1148 link->num_hw_configs = err;
1152 /* Parse a physical link element in text conf file */
1156 struct snd_soc_tplg_link_config *link;
1167 link = elem->link;
1168 link->size = elem->size;
1169 snd_strlcpy(link->name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
1186 if (parse_unsigned(n, &link->id))
1195 snd_strlcpy(link->stream_name, val,
1209 if (parse_unsigned(n, &link->default_hw_config_id))
1218 &link->flag_mask, &link->flags);
1227 &link->flag_mask, &link->flags);
1236 &link->flag_mask, &link->flags);
1245 &link->flag_mask, &link->flags);
1263 /* save physical link */
1268 struct snd_soc_tplg_link_config *link = elem->link;
1272 if (!link)
1279 if (err >= 0 && link->id)
1281 link->id);
1282 if (err >= 0 && link->stream_name[0])
1284 link->stream_name);
1285 if (err >= 0 && link->default_hw_config_id)
1287 link->default_hw_config_id);
1289 err = save_flags(link->flags, link->flag_mask, dst, pfx);
1305 struct snd_soc_tplg_link_config *link;
1315 link = elem->link;
1316 link->size = elem->size;
1333 if (parse_unsigned(n, &link->id))
1348 struct snd_soc_tplg_link_config *link = elem->link;
1352 if (!link)
1359 if (err >= 0 && link->id)
1361 link->id);
1777 /* Add a PCM element (FE DAI & DAI link) from C API */
1838 /* Set link HW config from C API template */
1879 /* Add a physical DAI link element from C API */
1882 struct snd_tplg_link_template *link_tpl = t->link;
1883 struct snd_soc_tplg_link_config *link;
1899 link = elem->link;
1900 link->size = elem->size;
1903 link->id = link_tpl->id;
1904 snd_strlcpy(link->name, link_tpl->name,
1906 snd_strlcpy(link->stream_name, link_tpl->stream_name,
1912 link->num_streams = link_tpl->num_streams;
1913 for (i = 0; i < link->num_streams; i++)
1914 tplg_add_stream_object(&link->stream[i], &link_tpl->stream[i]);
1919 link->num_hw_configs = link_tpl->num_hw_configs;
1920 link->default_hw_config_id = link_tpl->default_hw_config_id;
1921 for (i = 0; i < link->num_hw_configs; i++)
1922 set_link_hw_config(&link->hw_config[i], &link_tpl->hw_config[i]);
1925 link->flag_mask = link_tpl->flag_mask;
1926 link->flags = link_tpl->flags;
2141 /* decode link from the binary input */
2147 struct snd_soc_tplg_link_config *link;
2165 link = bin;
2167 if (size < sizeof(*link)) {
2168 SNDERR("link: small size %d", size);
2171 if (sizeof(*link) != link->size) {
2172 SNDERR("link: unknown element size %d (expected %zd)",
2173 link->size, sizeof(*link));
2176 if (link->num_streams > SND_SOC_TPLG_STREAM_CONFIG_MAX) {
2177 SNDERR("link: wrong number of streams %d", link->num_streams);
2180 if (link->num_hw_configs > SND_SOC_TPLG_HW_CONFIG_MAX) {
2181 SNDERR("link: wrong number of streams %d", link->num_streams);
2184 if (sizeof(*link) + link->priv.size > size) {
2185 SNDERR("link: wrong private data size %d", link->priv.size);
2189 tplg_log(tplg, 'D', pos, "link: size %d private size %d streams %d "
2191 link->size, link->priv.size, link->num_streams,
2192 link->num_hw_configs);
2194 lt.id = link->id;
2195 lt.name = link->name;
2196 tplg_log(tplg, 'D', pos, "link: name '%s'", lt.name);
2197 lt.stream_name = link->stream_name;
2198 tplg_log(tplg, 'D', pos, "link: stream_name '%s'", lt.stream_name);
2199 lt.num_streams = link->num_streams;
2200 lt.num_hw_configs = link->num_hw_configs;
2201 lt.default_hw_config_id = link->default_hw_config_id;
2202 lt.flag_mask = link->flag_mask;
2203 lt.flags = link->flags;
2204 for (i = 0; i < link->num_streams; i++) {
2206 if (link->stream[i].size != sizeof(link->stream[0])) {
2207 SNDERR("link: unknown stream structure size %d",
2208 link->stream[i].size);
2211 stream->name = link->stream[i].name;
2215 stream->format = link->stream[i].format;
2216 stream->rate = link->stream[i].rate;
2217 stream->period_bytes = link->stream[i].period_bytes;
2218 stream->buffer_bytes = link->stream[i].buffer_bytes;
2219 stream->channels = link->stream[i].channels;
2222 for (i = 0; i < link->num_hw_configs; i++) {
2224 if (link->hw_config[i].size != sizeof(link->hw_config[0])) {
2225 SNDERR("link: unknown hw_config structure size %d",
2226 link->hw_config[i].size);
2229 hw->id = link->hw_config[i].id;
2230 hw->fmt = link->hw_config[i].fmt;
2231 hw->clock_gated = link->hw_config[i].clock_gated;
2232 hw->invert_bclk = link->hw_config[i].invert_bclk;
2233 hw->invert_fsync = link->hw_config[i].invert_fsync;
2234 hw->bclk_provider = link->hw_config[i].bclk_provider;
2235 hw->fsync_provider = link->hw_config[i].fsync_provider;
2236 hw->mclk_direction = link->hw_config[i].mclk_direction;
2237 hw->mclk_rate = link->hw_config[i].mclk_rate;
2238 hw->bclk_rate = link->hw_config[i].bclk_rate;
2239 hw->fsync_rate = link->hw_config[i].fsync_rate;
2240 hw->tdm_slots = link->hw_config[i].tdm_slots;
2241 hw->tdm_slot_width = link->hw_config[i].tdm_slot_width;
2242 hw->tx_slots = link->hw_config[i].tx_slots;
2243 hw->rx_slots = link->hw_config[i].rx_slots;
2244 hw->tx_channels = link->hw_config[i].tx_channels;
2246 SNDERR("link: wrong tx channels %d", hw->tx_channels);
2250 hw->tx_chanmap[j] = link->hw_config[i].tx_chanmap[j];
2251 hw->rx_channels = link->hw_config[i].rx_channels;
2253 SNDERR("link: wrong rx channels %d", hw->tx_channels);
2257 hw->rx_chanmap[j] = link->hw_config[i].rx_chanmap[j];
2262 "link: private start");
2263 lt.priv = &link->priv;
2265 bin += sizeof(*link) + link->priv.size;
2266 size -= sizeof(*link) + link->priv.size;
2267 pos += sizeof(*link) + link->priv.size;
2269 t.link = <