mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-27 03:49:57 -04:00
ASoC: SOF: topology: dynamically allocate and store DAI widget->private
For dspless mode, we need to allocate and store an 'sdai' structure. The existing code allocate the data on the stack and does not set the widget->private pointer. This minor change should not have any impact on existing DAIs, even when the DSP is used. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://msgid.link/r/20240213101247.28887-10-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
daa09d0615
commit
743eb6c68d
@@ -46,7 +46,6 @@ static int sof_widget_free_unlocked(struct snd_sof_dev *sdev,
|
||||
{
|
||||
const struct sof_ipc_tplg_ops *tplg_ops = sof_ipc_get_ops(sdev, tplg);
|
||||
struct snd_sof_pipeline *spipe = swidget->spipe;
|
||||
struct snd_sof_widget *pipe_widget;
|
||||
int err = 0;
|
||||
int ret;
|
||||
|
||||
@@ -59,8 +58,6 @@ static int sof_widget_free_unlocked(struct snd_sof_dev *sdev,
|
||||
if (--swidget->use_count)
|
||||
return 0;
|
||||
|
||||
pipe_widget = swidget->spipe->pipe_widget;
|
||||
|
||||
/* reset route setup status for all routes that contain this widget */
|
||||
sof_reset_route_setup_status(sdev, swidget);
|
||||
|
||||
@@ -109,8 +106,9 @@ static int sof_widget_free_unlocked(struct snd_sof_dev *sdev,
|
||||
* free the scheduler widget (same as pipe_widget) associated with the current swidget.
|
||||
* skip for static pipelines
|
||||
*/
|
||||
if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) {
|
||||
ret = sof_widget_free_unlocked(sdev, pipe_widget);
|
||||
if (swidget->spipe && swidget->dynamic_pipeline_widget &&
|
||||
swidget->id != snd_soc_dapm_scheduler) {
|
||||
ret = sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget);
|
||||
if (ret < 0 && !err)
|
||||
err = ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user