On Thu, 21 Mar 2019 17:10:13 +0100, Pierre-Louis Bossart wrote: > > From: Liam Girdwood <liam.r.girdwood@xxxxxxxxxxxxxxx> > > Add support for saving and restoring DSP context in D3 to host DDR. > > The suspend callback includes: suspend all pcm's stream that are running, > send CTX_SAVE ipc, drop all ipc's, release trace dma and then > power off the DSP. > > And the resume callback performs the following steps: load FW, run FW, > re-initialize trace, restore pipeline, restore the kcontrol values > and finally send the ctx restore ipc to the dsp. > > The streams that are suspended are resumed by the ALSA resume trigger. > If the streams are paused during system suspend, they are marked > explicitly so they can be restored during PAUSE_RELEASE. > > Signed-off-by: Ranjani Sridharan <ranjani.sridharan@xxxxxxxxxxxxxxx> > Signed-off-by: Liam Girdwood <liam.r.girdwood@xxxxxxxxxxxxxxx> > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > --- > sound/soc/sof/pm.c | 373 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 373 insertions(+) > create mode 100644 sound/soc/sof/pm.c > > diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c > new file mode 100644 > index 000000000000..fd0cf10bf742 > --- /dev/null > +++ b/sound/soc/sof/pm.c > @@ -0,0 +1,373 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) > +// > +// This file is provided under a dual BSD/GPLv2 license. When using or > +// redistributing this file, you may do so under either license. > +// > +// Copyright(c) 2018 Intel Corporation. All rights reserved. > +// > +// Author: Liam Girdwood <liam.r.girdwood@xxxxxxxxxxxxxxx> > +// > + > +#include "ops.h" > +#include "sof-priv.h" > + > +static int sof_restore_kcontrols(struct snd_sof_dev *sdev) > +{ > + struct snd_sof_control *scontrol = NULL; > + int ipc_cmd, ctrl_type; > + int ret = 0; > + > + /* restore kcontrol values */ > + list_for_each_entry(scontrol, &sdev->kcontrol_list, list) { > + /* reset readback offset for scontrol after resuming */ > + scontrol->readback_offset = 0; > + > + /* notify DSP of kcontrol values */ > + switch (scontrol->cmd) { > + case SOF_CTRL_CMD_VOLUME: > + /* fallthrough */ > + case SOF_CTRL_CMD_ENUM: > + /* fallthrough */ > + case SOF_CTRL_CMD_SWITCH: In such an expression, fallthrough marker is superfluous. switch (foo) { case A: case B: case C: .... thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel