Lines Matching refs:ctx

30 void skl_dsp_set_state_locked(struct sst_dsp *ctx, int state)  in skl_dsp_set_state_locked()  argument
32 mutex_lock(&ctx->mutex); in skl_dsp_set_state_locked()
33 ctx->sst_state = state; in skl_dsp_set_state_locked()
34 mutex_unlock(&ctx->mutex); in skl_dsp_set_state_locked()
37 static int skl_dsp_core_set_reset_state(struct sst_dsp *ctx) in skl_dsp_core_set_reset_state() argument
42 sst_dsp_shim_update_bits_unlocked(ctx, in skl_dsp_core_set_reset_state()
47 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_set_reset_state()
53 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_set_reset_state()
56 dev_err(ctx->dev, "Set reset state failed\n"); in skl_dsp_core_set_reset_state()
63 static int skl_dsp_core_unset_reset_state(struct sst_dsp *ctx) in skl_dsp_core_unset_reset_state() argument
67 dev_dbg(ctx->dev, "In %s\n", __func__); in skl_dsp_core_unset_reset_state()
70 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_unset_reset_state()
74 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_unset_reset_state()
81 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_unset_reset_state()
83 dev_err(ctx->dev, "Unset reset state failed\n"); in skl_dsp_core_unset_reset_state()
90 static bool is_skl_dsp_core_enable(struct sst_dsp *ctx) in is_skl_dsp_core_enable() argument
95 val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS); in is_skl_dsp_core_enable()
102 dev_dbg(ctx->dev, "DSP core is enabled=%d\n", is_enable); in is_skl_dsp_core_enable()
106 static int skl_dsp_reset_core(struct sst_dsp *ctx) in skl_dsp_reset_core() argument
109 sst_dsp_shim_write_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_reset_core()
110 sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_reset_core()
114 return skl_dsp_core_set_reset_state(ctx); in skl_dsp_reset_core()
117 static int skl_dsp_start_core(struct sst_dsp *ctx) in skl_dsp_start_core() argument
122 ret = skl_dsp_core_unset_reset_state(ctx); in skl_dsp_start_core()
124 dev_dbg(ctx->dev, "dsp unset reset fails\n"); in skl_dsp_start_core()
129 dev_dbg(ctx->dev, "run core...\n"); in skl_dsp_start_core()
130 sst_dsp_shim_write_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_start_core()
131 sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_start_core()
134 if (!is_skl_dsp_core_enable(ctx)) { in skl_dsp_start_core()
135 skl_dsp_reset_core(ctx); in skl_dsp_start_core()
136 dev_err(ctx->dev, "DSP core enable failed\n"); in skl_dsp_start_core()
143 static int skl_dsp_core_power_up(struct sst_dsp *ctx) in skl_dsp_core_power_up() argument
148 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_power_up()
152 ret = sst_dsp_register_poll(ctx, in skl_dsp_core_power_up()
159 if ((sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPCS) & in skl_dsp_core_power_up()
162 dev_err(ctx->dev, "DSP core power up failed\n"); in skl_dsp_core_power_up()
169 static int skl_dsp_core_power_down(struct sst_dsp *ctx) in skl_dsp_core_power_down() argument
172 sst_dsp_shim_update_bits_unlocked(ctx, SKL_ADSP_REG_ADSPCS, in skl_dsp_core_power_down()
176 return sst_dsp_register_poll(ctx, in skl_dsp_core_power_down()
184 static int skl_dsp_enable_core(struct sst_dsp *ctx) in skl_dsp_enable_core() argument
189 ret = skl_dsp_core_power_up(ctx); in skl_dsp_enable_core()
191 dev_dbg(ctx->dev, "dsp core power up failed\n"); in skl_dsp_enable_core()
195 return skl_dsp_start_core(ctx); in skl_dsp_enable_core()
198 int skl_dsp_disable_core(struct sst_dsp *ctx) in skl_dsp_disable_core() argument
202 ret = skl_dsp_reset_core(ctx); in skl_dsp_disable_core()
204 dev_err(ctx->dev, "dsp core reset failed\n"); in skl_dsp_disable_core()
209 ret = skl_dsp_core_power_down(ctx); in skl_dsp_disable_core()
211 dev_err(ctx->dev, "dsp core power down failed\n"); in skl_dsp_disable_core()
215 if (is_skl_dsp_core_enable(ctx)) { in skl_dsp_disable_core()
216 dev_err(ctx->dev, "DSP core disable failed\n"); in skl_dsp_disable_core()
223 int skl_dsp_boot(struct sst_dsp *ctx) in skl_dsp_boot() argument
227 if (is_skl_dsp_core_enable(ctx)) { in skl_dsp_boot()
228 dev_dbg(ctx->dev, "dsp core is already enabled, so reset the dap core\n"); in skl_dsp_boot()
229 ret = skl_dsp_reset_core(ctx); in skl_dsp_boot()
231 dev_err(ctx->dev, "dsp reset failed\n"); in skl_dsp_boot()
235 ret = skl_dsp_start_core(ctx); in skl_dsp_boot()
237 dev_err(ctx->dev, "dsp start failed\n"); in skl_dsp_boot()
241 dev_dbg(ctx->dev, "disable and enable to make sure DSP is invalid state\n"); in skl_dsp_boot()
242 ret = skl_dsp_disable_core(ctx); in skl_dsp_boot()
245 dev_err(ctx->dev, "dsp disable core failes\n"); in skl_dsp_boot()
248 ret = skl_dsp_enable_core(ctx); in skl_dsp_boot()
256 struct sst_dsp *ctx = dev_id; in skl_dsp_sst_interrupt() local
260 spin_lock(&ctx->spinlock); in skl_dsp_sst_interrupt()
262 val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPIS); in skl_dsp_sst_interrupt()
263 ctx->intr_status = val; in skl_dsp_sst_interrupt()
266 spin_unlock(&ctx->spinlock); in skl_dsp_sst_interrupt()
271 skl_ipc_int_disable(ctx); in skl_dsp_sst_interrupt()
276 skl_cldma_int_disable(ctx); in skl_dsp_sst_interrupt()
280 spin_unlock(&ctx->spinlock); in skl_dsp_sst_interrupt()
285 int skl_dsp_wake(struct sst_dsp *ctx) in skl_dsp_wake() argument
287 return ctx->fw_ops.set_state_D0(ctx); in skl_dsp_wake()
291 int skl_dsp_sleep(struct sst_dsp *ctx) in skl_dsp_sleep() argument
293 return ctx->fw_ops.set_state_D3(ctx); in skl_dsp_sleep()
343 bool is_skl_dsp_running(struct sst_dsp *ctx) in is_skl_dsp_running() argument
345 return (ctx->sst_state == SKL_DSP_RUNNING); in is_skl_dsp_running()