ASoC: SOF: Intel: byt: Add PM callbacks
Add the PM callbacks for BYT/CHT platforms. Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Link: https://lore.kernel.org/r/20200526203640.25980-2-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
0d71a5cf69
commit
ddcccd543f
1 changed files with 36 additions and 0 deletions
|
@ -428,6 +428,34 @@ static void byt_set_mach_params(const struct snd_soc_acpi_mach *mach,
|
||||||
mach_params->platform = dev_name(dev);
|
mach_params->platform = dev_name(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void byt_reset_dsp_disable_int(struct snd_sof_dev *sdev)
|
||||||
|
{
|
||||||
|
/* Disable Interrupt from both sides */
|
||||||
|
snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, 0x3, 0x3);
|
||||||
|
snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRD, 0x3, 0x3);
|
||||||
|
|
||||||
|
/* Put DSP into reset, set reset vector */
|
||||||
|
snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_CSR,
|
||||||
|
SHIM_BYT_CSR_RST | SHIM_BYT_CSR_VECTOR_SEL,
|
||||||
|
SHIM_BYT_CSR_RST | SHIM_BYT_CSR_VECTOR_SEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int byt_suspend(struct snd_sof_dev *sdev, u32 target_state)
|
||||||
|
{
|
||||||
|
byt_reset_dsp_disable_int(sdev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int byt_resume(struct snd_sof_dev *sdev)
|
||||||
|
{
|
||||||
|
/* Enable Interrupt from both sides */
|
||||||
|
snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, 0x3, 0x0);
|
||||||
|
snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRD, 0x3, 0x0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Baytrail DAIs */
|
/* Baytrail DAIs */
|
||||||
static struct snd_soc_dai_driver byt_dai[] = {
|
static struct snd_soc_dai_driver byt_dai[] = {
|
||||||
{
|
{
|
||||||
|
@ -832,6 +860,10 @@ const struct snd_sof_dsp_ops sof_byt_ops = {
|
||||||
/*Firmware loading */
|
/*Firmware loading */
|
||||||
.load_firmware = snd_sof_load_firmware_memcpy,
|
.load_firmware = snd_sof_load_firmware_memcpy,
|
||||||
|
|
||||||
|
/* PM */
|
||||||
|
.suspend = byt_suspend,
|
||||||
|
.resume = byt_resume,
|
||||||
|
|
||||||
/* DAI drivers */
|
/* DAI drivers */
|
||||||
.drv = byt_dai,
|
.drv = byt_dai,
|
||||||
.num_drv = 3, /* we have only 3 SSPs on byt*/
|
.num_drv = 3, /* we have only 3 SSPs on byt*/
|
||||||
|
@ -906,6 +938,10 @@ const struct snd_sof_dsp_ops sof_cht_ops = {
|
||||||
/*Firmware loading */
|
/*Firmware loading */
|
||||||
.load_firmware = snd_sof_load_firmware_memcpy,
|
.load_firmware = snd_sof_load_firmware_memcpy,
|
||||||
|
|
||||||
|
/* PM */
|
||||||
|
.suspend = byt_suspend,
|
||||||
|
.resume = byt_resume,
|
||||||
|
|
||||||
/* DAI drivers */
|
/* DAI drivers */
|
||||||
.drv = byt_dai,
|
.drv = byt_dai,
|
||||||
/* all 6 SSPs may be available for cherrytrail */
|
/* all 6 SSPs may be available for cherrytrail */
|
||||||
|
|
Loading…
Add table
Reference in a new issue