Lines Matching +full:reset +full:- +full:mask
1 // SPDX-License-Identifier: GPL-2.0-only
3 // Copyright(c) 2021-2022 Intel Corporation
20 u32 value, mask, reg; in avs_dsp_core_power() local
26 mask = AVS_ADSPCS_SPA_MASK(core_mask); in avs_dsp_core_power()
27 value = power ? mask : 0; in avs_dsp_core_power()
29 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value); in avs_dsp_core_power()
33 mask = AVS_ADSPCS_CPA_MASK(core_mask); in avs_dsp_core_power()
34 value = power ? mask : 0; in avs_dsp_core_power()
37 reg, (reg & mask) == value, in avs_dsp_core_power()
41 dev_err(adev->dev, "core_mask %d power %s failed: %d\n", in avs_dsp_core_power()
47 int avs_dsp_core_reset(struct avs_dev *adev, u32 core_mask, bool reset) in avs_dsp_core_reset() argument
49 u32 value, mask, reg; in avs_dsp_core_reset() local
53 trace_avs_dsp_core_op(value, core_mask, "reset", reset); in avs_dsp_core_reset()
55 mask = AVS_ADSPCS_CRST_MASK(core_mask); in avs_dsp_core_reset()
56 value = reset ? mask : 0; in avs_dsp_core_reset()
58 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value); in avs_dsp_core_reset()
61 reg, (reg & mask) == value, in avs_dsp_core_reset()
65 dev_err(adev->dev, "core_mask %d %s reset failed: %d\n", in avs_dsp_core_reset()
66 core_mask, reset ? "enter" : "exit", ret); in avs_dsp_core_reset()
73 u32 value, mask, reg; in avs_dsp_core_stall() local
79 mask = AVS_ADSPCS_CSTALL_MASK(core_mask); in avs_dsp_core_stall()
80 value = stall ? mask : 0; in avs_dsp_core_stall()
82 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value); in avs_dsp_core_stall()
85 reg, (reg & mask) == value, in avs_dsp_core_stall()
89 dev_err(adev->dev, "core_mask %d %sstall failed: %d\n", in avs_dsp_core_stall()
107 ret = avs_dsp_op(adev, reset, core_mask, false); in avs_dsp_core_enable()
118 avs_dsp_op(adev, reset, core_mask, true); in avs_dsp_core_disable()
125 u32 mask; in avs_dsp_enable() local
132 mask = core_mask & ~AVS_MAIN_CORE_MASK; in avs_dsp_enable()
133 if (!mask) in avs_dsp_enable()
140 ret = avs_ipc_set_dx(adev, mask, true); in avs_dsp_enable()
157 u32 mask; in avs_dsp_get_core() local
160 mask = BIT_MASK(core_id); in avs_dsp_get_core()
161 if (mask == AVS_MAIN_CORE_MASK) in avs_dsp_get_core()
164 if (core_id >= adev->hw_cfg.dsp_cores) { in avs_dsp_get_core()
165 ret = -EINVAL; in avs_dsp_get_core()
169 adev->core_refs[core_id]++; in avs_dsp_get_core()
170 if (adev->core_refs[core_id] == 1) { in avs_dsp_get_core()
172 * No cores other than main-core can be running for DSP in avs_dsp_get_core()
177 if (ret && ret != -AVS_EIPC) in avs_dsp_get_core()
180 ret = avs_dsp_enable(adev, mask); in avs_dsp_get_core()
190 adev->core_refs[core_id]--; in avs_dsp_get_core()
192 dev_err(adev->dev, "get core %d failed: %d\n", core_id, ret); in avs_dsp_get_core()
198 u32 mask; in avs_dsp_put_core() local
201 mask = BIT_MASK(core_id); in avs_dsp_put_core()
202 if (mask == AVS_MAIN_CORE_MASK) in avs_dsp_put_core()
205 if (core_id >= adev->hw_cfg.dsp_cores) { in avs_dsp_put_core()
206 ret = -EINVAL; in avs_dsp_put_core()
210 adev->core_refs[core_id]--; in avs_dsp_put_core()
211 if (!adev->core_refs[core_id]) { in avs_dsp_put_core()
212 ret = avs_dsp_disable(adev, mask); in avs_dsp_put_core()
222 dev_err(adev->dev, "put core %d failed: %d\n", core_id, ret); in avs_dsp_put_core()
250 dev_err(adev->dev, "load modules failed: %d\n", ret); in avs_dsp_init_module()
293 dev_err(adev->dev, "unload modules failed: %d\n", ret); in avs_dsp_delete_module()
303 struct avs_fw_cfg *fw_cfg = &adev->fw_cfg; in avs_dsp_create_pipeline()
306 id = ida_alloc_max(&adev->ppl_ida, fw_cfg->max_ppl_count - 1, GFP_KERNEL); in avs_dsp_create_pipeline()
312 ida_free(&adev->ppl_ida, id); in avs_dsp_create_pipeline()
328 ida_free(&adev->ppl_ida, instance_id); in avs_dsp_delete_pipeline()