Skip to content

Commit cb01c5d

Browse files
fredoh9plbossart
authored andcommitted
ASoC: SOF: Intel: mtl: fix page fault in dspless mode
Nothing to do in dsp irq in DSPless mode. Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
1 parent 6f9a3a6 commit cb01c5d

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

sound/soc/sof/intel/mtl.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ bool mtl_dsp_check_ipc_irq(struct snd_sof_dev *sdev)
6060
u32 irq_status;
6161
u32 hfintipptr;
6262

63+
if (sdev->dspless_mode_selected)
64+
return false;
65+
6366
/* read Interrupt IP Pointer */
6467
hfintipptr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, MTL_HFINTIPPTR) & MTL_HFINTIPPTR_PTR_MASK;
6568
irq_status = snd_sof_dsp_read(sdev, HDA_DSP_BAR, hfintipptr + MTL_DSP_IRQSTS);
@@ -120,6 +123,9 @@ void mtl_enable_ipc_interrupts(struct snd_sof_dev *sdev)
120123
struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
121124
const struct sof_intel_dsp_desc *chip = hda->desc;
122125

126+
if (sdev->dspless_mode_selected)
127+
return;
128+
123129
/* enable IPC DONE and BUSY interrupts */
124130
snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, chip->ipc_ctl,
125131
MTL_DSP_REG_HFIPCXCTL_BUSY | MTL_DSP_REG_HFIPCXCTL_DONE,
@@ -131,6 +137,9 @@ void mtl_disable_ipc_interrupts(struct snd_sof_dev *sdev)
131137
struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
132138
const struct sof_intel_dsp_desc *chip = hda->desc;
133139

140+
if (sdev->dspless_mode_selected)
141+
return;
142+
134143
/* disable IPC DONE and BUSY interrupts */
135144
snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, chip->ipc_ctl,
136145
MTL_DSP_REG_HFIPCXCTL_BUSY | MTL_DSP_REG_HFIPCXCTL_DONE, 0);
@@ -143,6 +152,9 @@ static void mtl_enable_sdw_irq(struct snd_sof_dev *sdev, bool enable)
143152
u32 val;
144153
int ret;
145154

155+
if (sdev->dspless_mode_selected)
156+
return;
157+
146158
/* Enable/Disable SoundWire interrupt */
147159
mask = MTL_DSP_REG_HfSNDWIE_IE_MASK;
148160
if (enable)
@@ -170,6 +182,9 @@ int mtl_enable_interrupts(struct snd_sof_dev *sdev, bool enable)
170182
u32 val;
171183
int ret;
172184

185+
if (sdev->dspless_mode_selected)
186+
return 0;
187+
173188
/* read Interrupt IP Pointer */
174189
hfintipptr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, MTL_HFINTIPPTR) & MTL_HFINTIPPTR_PTR_MASK;
175190

0 commit comments

Comments
 (0)