Lines Matching defs:core_mask

129 static int hda_dsp_core_reset_enter(struct snd_sof_dev *sdev, unsigned int core_mask)
136 reset = HDA_DSP_ADSPCS_CRST_MASK(core_mask);
157 if ((adspcs & HDA_DSP_ADSPCS_CRST_MASK(core_mask)) !=
158 HDA_DSP_ADSPCS_CRST_MASK(core_mask)) {
160 "error: reset enter failed: core_mask %x adspcs 0x%x\n",
161 core_mask, adspcs);
168 static int hda_dsp_core_reset_leave(struct snd_sof_dev *sdev, unsigned int core_mask)
177 HDA_DSP_ADSPCS_CRST_MASK(core_mask),
181 crst = HDA_DSP_ADSPCS_CRST_MASK(core_mask);
198 if ((adspcs & HDA_DSP_ADSPCS_CRST_MASK(core_mask)) != 0) {
200 "error: reset leave failed: core_mask %x adspcs 0x%x\n",
201 core_mask, adspcs);
208 int hda_dsp_core_stall_reset(struct snd_sof_dev *sdev, unsigned int core_mask)
213 HDA_DSP_ADSPCS_CSTALL_MASK(core_mask),
214 HDA_DSP_ADSPCS_CSTALL_MASK(core_mask));
217 return hda_dsp_core_reset_enter(sdev, core_mask);
221 bool hda_dsp_core_is_enabled(struct snd_sof_dev *sdev, unsigned int core_mask)
233 is_enable = MASK_IS_EQUAL(val, core_mask, HDA_DSP_ADSPCS_CPA_MASK) &&
234 MASK_IS_EQUAL(val, core_mask, HDA_DSP_ADSPCS_SPA_MASK) &&
235 !(val & HDA_DSP_ADSPCS_CRST_MASK(core_mask)) &&
236 !(val & HDA_DSP_ADSPCS_CSTALL_MASK(core_mask));
240 dev_dbg(sdev->dev, "DSP core(s) enabled? %d : core_mask %x\n",
241 is_enable, core_mask);
247 int hda_dsp_core_run(struct snd_sof_dev *sdev, unsigned int core_mask)
252 ret = hda_dsp_core_reset_leave(sdev, core_mask);
257 dev_dbg(sdev->dev, "unstall/run core: core_mask = %x\n", core_mask);
260 HDA_DSP_ADSPCS_CSTALL_MASK(core_mask),
264 if (!hda_dsp_core_is_enabled(sdev, core_mask)) {
265 hda_dsp_core_stall_reset(sdev, core_mask);
266 dev_err(sdev->dev, "error: DSP start core failed: core_mask %x\n",
267 core_mask);
279 int hda_dsp_core_power_up(struct snd_sof_dev *sdev, unsigned int core_mask)
287 /* restrict core_mask to host managed cores mask */
288 core_mask &= chip->host_managed_cores_mask;
289 /* return if core_mask is not valid */
290 if (!core_mask)
295 HDA_DSP_ADSPCS_SPA_MASK(core_mask),
296 HDA_DSP_ADSPCS_SPA_MASK(core_mask));
299 cpa = HDA_DSP_ADSPCS_CPA_MASK(core_mask);
315 if ((adspcs & HDA_DSP_ADSPCS_CPA_MASK(core_mask)) !=
316 HDA_DSP_ADSPCS_CPA_MASK(core_mask)) {
318 "error: power up core failed core_mask %xadspcs 0x%x\n",
319 core_mask, adspcs);
327 static int hda_dsp_core_power_down(struct snd_sof_dev *sdev, unsigned int core_mask)
335 HDA_DSP_ADSPCS_SPA_MASK(core_mask), 0);
339 !(adspcs & HDA_DSP_ADSPCS_CPA_MASK(core_mask)),
350 int hda_dsp_enable_core(struct snd_sof_dev *sdev, unsigned int core_mask)
356 /* restrict core_mask to host managed cores mask */
357 core_mask &= chip->host_managed_cores_mask;
359 /* return if core_mask is not valid or cores are already enabled */
360 if (!core_mask || hda_dsp_core_is_enabled(sdev, core_mask))
364 ret = hda_dsp_core_power_up(sdev, core_mask);
366 dev_err(sdev->dev, "error: dsp core power up failed: core_mask %x\n",
367 core_mask);
371 return hda_dsp_core_run(sdev, core_mask);
376 unsigned int core_mask)
382 /* restrict core_mask to host managed cores mask */
383 core_mask &= chip->host_managed_cores_mask;
385 /* return if core_mask is not valid */
386 if (!core_mask)
390 ret = hda_dsp_core_stall_reset(sdev, core_mask);
392 dev_err(sdev->dev, "error: dsp core reset failed: core_mask %x\n",
393 core_mask);
398 ret = hda_dsp_core_power_down(sdev, core_mask);
401 core_mask, ret);
406 if (hda_dsp_core_is_enabled(sdev, core_mask)) {
408 core_mask, ret);