|
@@ -259,7 +259,7 @@ static int soc_tplg_vendor_load_(struct soc_tplg *tplg,
|
|
|
int ret = 0;
|
|
|
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->vendor_load)
|
|
|
- ret = tplg->ops->vendor_load(tplg->comp, hdr);
|
|
|
+ ret = tplg->ops->vendor_load(tplg->comp, tplg->index, hdr);
|
|
|
else {
|
|
|
dev_err(tplg->dev, "ASoC: no vendor load callback for ID %d\n",
|
|
|
hdr->vendor_type);
|
|
@@ -291,7 +291,8 @@ static int soc_tplg_widget_load(struct soc_tplg *tplg,
|
|
|
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
|
|
{
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->widget_load)
|
|
|
- return tplg->ops->widget_load(tplg->comp, w, tplg_w);
|
|
|
+ return tplg->ops->widget_load(tplg->comp, tplg->index, w,
|
|
|
+ tplg_w);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -302,27 +303,30 @@ static int soc_tplg_widget_ready(struct soc_tplg *tplg,
|
|
|
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
|
|
{
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->widget_ready)
|
|
|
- return tplg->ops->widget_ready(tplg->comp, w, tplg_w);
|
|
|
+ return tplg->ops->widget_ready(tplg->comp, tplg->index, w,
|
|
|
+ tplg_w);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
/* pass DAI configurations to component driver for extra initialization */
|
|
|
static int soc_tplg_dai_load(struct soc_tplg *tplg,
|
|
|
- struct snd_soc_dai_driver *dai_drv)
|
|
|
+ struct snd_soc_dai_driver *dai_drv,
|
|
|
+ struct snd_soc_tplg_pcm *pcm, struct snd_soc_dai *dai)
|
|
|
{
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->dai_load)
|
|
|
- return tplg->ops->dai_load(tplg->comp, dai_drv);
|
|
|
+ return tplg->ops->dai_load(tplg->comp, tplg->index, dai_drv,
|
|
|
+ pcm, dai);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
/* pass link configurations to component driver for extra initialization */
|
|
|
static int soc_tplg_dai_link_load(struct soc_tplg *tplg,
|
|
|
- struct snd_soc_dai_link *link)
|
|
|
+ struct snd_soc_dai_link *link, struct snd_soc_tplg_link_config *cfg)
|
|
|
{
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->link_load)
|
|
|
- return tplg->ops->link_load(tplg->comp, link);
|
|
|
+ return tplg->ops->link_load(tplg->comp, tplg->index, link, cfg);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -643,7 +647,8 @@ static int soc_tplg_init_kcontrol(struct soc_tplg *tplg,
|
|
|
struct snd_kcontrol_new *k, struct snd_soc_tplg_ctl_hdr *hdr)
|
|
|
{
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->control_load)
|
|
|
- return tplg->ops->control_load(tplg->comp, k, hdr);
|
|
|
+ return tplg->ops->control_load(tplg->comp, tplg->index, k,
|
|
|
+ hdr);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -1702,7 +1707,7 @@ static int soc_tplg_dai_create(struct soc_tplg *tplg,
|
|
|
dai_drv->compress_new = snd_soc_new_compress;
|
|
|
|
|
|
/* pass control to component driver for optional further init */
|
|
|
- ret = soc_tplg_dai_load(tplg, dai_drv);
|
|
|
+ ret = soc_tplg_dai_load(tplg, dai_drv, pcm, NULL);
|
|
|
if (ret < 0) {
|
|
|
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
|
|
kfree(dai_drv);
|
|
@@ -1772,7 +1777,7 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
|
|
set_link_flags(link, pcm->flag_mask, pcm->flags);
|
|
|
|
|
|
/* pass control to component driver for optional further init */
|
|
|
- ret = soc_tplg_dai_link_load(tplg, link);
|
|
|
+ ret = soc_tplg_dai_link_load(tplg, link, NULL);
|
|
|
if (ret < 0) {
|
|
|
dev_err(tplg->comp->dev, "ASoC: FE link loading failed\n");
|
|
|
kfree(link);
|
|
@@ -2080,7 +2085,7 @@ static int soc_tplg_link_config(struct soc_tplg *tplg,
|
|
|
set_link_flags(link, cfg->flag_mask, cfg->flags);
|
|
|
|
|
|
/* pass control to component driver for optional further init */
|
|
|
- ret = soc_tplg_dai_link_load(tplg, link);
|
|
|
+ ret = soc_tplg_dai_link_load(tplg, link, cfg);
|
|
|
if (ret < 0) {
|
|
|
dev_err(tplg->dev, "ASoC: physical link loading failed\n");
|
|
|
return ret;
|
|
@@ -2202,7 +2207,7 @@ static int soc_tplg_dai_config(struct soc_tplg *tplg,
|
|
|
set_dai_flags(dai_drv, d->flag_mask, d->flags);
|
|
|
|
|
|
/* pass control to component driver for optional further init */
|
|
|
- ret = soc_tplg_dai_load(tplg, dai_drv);
|
|
|
+ ret = soc_tplg_dai_load(tplg, dai_drv, NULL, dai);
|
|
|
if (ret < 0) {
|
|
|
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
|
|
return ret;
|
|
@@ -2311,7 +2316,7 @@ static int soc_tplg_manifest_load(struct soc_tplg *tplg,
|
|
|
|
|
|
/* pass control to component driver for optional further init */
|
|
|
if (tplg->comp && tplg->ops && tplg->ops->manifest)
|
|
|
- return tplg->ops->manifest(tplg->comp, _manifest);
|
|
|
+ return tplg->ops->manifest(tplg->comp, tplg->index, _manifest);
|
|
|
|
|
|
if (!abi_match) /* free the duplicated one */
|
|
|
kfree(_manifest);
|