ASoC: SOF: Intel: regroup all SoundWire/Intel functions in hda.c
To avoid circular dependencies between SOF/Intel and SoundWire/Intel, we need to split the top-level hda.c from the rest of the code. This patch first regroups all SoundWire related code in hda.c. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20240503135221.229202-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9e7fd21ab0
commit
e4c6eba86d
@ -15,7 +15,6 @@
|
||||
* Hardware interface for HDA DSP code loader
|
||||
*/
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <sound/hdaudio_ext.h>
|
||||
#include <sound/hda_register.h>
|
||||
@ -651,45 +650,6 @@ cleanup:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* pre fw run operations */
|
||||
int hda_dsp_pre_fw_run(struct snd_sof_dev *sdev)
|
||||
{
|
||||
/* disable clock gating and power gating */
|
||||
return hda_dsp_ctrl_clock_power_gating(sdev, false);
|
||||
}
|
||||
|
||||
/* post fw run operations */
|
||||
int hda_dsp_post_fw_run(struct snd_sof_dev *sdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (sdev->first_boot) {
|
||||
struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata;
|
||||
|
||||
ret = hda_sdw_startup(sdev);
|
||||
if (ret < 0) {
|
||||
dev_err(sdev->dev,
|
||||
"error: could not startup SoundWire links\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Check if IMR boot is usable */
|
||||
if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT) &&
|
||||
(sdev->fw_ready.flags & SOF_IPC_INFO_D3_PERSISTENT ||
|
||||
sdev->pdata->ipc_type == SOF_IPC_TYPE_4)) {
|
||||
hdev->imrboot_supported = true;
|
||||
debugfs_create_bool("skip_imr_boot",
|
||||
0644, sdev->debugfs_root,
|
||||
&hdev->skip_imr_boot);
|
||||
}
|
||||
}
|
||||
|
||||
hda_sdw_int_enable(sdev, true);
|
||||
|
||||
/* re-enable clock gating and power gating */
|
||||
return hda_dsp_ctrl_clock_power_gating(sdev, true);
|
||||
}
|
||||
|
||||
int hda_dsp_ext_man_get_cavs_config_data(struct snd_sof_dev *sdev,
|
||||
const struct sof_ext_man_elem_header *hdr)
|
||||
{
|
||||
|
@ -545,6 +545,45 @@ static inline bool hda_sdw_check_wakeen_irq(struct snd_sof_dev *sdev)
|
||||
|
||||
#endif /* IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE) */
|
||||
|
||||
/* pre fw run operations */
|
||||
int hda_dsp_pre_fw_run(struct snd_sof_dev *sdev)
|
||||
{
|
||||
/* disable clock gating and power gating */
|
||||
return hda_dsp_ctrl_clock_power_gating(sdev, false);
|
||||
}
|
||||
|
||||
/* post fw run operations */
|
||||
int hda_dsp_post_fw_run(struct snd_sof_dev *sdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (sdev->first_boot) {
|
||||
struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata;
|
||||
|
||||
ret = hda_sdw_startup(sdev);
|
||||
if (ret < 0) {
|
||||
dev_err(sdev->dev,
|
||||
"error: could not startup SoundWire links\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Check if IMR boot is usable */
|
||||
if (!sof_debug_check_flag(SOF_DBG_IGNORE_D3_PERSISTENT) &&
|
||||
(sdev->fw_ready.flags & SOF_IPC_INFO_D3_PERSISTENT ||
|
||||
sdev->pdata->ipc_type == SOF_IPC_TYPE_4)) {
|
||||
hdev->imrboot_supported = true;
|
||||
debugfs_create_bool("skip_imr_boot",
|
||||
0644, sdev->debugfs_root,
|
||||
&hdev->skip_imr_boot);
|
||||
}
|
||||
}
|
||||
|
||||
hda_sdw_int_enable(sdev, true);
|
||||
|
||||
/* re-enable clock gating and power gating */
|
||||
return hda_dsp_ctrl_clock_power_gating(sdev, true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Debug
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user