Lines Matching refs:ctx

22 void skl_dsp_set_state_locked(struct sst_dsp *ctx, int state)  in skl_dsp_set_state_locked()  argument
24 mutex_lock(&ctx->mutex); in skl_dsp_set_state_locked()
25 ctx->sst_state = state; in skl_dsp_set_state_locked()
26 mutex_unlock(&ctx->mutex); in skl_dsp_set_state_locked()
34 void skl_dsp_init_core_state(struct sst_dsp *ctx) in skl_dsp_init_core_state() argument
36 struct skl_dev *skl = ctx->thread_context; in skl_dsp_init_core_state()
49 unsigned int skl_dsp_get_enabled_cores(struct sst_dsp *ctx) in skl_dsp_get_enabled_cores() argument
51 struct skl_dev *skl = ctx->thread_context; in skl_dsp_get_enabled_cores()
57 val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS); in skl_dsp_get_enabled_cores()
72 dev_dbg(ctx->dev, "DSP enabled cores mask = %x\n", en_cores_mask); in skl_dsp_get_enabled_cores()
78 skl_dsp_core_set_reset_state(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_core_set_reset_state() argument
83 sst_dsp_shim_update_bits_unlocked(ctx, in skl_dsp_core_set_reset_state()
88 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_set_reset_state()
94 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_set_reset_state()
97 dev_err(ctx->dev, "Set reset state failed: core_mask %x\n", in skl_dsp_core_set_reset_state()
106 struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_core_unset_reset_state() argument
110 dev_dbg(ctx->dev, "In %s\n", __func__); in skl_dsp_core_unset_reset_state()
113 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_unset_reset_state()
117 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_unset_reset_state()
124 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_unset_reset_state()
126 dev_err(ctx->dev, "Unset reset state failed: core_mask %x\n", in skl_dsp_core_unset_reset_state()
135 is_skl_dsp_core_enable(struct sst_dsp *ctx, unsigned int core_mask) in is_skl_dsp_core_enable() argument
140 val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS); in is_skl_dsp_core_enable()
147 dev_dbg(ctx->dev, "DSP core(s) enabled? %d : core_mask %x\n", in is_skl_dsp_core_enable()
153 static int skl_dsp_reset_core(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_reset_core() argument
156 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_reset_core()
161 return skl_dsp_core_set_reset_state(ctx, core_mask); in skl_dsp_reset_core()
164 int skl_dsp_start_core(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_start_core() argument
169 ret = skl_dsp_core_unset_reset_state(ctx, core_mask); in skl_dsp_start_core()
174 dev_dbg(ctx->dev, "unstall/run core: core_mask = %x\n", core_mask); in skl_dsp_start_core()
175 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_start_core()
178 if (!is_skl_dsp_core_enable(ctx, core_mask)) { in skl_dsp_start_core()
179 skl_dsp_reset_core(ctx, core_mask); in skl_dsp_start_core()
180 dev_err(ctx->dev, "DSP start core failed: core_mask %x\n", in skl_dsp_start_core()
188 int skl_dsp_core_power_up(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_core_power_up() argument
193 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_power_up()
198 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_power_up()
205 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_power_up()
208 dev_err(ctx->dev, "DSP core power up failed: core_mask %x\n", in skl_dsp_core_power_up()
216 int skl_dsp_core_power_down(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_core_power_down() argument
219 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_power_down()
223 return sst_dsp_register_poll(ctx, in skl_dsp_core_power_down()
231 int skl_dsp_enable_core(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_enable_core() argument
236 ret = skl_dsp_core_power_up(ctx, core_mask); in skl_dsp_enable_core()
238 dev_err(ctx->dev, "dsp core power up failed: core_mask %x\n", in skl_dsp_enable_core()
243 return skl_dsp_start_core(ctx, core_mask); in skl_dsp_enable_core()
246 int skl_dsp_disable_core(struct sst_dsp *ctx, unsigned int core_mask) in skl_dsp_disable_core() argument
250 ret = skl_dsp_reset_core(ctx, core_mask); in skl_dsp_disable_core()
252 dev_err(ctx->dev, "dsp core reset failed: core_mask %x\n", in skl_dsp_disable_core()
258 ret = skl_dsp_core_power_down(ctx, core_mask); in skl_dsp_disable_core()
260 dev_err(ctx->dev, "dsp core power down fail mask %x: %d\n", in skl_dsp_disable_core()
265 if (is_skl_dsp_core_enable(ctx, core_mask)) { in skl_dsp_disable_core()
266 dev_err(ctx->dev, "dsp core disable fail mask %x: %d\n", in skl_dsp_disable_core()
274 int skl_dsp_boot(struct sst_dsp *ctx) in skl_dsp_boot() argument
278 if (is_skl_dsp_core_enable(ctx, SKL_DSP_CORE0_MASK)) { in skl_dsp_boot()
279 ret = skl_dsp_reset_core(ctx, SKL_DSP_CORE0_MASK); in skl_dsp_boot()
281 dev_err(ctx->dev, "dsp core0 reset fail: %d\n", ret); in skl_dsp_boot()
285 ret = skl_dsp_start_core(ctx, SKL_DSP_CORE0_MASK); in skl_dsp_boot()
287 dev_err(ctx->dev, "dsp core0 start fail: %d\n", ret); in skl_dsp_boot()
291 ret = skl_dsp_disable_core(ctx, SKL_DSP_CORE0_MASK); in skl_dsp_boot()
293 dev_err(ctx->dev, "dsp core0 disable fail: %d\n", ret); in skl_dsp_boot()
296 ret = skl_dsp_enable_core(ctx, SKL_DSP_CORE0_MASK); in skl_dsp_boot()
304 struct sst_dsp *ctx = dev_id; in skl_dsp_sst_interrupt() local
308 spin_lock(&ctx->spinlock); in skl_dsp_sst_interrupt()
310 val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPIS); in skl_dsp_sst_interrupt()
311 ctx->intr_status = val; in skl_dsp_sst_interrupt()
314 spin_unlock(&ctx->spinlock); in skl_dsp_sst_interrupt()
319 skl_ipc_int_disable(ctx); in skl_dsp_sst_interrupt()
324 skl_cldma_int_disable(ctx); in skl_dsp_sst_interrupt()
328 spin_unlock(&ctx->spinlock); in skl_dsp_sst_interrupt()
336 int skl_dsp_get_core(struct sst_dsp *ctx, unsigned int core_id) in skl_dsp_get_core() argument
338 struct skl_dev *skl = ctx->thread_context; in skl_dsp_get_core()
342 dev_err(ctx->dev, "invalid core id: %d\n", core_id); in skl_dsp_get_core()
349 ret = ctx->fw_ops.set_state_D0(ctx, core_id); in skl_dsp_get_core()
351 dev_err(ctx->dev, "unable to get core%d\n", core_id); in skl_dsp_get_core()
357 dev_dbg(ctx->dev, "core id %d state %d usage_count %d\n", in skl_dsp_get_core()
365 int skl_dsp_put_core(struct sst_dsp *ctx, unsigned int core_id) in skl_dsp_put_core() argument
367 struct skl_dev *skl = ctx->thread_context; in skl_dsp_put_core()
371 dev_err(ctx->dev, "invalid core id: %d\n", core_id); in skl_dsp_put_core()
377 ret = ctx->fw_ops.set_state_D3(ctx, core_id); in skl_dsp_put_core()
379 dev_err(ctx->dev, "unable to put core %d: %d\n", in skl_dsp_put_core()
385 dev_dbg(ctx->dev, "core id %d state %d usage_count %d\n", in skl_dsp_put_core()
393 int skl_dsp_wake(struct sst_dsp *ctx) in skl_dsp_wake() argument
395 return skl_dsp_get_core(ctx, SKL_DSP_CORE0_ID); in skl_dsp_wake()
399 int skl_dsp_sleep(struct sst_dsp *ctx) in skl_dsp_sleep() argument
401 return skl_dsp_put_core(ctx, SKL_DSP_CORE0_ID); in skl_dsp_sleep()
458 bool is_skl_dsp_running(struct sst_dsp *ctx) in is_skl_dsp_running() argument
460 return (ctx->sst_state == SKL_DSP_RUNNING); in is_skl_dsp_running()