Lines Matching full:dsp
4 * integrated DSP, and closed-loop algorithms
82 dev_err(dev, "Timed out writing %#X to DSP: %d\n", val, ret); in cs40l50_dsp_write()
90 dev_err(dev, "DSP failed to ACK %#X: %d\n", val, ret); in cs40l50_dsp_write()
116 struct cs_dsp *dsp = &cs40l50->dsp; in cs40l50_wseq_init() local
118 cs40l50->wseqs[CS40L50_STANDBY].ctl = cs_dsp_get_ctl(dsp, "STANDBY_SEQUENCE", in cs40l50_wseq_init()
126 cs40l50->wseqs[CS40L50_ACTIVE].ctl = cs_dsp_get_ctl(dsp, "ACTIVE_SEQUENCE", in cs40l50_wseq_init()
134 cs40l50->wseqs[CS40L50_PWR_ON].ctl = cs_dsp_get_ctl(dsp, "PM_PWR_ON_SEQ", in cs40l50_wseq_init()
142 return cs_dsp_wseq_init(&cs40l50->dsp, cs40l50->wseqs, ARRAY_SIZE(cs40l50->wseqs)); in cs40l50_wseq_init()
155 ret = cs_dsp_wseq_multi_write(&cs40l50->dsp, &cs40l50->wseqs[CS40L50_PWR_ON], in cs40l50_dsp_config()
167 return cs_dsp_wseq_multi_write(&cs40l50->dsp, &cs40l50->wseqs[CS40L50_PWR_ON], in cs40l50_dsp_config()
172 static int cs40l50_dsp_post_run(struct cs_dsp *dsp) in cs40l50_dsp_post_run() argument
174 struct cs40l50 *cs40l50 = container_of(dsp, struct cs40l50, dsp); in cs40l50_dsp_post_run()
183 dev_err(cs40l50->dev, "Failed to configure DSP: %d\n", ret); in cs40l50_dsp_post_run()
208 cs40l50->dsp.num = 1; in cs40l50_dsp_init()
209 cs40l50->dsp.type = WMFW_HALO; in cs40l50_dsp_init()
210 cs40l50->dsp.dev = cs40l50->dev; in cs40l50_dsp_init()
211 cs40l50->dsp.regmap = cs40l50->regmap; in cs40l50_dsp_init()
212 cs40l50->dsp.base = CS40L50_CORE_BASE; in cs40l50_dsp_init()
213 cs40l50->dsp.base_sysinfo = CS40L50_SYS_INFO_ID; in cs40l50_dsp_init()
214 cs40l50->dsp.mem = cs40l50_dsp_regions; in cs40l50_dsp_init()
215 cs40l50->dsp.num_mems = ARRAY_SIZE(cs40l50_dsp_regions); in cs40l50_dsp_init()
216 cs40l50->dsp.no_core_startstop = true; in cs40l50_dsp_init()
217 cs40l50->dsp.client_ops = &client_ops; in cs40l50_dsp_init()
219 ret = cs_dsp_halo_init(&cs40l50->dsp); in cs40l50_dsp_init()
224 &cs40l50->dsp); in cs40l50_dsp_init()
233 if (cs40l50->dsp.running) in cs40l50_reset_dsp()
234 cs_dsp_stop(&cs40l50->dsp); in cs40l50_reset_dsp()
236 if (cs40l50->dsp.booted) in cs40l50_reset_dsp()
237 cs_dsp_power_down(&cs40l50->dsp); in cs40l50_reset_dsp()
243 ret = cs_dsp_power_up(&cs40l50->dsp, cs40l50->fw, "cs40l50.wmfw", in cs40l50_reset_dsp()
256 ret = cs_dsp_run(&cs40l50->dsp); in cs40l50_reset_dsp()
279 /* Wavetable is optional; bringup DSP regardless */ in cs40l50_dsp_bringup()
284 dev_err(cs40l50->dev, "Failed to reset DSP: %d\n", ret); in cs40l50_dsp_bringup()
296 &cs40l50->dsp); in cs40l50_dsp_bringup()
302 ret = devm_add_action_or_reset(cs40l50->dev, cs40l50_dsp_stop, &cs40l50->dsp); in cs40l50_dsp_bringup()
337 { "DSP", },
381 /* Read from DSP queue, log, and update read pointer */ in cs40l50_dsp_queue()
399 dev_dbg(cs40l50->dev, "DSP payload: %#X", val); in cs40l50_dsp_queue()
436 /* Handle DSP and hardware interrupts separately */ in cs40l50_irq_init()
519 return dev_err_probe(dev, ret, "Failed to initialize DSP\n"); in cs40l50_probe()