ASoC: SOF: Intel: MTL: conditionally wake WPIO1PG domain
authorYong Zhi <yong.zhi@intel.com>
Thu, 6 Apr 2023 15:44:54 +0000 (10:44 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 6 Apr 2023 17:04:23 +0000 (18:04 +0100)
Wake IO1 from power gating if there is SoundWire enabled link discovered
by ACPI scan.

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230406154454.18163-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/mtl.c

index 58959c24cb71d19dfdf646cb90fc5f11e208a104..882ce5536ab65547a2e2b090796aaa14d4d8da79 100644 (file)
@@ -217,6 +217,7 @@ static int mtl_enable_interrupts(struct snd_sof_dev *sdev, bool enable)
 /* pre fw run operations */
 static int mtl_dsp_pre_fw_run(struct snd_sof_dev *sdev)
 {
+       struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata;
        u32 dsphfpwrsts;
        u32 dsphfdsscs;
        u32 cpa;
@@ -255,9 +256,11 @@ static int mtl_dsp_pre_fw_run(struct snd_sof_dev *sdev)
        if (ret < 0)
                dev_err(sdev->dev, "failed to power up gated DSP domain\n");
 
-       /* make sure SoundWire is not power-gated */
-       snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, MTL_HFPWRCTL,
-                               MTL_HfPWRCTL_WPIOXPG(1), MTL_HfPWRCTL_WPIOXPG(1));
+       /* if SoundWire is used, make sure it is not power-gated */
+       if (hdev->info.handle && hdev->info.link_mask > 0)
+               snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, MTL_HFPWRCTL,
+                                       MTL_HfPWRCTL_WPIOXPG(1), MTL_HfPWRCTL_WPIOXPG(1));
+
        return ret;
 }