ASoC: topology: Fix build errors
The two commits:81e9b0a078
ASoC: topology: Give more data to clients via callbacks28aa6f7779
ASoC: topology: Add callback for DAPM route load/unload break the build so revert them. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
221dd96c30
Коммит
24ada03555
|
@ -30,9 +30,6 @@ struct snd_soc_dapm_context;
|
||||||
struct snd_soc_card;
|
struct snd_soc_card;
|
||||||
struct snd_kcontrol_new;
|
struct snd_kcontrol_new;
|
||||||
struct snd_soc_dai_link;
|
struct snd_soc_dai_link;
|
||||||
struct snd_soc_dai_driver;
|
|
||||||
struct snd_soc_dai;
|
|
||||||
struct snd_soc_dapm_route;
|
|
||||||
|
|
||||||
/* object scan be loaded and unloaded in groups with identfying indexes */
|
/* object scan be loaded and unloaded in groups with identfying indexes */
|
||||||
#define SND_SOC_TPLG_INDEX_ALL 0 /* ID that matches all FW objects */
|
#define SND_SOC_TPLG_INDEX_ALL 0 /* ID that matches all FW objects */
|
||||||
|
@ -112,44 +109,35 @@ struct snd_soc_tplg_widget_events {
|
||||||
struct snd_soc_tplg_ops {
|
struct snd_soc_tplg_ops {
|
||||||
|
|
||||||
/* external kcontrol init - used for any driver specific init */
|
/* external kcontrol init - used for any driver specific init */
|
||||||
int (*control_load)(struct snd_soc_component *, int index,
|
int (*control_load)(struct snd_soc_component *,
|
||||||
struct snd_kcontrol_new *, struct snd_soc_tplg_ctl_hdr *);
|
struct snd_kcontrol_new *, struct snd_soc_tplg_ctl_hdr *);
|
||||||
int (*control_unload)(struct snd_soc_component *,
|
int (*control_unload)(struct snd_soc_component *,
|
||||||
struct snd_soc_dobj *);
|
struct snd_soc_dobj *);
|
||||||
|
|
||||||
/* DAPM graph route element loading and unloading */
|
|
||||||
int (*dapm_route_load)(struct snd_soc_component *, int index,
|
|
||||||
struct snd_soc_dapm_route *route);
|
|
||||||
int (*dapm_route_unload)(struct snd_soc_component *,
|
|
||||||
struct snd_soc_dobj *);
|
|
||||||
|
|
||||||
/* external widget init - used for any driver specific init */
|
/* external widget init - used for any driver specific init */
|
||||||
int (*widget_load)(struct snd_soc_component *, int index,
|
int (*widget_load)(struct snd_soc_component *,
|
||||||
struct snd_soc_dapm_widget *,
|
struct snd_soc_dapm_widget *,
|
||||||
struct snd_soc_tplg_dapm_widget *);
|
struct snd_soc_tplg_dapm_widget *);
|
||||||
int (*widget_ready)(struct snd_soc_component *, int index,
|
int (*widget_ready)(struct snd_soc_component *,
|
||||||
struct snd_soc_dapm_widget *,
|
struct snd_soc_dapm_widget *,
|
||||||
struct snd_soc_tplg_dapm_widget *);
|
struct snd_soc_tplg_dapm_widget *);
|
||||||
int (*widget_unload)(struct snd_soc_component *,
|
int (*widget_unload)(struct snd_soc_component *,
|
||||||
struct snd_soc_dobj *);
|
struct snd_soc_dobj *);
|
||||||
|
|
||||||
/* FE DAI - used for any driver specific init */
|
/* FE DAI - used for any driver specific init */
|
||||||
int (*dai_load)(struct snd_soc_component *, int index,
|
int (*dai_load)(struct snd_soc_component *,
|
||||||
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);
|
|
||||||
|
|
||||||
int (*dai_unload)(struct snd_soc_component *,
|
int (*dai_unload)(struct snd_soc_component *,
|
||||||
struct snd_soc_dobj *);
|
struct snd_soc_dobj *);
|
||||||
|
|
||||||
/* DAI link - used for any driver specific init */
|
/* DAI link - used for any driver specific init */
|
||||||
int (*link_load)(struct snd_soc_component *, int index,
|
int (*link_load)(struct snd_soc_component *,
|
||||||
struct snd_soc_dai_link *link,
|
struct snd_soc_dai_link *link);
|
||||||
struct snd_soc_tplg_link_config *cfg);
|
|
||||||
int (*link_unload)(struct snd_soc_component *,
|
int (*link_unload)(struct snd_soc_component *,
|
||||||
struct snd_soc_dobj *);
|
struct snd_soc_dobj *);
|
||||||
|
|
||||||
/* callback to handle vendor bespoke data */
|
/* callback to handle vendor bespoke data */
|
||||||
int (*vendor_load)(struct snd_soc_component *, int index,
|
int (*vendor_load)(struct snd_soc_component *,
|
||||||
struct snd_soc_tplg_hdr *);
|
struct snd_soc_tplg_hdr *);
|
||||||
int (*vendor_unload)(struct snd_soc_component *,
|
int (*vendor_unload)(struct snd_soc_component *,
|
||||||
struct snd_soc_tplg_hdr *);
|
struct snd_soc_tplg_hdr *);
|
||||||
|
@ -158,7 +146,7 @@ struct snd_soc_tplg_ops {
|
||||||
void (*complete)(struct snd_soc_component *);
|
void (*complete)(struct snd_soc_component *);
|
||||||
|
|
||||||
/* manifest - optional to inform component of manifest */
|
/* manifest - optional to inform component of manifest */
|
||||||
int (*manifest)(struct snd_soc_component *, int index,
|
int (*manifest)(struct snd_soc_component *,
|
||||||
struct snd_soc_tplg_manifest *);
|
struct snd_soc_tplg_manifest *);
|
||||||
|
|
||||||
/* vendor specific kcontrol handlers available for binding */
|
/* vendor specific kcontrol handlers available for binding */
|
||||||
|
|
|
@ -1017,11 +1017,10 @@ static struct snd_soc_dai_driver skl_platform_dai[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
int skl_dai_load(struct snd_soc_component *cmp, int index,
|
int skl_dai_load(struct snd_soc_component *cmp,
|
||||||
struct snd_soc_dai_driver *dai_drv,
|
struct snd_soc_dai_driver *pcm_dai)
|
||||||
struct snd_soc_tplg_pcm *pcm, struct snd_soc_dai *dai)
|
|
||||||
{
|
{
|
||||||
dai_drv->ops = &skl_pcm_dai_ops;
|
pcm_dai->ops = &skl_pcm_dai_ops;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2851,7 +2851,7 @@ void skl_cleanup_resources(struct skl *skl)
|
||||||
* information to the driver about module and pipeline parameters which DSP
|
* information to the driver about module and pipeline parameters which DSP
|
||||||
* FW expects like ids, resource values, formats etc
|
* FW expects like ids, resource values, formats etc
|
||||||
*/
|
*/
|
||||||
static int skl_tplg_widget_load(struct snd_soc_component *cmpnt, int index,
|
static int skl_tplg_widget_load(struct snd_soc_component *cmpnt,
|
||||||
struct snd_soc_dapm_widget *w,
|
struct snd_soc_dapm_widget *w,
|
||||||
struct snd_soc_tplg_dapm_widget *tplg_w)
|
struct snd_soc_tplg_dapm_widget *tplg_w)
|
||||||
{
|
{
|
||||||
|
@ -2958,7 +2958,6 @@ static int skl_init_enum_data(struct device *dev, struct soc_enum *se,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int skl_tplg_control_load(struct snd_soc_component *cmpnt,
|
static int skl_tplg_control_load(struct snd_soc_component *cmpnt,
|
||||||
int index,
|
|
||||||
struct snd_kcontrol_new *kctl,
|
struct snd_kcontrol_new *kctl,
|
||||||
struct snd_soc_tplg_ctl_hdr *hdr)
|
struct snd_soc_tplg_ctl_hdr *hdr)
|
||||||
{
|
{
|
||||||
|
@ -3447,7 +3446,7 @@ static int skl_tplg_get_manifest_data(struct snd_soc_tplg_manifest *manifest,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int skl_manifest_load(struct snd_soc_component *cmpnt, int index,
|
static int skl_manifest_load(struct snd_soc_component *cmpnt,
|
||||||
struct snd_soc_tplg_manifest *manifest)
|
struct snd_soc_tplg_manifest *manifest)
|
||||||
{
|
{
|
||||||
struct hdac_ext_bus *ebus = snd_soc_component_get_drvdata(cmpnt);
|
struct hdac_ext_bus *ebus = snd_soc_component_get_drvdata(cmpnt);
|
||||||
|
|
|
@ -221,9 +221,18 @@ struct skl_mod_inst_map {
|
||||||
u16 inst_id;
|
u16 inst_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct skl_uuid_inst_map {
|
||||||
|
u16 inst_id;
|
||||||
|
u16 reserved;
|
||||||
|
uuid_le mod_uuid;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
struct skl_kpb_params {
|
struct skl_kpb_params {
|
||||||
u32 num_modules;
|
u32 num_modules;
|
||||||
struct skl_mod_inst_map map[0];
|
union {
|
||||||
|
struct skl_mod_inst_map map[0];
|
||||||
|
struct skl_uuid_inst_map map_uuid[0];
|
||||||
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct skl_module_inst_id {
|
struct skl_module_inst_id {
|
||||||
|
@ -460,7 +469,7 @@ int skl_dsp_set_dma_control(struct skl_sst *ctx, u32 *caps,
|
||||||
u32 caps_size, u32 node_id);
|
u32 caps_size, u32 node_id);
|
||||||
void skl_tplg_set_be_dmic_config(struct snd_soc_dai *dai,
|
void skl_tplg_set_be_dmic_config(struct snd_soc_dai *dai,
|
||||||
struct skl_pipe_params *params, int stream);
|
struct skl_pipe_params *params, int stream);
|
||||||
int skl_tplg_init(struct snd_soc_platform *platform,
|
int skl_tplg_init(struct snd_soc_component *component,
|
||||||
struct hdac_ext_bus *ebus);
|
struct hdac_ext_bus *ebus);
|
||||||
struct skl_module_cfg *skl_tplg_fe_get_cpr_module(
|
struct skl_module_cfg *skl_tplg_fe_get_cpr_module(
|
||||||
struct snd_soc_dai *dai, int stream);
|
struct snd_soc_dai *dai, int stream);
|
||||||
|
@ -503,7 +512,8 @@ int skl_pcm_host_dma_prepare(struct device *dev,
|
||||||
int skl_pcm_link_dma_prepare(struct device *dev,
|
int skl_pcm_link_dma_prepare(struct device *dev,
|
||||||
struct skl_pipe_params *params);
|
struct skl_pipe_params *params);
|
||||||
|
|
||||||
int skl_dai_load(struct snd_soc_component *, int index,
|
int skl_dai_load(struct snd_soc_component *cmp,
|
||||||
struct snd_soc_dai_driver *dai_drv,
|
struct snd_soc_dai_driver *pcm_dai);
|
||||||
struct snd_soc_tplg_pcm *pcm, struct snd_soc_dai *dai);
|
void skl_tplg_add_moduleid_in_bind_params(struct skl *skl,
|
||||||
|
struct snd_soc_dapm_widget *w);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -315,7 +315,7 @@ static int soc_tplg_vendor_load_(struct soc_tplg *tplg,
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->vendor_load)
|
if (tplg->comp && tplg->ops && tplg->ops->vendor_load)
|
||||||
ret = tplg->ops->vendor_load(tplg->comp, tplg->index, hdr);
|
ret = tplg->ops->vendor_load(tplg->comp, hdr);
|
||||||
else {
|
else {
|
||||||
dev_err(tplg->dev, "ASoC: no vendor load callback for ID %d\n",
|
dev_err(tplg->dev, "ASoC: no vendor load callback for ID %d\n",
|
||||||
hdr->vendor_type);
|
hdr->vendor_type);
|
||||||
|
@ -347,8 +347,7 @@ static int soc_tplg_widget_load(struct soc_tplg *tplg,
|
||||||
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
||||||
{
|
{
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->widget_load)
|
if (tplg->comp && tplg->ops && tplg->ops->widget_load)
|
||||||
return tplg->ops->widget_load(tplg->comp, tplg->index, w,
|
return tplg->ops->widget_load(tplg->comp, w, tplg_w);
|
||||||
tplg_w);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -359,30 +358,27 @@ static int soc_tplg_widget_ready(struct soc_tplg *tplg,
|
||||||
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
struct snd_soc_dapm_widget *w, struct snd_soc_tplg_dapm_widget *tplg_w)
|
||||||
{
|
{
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->widget_ready)
|
if (tplg->comp && tplg->ops && tplg->ops->widget_ready)
|
||||||
return tplg->ops->widget_ready(tplg->comp, tplg->index, w,
|
return tplg->ops->widget_ready(tplg->comp, w, tplg_w);
|
||||||
tplg_w);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pass DAI configurations to component driver for extra initialization */
|
/* pass DAI configurations to component driver for extra initialization */
|
||||||
static int soc_tplg_dai_load(struct soc_tplg *tplg,
|
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)
|
if (tplg->comp && tplg->ops && tplg->ops->dai_load)
|
||||||
return tplg->ops->dai_load(tplg->comp, tplg->index, dai_drv,
|
return tplg->ops->dai_load(tplg->comp, dai_drv);
|
||||||
pcm, dai);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pass link configurations to component driver for extra initialization */
|
/* pass link configurations to component driver for extra initialization */
|
||||||
static int soc_tplg_dai_link_load(struct soc_tplg *tplg,
|
static int soc_tplg_dai_link_load(struct soc_tplg *tplg,
|
||||||
struct snd_soc_dai_link *link, struct snd_soc_tplg_link_config *cfg)
|
struct snd_soc_dai_link *link)
|
||||||
{
|
{
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->link_load)
|
if (tplg->comp && tplg->ops && tplg->ops->link_load)
|
||||||
return tplg->ops->link_load(tplg->comp, tplg->index, link, cfg);
|
return tplg->ops->link_load(tplg->comp, link);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -703,8 +699,7 @@ static int soc_tplg_init_kcontrol(struct soc_tplg *tplg,
|
||||||
struct snd_kcontrol_new *k, struct snd_soc_tplg_ctl_hdr *hdr)
|
struct snd_kcontrol_new *k, struct snd_soc_tplg_ctl_hdr *hdr)
|
||||||
{
|
{
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->control_load)
|
if (tplg->comp && tplg->ops && tplg->ops->control_load)
|
||||||
return tplg->ops->control_load(tplg->comp, tplg->index, k,
|
return tplg->ops->control_load(tplg->comp, k, hdr);
|
||||||
hdr);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1161,17 +1156,6 @@ static int soc_tplg_kcontrol_elems_load(struct soc_tplg *tplg,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* optionally pass new dynamic kcontrol to component driver. */
|
|
||||||
static int soc_tplg_add_route(struct soc_tplg *tplg,
|
|
||||||
struct snd_soc_dapm_route *route)
|
|
||||||
{
|
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->dapm_route_load)
|
|
||||||
return tplg->ops->dapm_route_load(tplg->comp, tplg->index,
|
|
||||||
route);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
|
static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
|
||||||
struct snd_soc_tplg_hdr *hdr)
|
struct snd_soc_tplg_hdr *hdr)
|
||||||
{
|
{
|
||||||
|
@ -1220,8 +1204,6 @@ static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
|
||||||
else
|
else
|
||||||
route.control = elem->control;
|
route.control = elem->control;
|
||||||
|
|
||||||
soc_tplg_add_route(tplg, &route);
|
|
||||||
|
|
||||||
/* add route, but keep going if some fail */
|
/* add route, but keep going if some fail */
|
||||||
snd_soc_dapm_add_routes(dapm, &route, 1);
|
snd_soc_dapm_add_routes(dapm, &route, 1);
|
||||||
}
|
}
|
||||||
|
@ -1776,7 +1758,7 @@ static int soc_tplg_dai_create(struct soc_tplg *tplg,
|
||||||
dai_drv->compress_new = snd_soc_new_compress;
|
dai_drv->compress_new = snd_soc_new_compress;
|
||||||
|
|
||||||
/* pass control to component driver for optional further init */
|
/* pass control to component driver for optional further init */
|
||||||
ret = soc_tplg_dai_load(tplg, dai_drv, pcm, NULL);
|
ret = soc_tplg_dai_load(tplg, dai_drv);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
||||||
kfree(dai_drv);
|
kfree(dai_drv);
|
||||||
|
@ -1846,7 +1828,7 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
||||||
set_link_flags(link, pcm->flag_mask, pcm->flags);
|
set_link_flags(link, pcm->flag_mask, pcm->flags);
|
||||||
|
|
||||||
/* pass control to component driver for optional further init */
|
/* pass control to component driver for optional further init */
|
||||||
ret = soc_tplg_dai_link_load(tplg, link, NULL);
|
ret = soc_tplg_dai_link_load(tplg, link);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(tplg->comp->dev, "ASoC: FE link loading failed\n");
|
dev_err(tplg->comp->dev, "ASoC: FE link loading failed\n");
|
||||||
kfree(link);
|
kfree(link);
|
||||||
|
@ -2154,7 +2136,7 @@ static int soc_tplg_link_config(struct soc_tplg *tplg,
|
||||||
set_link_flags(link, cfg->flag_mask, cfg->flags);
|
set_link_flags(link, cfg->flag_mask, cfg->flags);
|
||||||
|
|
||||||
/* pass control to component driver for optional further init */
|
/* pass control to component driver for optional further init */
|
||||||
ret = soc_tplg_dai_link_load(tplg, link, cfg);
|
ret = soc_tplg_dai_link_load(tplg, link);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(tplg->dev, "ASoC: physical link loading failed\n");
|
dev_err(tplg->dev, "ASoC: physical link loading failed\n");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2276,7 +2258,7 @@ static int soc_tplg_dai_config(struct soc_tplg *tplg,
|
||||||
set_dai_flags(dai_drv, d->flag_mask, d->flags);
|
set_dai_flags(dai_drv, d->flag_mask, d->flags);
|
||||||
|
|
||||||
/* pass control to component driver for optional further init */
|
/* pass control to component driver for optional further init */
|
||||||
ret = soc_tplg_dai_load(tplg, dai_drv, NULL, dai);
|
ret = soc_tplg_dai_load(tplg, dai_drv);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
dev_err(tplg->comp->dev, "ASoC: DAI loading failed\n");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2382,7 +2364,7 @@ static int soc_tplg_manifest_load(struct soc_tplg *tplg,
|
||||||
|
|
||||||
/* pass control to component driver for optional further init */
|
/* pass control to component driver for optional further init */
|
||||||
if (tplg->comp && tplg->ops && tplg->ops->manifest)
|
if (tplg->comp && tplg->ops && tplg->ops->manifest)
|
||||||
return tplg->ops->manifest(tplg->comp, tplg->index, _manifest);
|
return tplg->ops->manifest(tplg->comp, _manifest);
|
||||||
|
|
||||||
if (!abi_match) /* free the duplicated one */
|
if (!abi_match) /* free the duplicated one */
|
||||||
kfree(_manifest);
|
kfree(_manifest);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче