ASoC: Intel: avs: Enact power gating policy
Update all firmware loading functions to also account for the power gating policy. As module loading routine is missing the chicken bits manipulation entirely, add the entire set there. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20221027124702.1761002-10-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
2a87f17775
commit
758ba92f3a
|
@ -224,11 +224,19 @@ static int avs_cldma_load_module(struct avs_dev *adev, struct avs_module_entry *
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
avs_hda_power_gating_enable(adev, false);
|
||||
avs_hda_clock_gating_enable(adev, false);
|
||||
avs_hda_l1sen_enable(adev, false);
|
||||
|
||||
hda_cldma_set_data(cl, (void *)mod->data, mod->size);
|
||||
hda_cldma_transfer(cl, msecs_to_jiffies(AVS_CLDMA_START_DELAY_MS));
|
||||
ret = avs_ipc_load_modules(adev, &mentry->module_id, 1);
|
||||
hda_cldma_stop(cl);
|
||||
|
||||
avs_hda_l1sen_enable(adev, true);
|
||||
avs_hda_clock_gating_enable(adev, true);
|
||||
avs_hda_power_gating_enable(adev, true);
|
||||
|
||||
if (ret) {
|
||||
dev_err(adev->dev, "load module %d failed: %d\n", mentry->module_id, ret);
|
||||
avs_release_last_firmware(adev);
|
||||
|
@ -605,6 +613,7 @@ int avs_dsp_boot_firmware(struct avs_dev *adev, bool purge)
|
|||
for (i = 1; i < adev->fw_cfg.max_libs_count; i++)
|
||||
memset(adev->lib_names[i], 0, AVS_LIB_NAME_SIZE);
|
||||
|
||||
avs_hda_power_gating_enable(adev, false);
|
||||
avs_hda_clock_gating_enable(adev, false);
|
||||
avs_hda_l1sen_enable(adev, false);
|
||||
|
||||
|
@ -625,6 +634,7 @@ int avs_dsp_boot_firmware(struct avs_dev *adev, bool purge)
|
|||
reenable_gating:
|
||||
avs_hda_l1sen_enable(adev, true);
|
||||
avs_hda_clock_gating_enable(adev, true);
|
||||
avs_hda_power_gating_enable(adev, true);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
|
|
@ -737,6 +737,7 @@ static int avs_component_load_libraries(struct avs_soc_component *acomp)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
avs_hda_power_gating_enable(adev, false);
|
||||
avs_hda_clock_gating_enable(adev, false);
|
||||
avs_hda_l1sen_enable(adev, false);
|
||||
|
||||
|
@ -744,6 +745,7 @@ static int avs_component_load_libraries(struct avs_soc_component *acomp)
|
|||
|
||||
avs_hda_l1sen_enable(adev, true);
|
||||
avs_hda_clock_gating_enable(adev, true);
|
||||
avs_hda_power_gating_enable(adev, true);
|
||||
|
||||
if (!ret)
|
||||
ret = avs_module_info_init(adev, false);
|
||||
|
|
Loading…
Reference in New Issue