Lines Matching defs:adev

18 int avs_dsp_core_power(struct avs_dev *adev, u32 core_mask, bool power)
23 value = snd_hdac_adsp_readl(adev, AVS_ADSP_REG_ADSPCS);
29 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value);
36 ret = snd_hdac_adsp_readl_poll(adev, AVS_ADSP_REG_ADSPCS,
41 dev_err(adev->dev, "core_mask %d power %s failed: %d\n",
47 int avs_dsp_core_reset(struct avs_dev *adev, u32 core_mask, bool reset)
52 value = snd_hdac_adsp_readl(adev, AVS_ADSP_REG_ADSPCS);
58 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value);
60 ret = snd_hdac_adsp_readl_poll(adev, AVS_ADSP_REG_ADSPCS,
65 dev_err(adev->dev, "core_mask %d %s reset failed: %d\n",
71 int avs_dsp_core_stall(struct avs_dev *adev, u32 core_mask, bool stall)
76 value = snd_hdac_adsp_readl(adev, AVS_ADSP_REG_ADSPCS);
82 snd_hdac_adsp_updatel(adev, AVS_ADSP_REG_ADSPCS, mask, value);
84 ret = snd_hdac_adsp_readl_poll(adev, AVS_ADSP_REG_ADSPCS,
89 dev_err(adev->dev, "core_mask %d %sstall failed: %d\n",
99 int avs_dsp_core_enable(struct avs_dev *adev, u32 core_mask)
103 ret = avs_dsp_op(adev, power, core_mask, true);
107 ret = avs_dsp_op(adev, reset, core_mask, false);
111 return avs_dsp_op(adev, stall, core_mask, false);
114 int avs_dsp_core_disable(struct avs_dev *adev, u32 core_mask)
117 avs_dsp_op(adev, stall, core_mask, true);
118 avs_dsp_op(adev, reset, core_mask, true);
120 return avs_dsp_op(adev, power, core_mask, false);
123 static int avs_dsp_enable(struct avs_dev *adev, u32 core_mask)
128 ret = avs_dsp_core_enable(adev, core_mask);
140 ret = avs_ipc_set_dx(adev, mask, true);
144 static int avs_dsp_disable(struct avs_dev *adev, u32 core_mask)
148 ret = avs_ipc_set_dx(adev, core_mask, false);
152 return avs_dsp_core_disable(adev, core_mask);
155 static int avs_dsp_get_core(struct avs_dev *adev, u32 core_id)
164 if (core_id >= adev->hw_cfg.dsp_cores) {
169 adev->core_refs[core_id]++;
170 if (adev->core_refs[core_id] == 1) {
176 ret = avs_dsp_disable_d0ix(adev);
180 ret = avs_dsp_enable(adev, mask);
188 avs_dsp_enable_d0ix(adev);
190 adev->core_refs[core_id]--;
192 dev_err(adev->dev, "get core %d failed: %d\n", core_id, ret);
196 static int avs_dsp_put_core(struct avs_dev *adev, u32 core_id)
205 if (core_id >= adev->hw_cfg.dsp_cores) {
210 adev->core_refs[core_id]--;
211 if (!adev->core_refs[core_id]) {
212 ret = avs_dsp_disable(adev, mask);
217 avs_dsp_enable_d0ix(adev);
222 dev_err(adev->dev, "put core %d failed: %d\n", core_id, ret);
226 int avs_dsp_init_module(struct avs_dev *adev, u16 module_id, u8 ppl_instance_id,
234 id = avs_module_id_alloc(adev, module_id);
238 ret = avs_get_module_id_entry(adev, module_id, &mentry);
242 ret = avs_dsp_get_core(adev, core_id);
248 ret = avs_dsp_op(adev, transfer_mods, true, &mentry, 1);
250 dev_err(adev->dev, "load modules failed: %d\n", ret);
256 ret = avs_ipc_init_instance(adev, module_id, id, ppl_instance_id,
268 avs_dsp_op(adev, transfer_mods, false, &mentry, 1);
269 avs_dsp_put_core(adev, core_id);
271 avs_module_id_free(adev, module_id, id);
275 void avs_dsp_delete_module(struct avs_dev *adev, u16 module_id, u8 instance_id,
283 avs_ipc_delete_instance(adev, module_id, instance_id);
285 avs_module_id_free(adev, module_id, instance_id);
287 ret = avs_get_module_id_entry(adev, module_id, &mentry);
290 if (avs_is_module_ida_empty(adev, module_id)) {
291 ret = avs_dsp_op(adev, transfer_mods, false, &mentry, 1);
293 dev_err(adev->dev, "unload modules failed: %d\n", ret);
297 avs_dsp_put_core(adev, core_id);
300 int avs_dsp_create_pipeline(struct avs_dev *adev, u16 req_size, u8 priority,
303 struct avs_fw_cfg *fw_cfg = &adev->fw_cfg;
306 id = ida_alloc_max(&adev->ppl_ida, fw_cfg->max_ppl_count - 1, GFP_KERNEL);
310 ret = avs_ipc_create_pipeline(adev, req_size, priority, id, lp, attributes);
312 ida_free(&adev->ppl_ida, id);
320 int avs_dsp_delete_pipeline(struct avs_dev *adev, u8 instance_id)
324 ret = avs_ipc_delete_pipeline(adev, instance_id);
328 ida_free(&adev->ppl_ida, instance_id);