Commit 5f3aad73 authored by Ranjani Sridharan's avatar Ranjani Sridharan Committed by Mark Brown
parent 0a2dea1f
......@@ -64,6 +64,25 @@ static int sof_dai_config_setup(struct snd_sof_dev *sdev, struct snd_sof_dai *da
return ret;
}
static int sof_widget_kcontrol_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
{
struct snd_sof_control *scontrol;
int ret;
/* set up all controls for the widget */
list_for_each_entry(scontrol, &sdev->kcontrol_list, list)
if (scontrol->comp_id == swidget->comp_id) {
ret = sof_kcontrol_setup(sdev, scontrol);
if (ret < 0) {
dev_err(sdev->dev, "error: fail to set up kcontrols for widget %s\n",
swidget->widget->name);
return ret;
}
}
return 0;
}
static int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
{
struct sof_ipc_pipe_new *pipeline;
......@@ -113,10 +132,20 @@ static int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swi
&r, sizeof(r));
break;
}
if (ret < 0)
if (ret < 0) {
dev_err(sdev->dev, "error: failed to load widget %s\n", swidget->widget->name);
else
dev_dbg(sdev->dev, "widget %s setup complete\n", swidget->widget->name);
return ret;
}
/* restore kcontrols for widget */
ret = sof_widget_kcontrol_setup(sdev, swidget);
if (ret < 0) {
dev_err(sdev->dev, "error: failed to restore kcontrols for widget %s\n",
swidget->widget->name);
return ret;
}
dev_dbg(sdev->dev, "widget %s setup complete\n", swidget->widget->name);
return ret;
}
......@@ -203,22 +232,6 @@ int sof_set_hw_params_upon_resume(struct device *dev)
return snd_sof_dsp_hw_params_upon_resume(sdev);
}
static int sof_restore_kcontrols(struct device *dev)
{
struct snd_sof_dev *sdev = dev_get_drvdata(dev);
struct snd_sof_control *scontrol;
int ret = 0;
/* restore kcontrol values */
list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
ret = sof_kcontrol_setup(sdev, scontrol);
if (ret < 0)
return ret;
}
return 0;
}
const struct sof_ipc_pipe_new *snd_sof_pipeline_find(struct snd_sof_dev *sdev,
int pipeline_id)
{
......@@ -309,13 +322,7 @@ int sof_restore_pipelines(struct device *dev)
}
}
/* restore pipeline kcontrols */
ret = sof_restore_kcontrols(dev);
if (ret < 0)
dev_err(dev,
"error: restoring kcontrols after resume\n");
return ret;
return 0;
}
/* This function doesn't free widgets. It only resets the set up status for all routes */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment