ASoC: Intel: Skylake: Remove memory available check
Current memory availability check is a stub, while actual memory management takes place in firmware. Leave this task to firmware entirely and remove redundant code. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20190723145854.8527-5-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f2a167ca68
commit
e5c29dc522
|
@ -109,49 +109,6 @@ static int is_skl_dsp_widget_type(struct snd_soc_dapm_widget *w,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Each pipelines needs memory to be allocated. Check if we have free memory
|
|
||||||
* from available pool.
|
|
||||||
*/
|
|
||||||
static bool skl_is_pipe_mem_avail(struct skl_dev *skl,
|
|
||||||
struct skl_module_cfg *mconfig)
|
|
||||||
{
|
|
||||||
if (skl->resource.mem + mconfig->pipe->memory_pages >
|
|
||||||
skl->resource.max_mem) {
|
|
||||||
dev_err(skl->dev,
|
|
||||||
"%s: module_id %d instance %d\n", __func__,
|
|
||||||
mconfig->id.module_id,
|
|
||||||
mconfig->id.instance_id);
|
|
||||||
dev_err(skl->dev,
|
|
||||||
"exceeds ppl memory available %d mem %d\n",
|
|
||||||
skl->resource.max_mem, skl->resource.mem);
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add the mem to the mem pool. This is freed when pipe is deleted.
|
|
||||||
* Note: DSP does actual memory management we only keep track for complete
|
|
||||||
* pool
|
|
||||||
*/
|
|
||||||
static void skl_tplg_alloc_pipe_mem(struct skl_dev *skl,
|
|
||||||
struct skl_module_cfg *mconfig)
|
|
||||||
{
|
|
||||||
skl->resource.mem += mconfig->pipe->memory_pages;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Free the memory when tearing down
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
skl_tplg_free_pipe_mem(struct skl_dev *skl, struct skl_module_cfg *mconfig)
|
|
||||||
{
|
|
||||||
skl->resource.mem -= mconfig->pipe->memory_pages;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void skl_dump_mconfig(struct skl_dev *skl, struct skl_module_cfg *mcfg)
|
static void skl_dump_mconfig(struct skl_dev *skl, struct skl_module_cfg *mcfg)
|
||||||
{
|
{
|
||||||
struct skl_module_iface *iface = &mcfg->module->formats[0];
|
struct skl_module_iface *iface = &mcfg->module->formats[0];
|
||||||
|
@ -681,7 +638,6 @@ skl_tplg_get_pipe_config(struct skl_dev *skl, struct skl_module_cfg *mconfig)
|
||||||
/*
|
/*
|
||||||
* Mixer module represents a pipeline. So in the Pre-PMU event of mixer we
|
* Mixer module represents a pipeline. So in the Pre-PMU event of mixer we
|
||||||
* need create the pipeline. So we do following:
|
* need create the pipeline. So we do following:
|
||||||
* - check the resources
|
|
||||||
* - Create the pipeline
|
* - Create the pipeline
|
||||||
* - Initialize the modules in pipeline
|
* - Initialize the modules in pipeline
|
||||||
* - finally bind all modules together
|
* - finally bind all modules together
|
||||||
|
@ -700,9 +656,6 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (!skl_is_pipe_mem_avail(skl, mconfig))
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a list of modules for pipe.
|
* Create a list of modules for pipe.
|
||||||
* This list contains modules from source to sink
|
* This list contains modules from source to sink
|
||||||
|
@ -711,8 +664,6 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
skl_tplg_alloc_pipe_mem(skl, mconfig);
|
|
||||||
|
|
||||||
/* Init all pipe modules from source to sink */
|
/* Init all pipe modules from source to sink */
|
||||||
ret = skl_tplg_init_pipe_modules(skl, s_pipe);
|
ret = skl_tplg_init_pipe_modules(skl, s_pipe);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -1207,7 +1158,6 @@ static int skl_tplg_mixer_dapm_pre_pmd_event(struct snd_soc_dapm_widget *w,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* in the Post-PMD event of mixer we need to do following:
|
* in the Post-PMD event of mixer we need to do following:
|
||||||
* - Free the mem used
|
|
||||||
* - Unbind the modules within the pipeline
|
* - Unbind the modules within the pipeline
|
||||||
* - Delete the pipeline (modules are not required to be explicitly
|
* - Delete the pipeline (modules are not required to be explicitly
|
||||||
* deleted, pipeline delete is enough here
|
* deleted, pipeline delete is enough here
|
||||||
|
@ -1224,8 +1174,6 @@ static int skl_tplg_mixer_dapm_post_pmd_event(struct snd_soc_dapm_widget *w,
|
||||||
if (s_pipe->state == SKL_PIPE_INVALID)
|
if (s_pipe->state == SKL_PIPE_INVALID)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
skl_tplg_free_pipe_mem(skl, mconfig);
|
|
||||||
|
|
||||||
list_for_each_entry(w_module, &s_pipe->w_list, node) {
|
list_for_each_entry(w_module, &s_pipe->w_list, node) {
|
||||||
if (list_empty(&skl->bind_list))
|
if (list_empty(&skl->bind_list))
|
||||||
break;
|
break;
|
||||||
|
@ -2921,8 +2869,6 @@ void skl_cleanup_resources(struct skl_dev *skl)
|
||||||
if (!card || !card->instantiated)
|
if (!card || !card->instantiated)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
skl->resource.mem = 0;
|
|
||||||
|
|
||||||
list_for_each_entry(w, &card->widgets, list) {
|
list_for_each_entry(w, &card->widgets, list) {
|
||||||
if (is_skl_dsp_widget_type(w, skl->dev) && w->priv != NULL)
|
if (is_skl_dsp_widget_type(w, skl->dev) && w->priv != NULL)
|
||||||
skl_clear_pin_config(soc_component, w);
|
skl_clear_pin_config(soc_component, w);
|
||||||
|
@ -3619,9 +3565,6 @@ static void skl_tplg_set_pipe_type(struct skl_dev *skl, struct skl_pipe *pipe)
|
||||||
pipe->passthru = false;
|
pipe->passthru = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This will be read from topology manifest, currently defined here */
|
|
||||||
#define SKL_FW_MAX_MEM 1000000
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SKL topology init routine
|
* SKL topology init routine
|
||||||
*/
|
*/
|
||||||
|
@ -3656,8 +3599,6 @@ int skl_tplg_init(struct snd_soc_component *component, struct hdac_bus *bus)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
skl->resource.max_mem = SKL_FW_MAX_MEM;
|
|
||||||
|
|
||||||
skl->tplg = fw;
|
skl->tplg = fw;
|
||||||
ret = skl_tplg_create_pipe_widget_list(component);
|
ret = skl_tplg_create_pipe_widget_list(component);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
|
@ -41,11 +41,6 @@
|
||||||
#define AZX_VS_EM2_DUM BIT(23)
|
#define AZX_VS_EM2_DUM BIT(23)
|
||||||
#define AZX_REG_VS_EM2_L1SEN BIT(13)
|
#define AZX_REG_VS_EM2_L1SEN BIT(13)
|
||||||
|
|
||||||
struct skl_dsp_resource {
|
|
||||||
u32 max_mem;
|
|
||||||
u32 mem;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct skl_debug;
|
struct skl_debug;
|
||||||
|
|
||||||
struct skl_astate_param {
|
struct skl_astate_param {
|
||||||
|
@ -75,7 +70,6 @@ struct skl_dev {
|
||||||
|
|
||||||
struct nhlt_acpi_table *nhlt; /* nhlt ptr */
|
struct nhlt_acpi_table *nhlt; /* nhlt ptr */
|
||||||
|
|
||||||
struct skl_dsp_resource resource;
|
|
||||||
struct list_head ppl_list;
|
struct list_head ppl_list;
|
||||||
struct list_head bind_list;
|
struct list_head bind_list;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue