mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 15:41:36 +00:00
ASoC: SOF: Intel: remove circular dependency on hda_sdw_process_wakeen()
hda_sdw_process_wakeen() is used in hda-loader.c, but defined in hda.c. This code split will create a circular dependency when hda.c is moved to a different module. Rather than an invasive code change, this patch follows the model used for sdw_check_wakeen_irq() with an abstraction. For now all abstractions point to the same common routine, which is arguably not great, but this also provides us with a future-proof way of addressing platform-specific wake processing. 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-7-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
136b37369c
commit
3b7bd0c139
@ -473,6 +473,7 @@ const struct sof_intel_dsp_desc cnl_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
@ -508,6 +509,7 @@ const struct sof_intel_dsp_desc jsl_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
|
@ -1311,6 +1311,21 @@ int hda_sdw_check_lcount(struct snd_sof_dev *sdev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hda_sdw_process_wakeen(struct snd_sof_dev *sdev)
|
||||
{
|
||||
u32 interface_mask = hda_get_interface_mask(sdev);
|
||||
const struct sof_intel_dsp_desc *chip;
|
||||
|
||||
if (!(interface_mask & BIT(SOF_DAI_INTEL_ALH)))
|
||||
return;
|
||||
|
||||
chip = get_chip_info(sdev->pdata);
|
||||
if (chip && chip->sdw_process_wakeen)
|
||||
chip->sdw_process_wakeen(sdev);
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_sdw_process_wakeen, SND_SOC_SOF_INTEL_HDA_COMMON);
|
||||
|
||||
#endif
|
||||
|
||||
int hda_dsp_disable_interrupts(struct snd_sof_dev *sdev)
|
||||
|
@ -331,7 +331,7 @@ static bool hda_sdw_check_wakeen_irq(struct snd_sof_dev *sdev)
|
||||
return false;
|
||||
}
|
||||
|
||||
void hda_sdw_process_wakeen(struct snd_sof_dev *sdev)
|
||||
void hda_sdw_process_wakeen_common(struct snd_sof_dev *sdev)
|
||||
{
|
||||
u32 interface_mask = hda_get_interface_mask(sdev);
|
||||
struct sof_intel_hda_dev *hdev;
|
||||
@ -345,6 +345,7 @@ void hda_sdw_process_wakeen(struct snd_sof_dev *sdev)
|
||||
|
||||
sdw_intel_process_wakeen_event(hdev->sdw);
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_sdw_process_wakeen_common, SND_SOC_SOF_INTEL_HDA_COMMON);
|
||||
|
||||
#else /* IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE) */
|
||||
static inline int hda_sdw_acpi_scan(struct snd_sof_dev *sdev)
|
||||
|
@ -815,6 +815,7 @@ int hda_sdw_startup(struct snd_sof_dev *sdev);
|
||||
void hda_common_enable_sdw_irq(struct snd_sof_dev *sdev, bool enable);
|
||||
void hda_sdw_int_enable(struct snd_sof_dev *sdev, bool enable);
|
||||
bool hda_sdw_check_wakeen_irq_common(struct snd_sof_dev *sdev);
|
||||
void hda_sdw_process_wakeen_common(struct snd_sof_dev *sdev);
|
||||
void hda_sdw_process_wakeen(struct snd_sof_dev *sdev);
|
||||
bool hda_common_check_sdw_irq(struct snd_sof_dev *sdev);
|
||||
|
||||
@ -853,6 +854,10 @@ static inline bool hda_sdw_check_wakeen_irq_common(struct snd_sof_dev *sdev)
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline void hda_sdw_process_wakeen_common(struct snd_sof_dev *sdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void hda_sdw_process_wakeen(struct snd_sof_dev *sdev)
|
||||
{
|
||||
}
|
||||
|
@ -187,6 +187,7 @@ const struct sof_intel_dsp_desc icl_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
|
@ -238,6 +238,7 @@ const struct sof_intel_dsp_desc lnl_chip_info = {
|
||||
.enable_sdw_irq = lnl_enable_sdw_irq,
|
||||
.check_sdw_irq = lnl_dsp_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = lnl_sdw_check_wakeen_irq,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = mtl_dsp_check_ipc_irq,
|
||||
.cl_init = mtl_dsp_cl_init,
|
||||
.power_down_dsp = mtl_power_down_dsp,
|
||||
|
@ -779,6 +779,7 @@ const struct sof_intel_dsp_desc mtl_chip_info = {
|
||||
.enable_sdw_irq = mtl_enable_sdw_irq,
|
||||
.check_sdw_irq = mtl_dsp_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = mtl_dsp_check_ipc_irq,
|
||||
.cl_init = mtl_dsp_cl_init,
|
||||
.power_down_dsp = mtl_power_down_dsp,
|
||||
@ -806,6 +807,7 @@ const struct sof_intel_dsp_desc arl_s_chip_info = {
|
||||
.enable_sdw_irq = mtl_enable_sdw_irq,
|
||||
.check_sdw_irq = mtl_dsp_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = mtl_dsp_check_ipc_irq,
|
||||
.cl_init = mtl_dsp_cl_init,
|
||||
.power_down_dsp = mtl_power_down_dsp,
|
||||
|
@ -190,6 +190,7 @@ struct sof_intel_dsp_desc {
|
||||
void (*enable_sdw_irq)(struct snd_sof_dev *sdev, bool enable);
|
||||
bool (*check_sdw_irq)(struct snd_sof_dev *sdev);
|
||||
bool (*check_sdw_wakeen_irq)(struct snd_sof_dev *sdev);
|
||||
void (*sdw_process_wakeen)(struct snd_sof_dev *sdev);
|
||||
bool (*check_ipc_irq)(struct snd_sof_dev *sdev);
|
||||
int (*power_down_dsp)(struct snd_sof_dev *sdev);
|
||||
int (*disable_interrupts)(struct snd_sof_dev *sdev);
|
||||
|
@ -156,6 +156,7 @@ const struct sof_intel_dsp_desc tgl_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
@ -184,6 +185,7 @@ const struct sof_intel_dsp_desc tglh_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
@ -212,6 +214,7 @@ const struct sof_intel_dsp_desc ehl_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
@ -240,6 +243,7 @@ const struct sof_intel_dsp_desc adls_chip_info = {
|
||||
.enable_sdw_irq = hda_common_enable_sdw_irq,
|
||||
.check_sdw_irq = hda_common_check_sdw_irq,
|
||||
.check_sdw_wakeen_irq = hda_sdw_check_wakeen_irq_common,
|
||||
.sdw_process_wakeen = hda_sdw_process_wakeen_common,
|
||||
.check_ipc_irq = hda_dsp_check_ipc_irq,
|
||||
.cl_init = cl_dsp_init,
|
||||
.power_down_dsp = hda_power_down_dsp,
|
||||
|
Loading…
Reference in New Issue
Block a user