Lines Matching refs:byt
158 struct sst_byt *byt; member
213 static struct sst_byt_stream *sst_byt_get_stream(struct sst_byt *byt, in sst_byt_get_stream() argument
218 list_for_each_entry(stream, &byt->stream_list, node) { in sst_byt_get_stream()
226 static void sst_byt_stream_update(struct sst_byt *byt, struct ipc_message *msg) in sst_byt_stream_update() argument
233 stream = sst_byt_get_stream(byt, stream_id); in sst_byt_stream_update()
250 static int sst_byt_process_reply(struct sst_byt *byt, u64 header) in sst_byt_process_reply() argument
254 msg = sst_ipc_reply_find_msg(&byt->ipc, header); in sst_byt_process_reply()
260 sst_dsp_inbox_read(byt->dsp, msg->rx_data, msg->rx_size); in sst_byt_process_reply()
264 sst_byt_stream_update(byt, msg); in sst_byt_process_reply()
268 sst_ipc_tx_msg_reply_complete(&byt->ipc, msg); in sst_byt_process_reply()
273 static void sst_byt_fw_ready(struct sst_byt *byt, u64 header) in sst_byt_fw_ready() argument
275 dev_dbg(byt->dev, "ipc: DSP is ready 0x%llX\n", header); in sst_byt_fw_ready()
277 byt->boot_complete = true; in sst_byt_fw_ready()
278 wake_up(&byt->boot_wait); in sst_byt_fw_ready()
281 static int sst_byt_process_notification(struct sst_byt *byt, in sst_byt_process_notification() argument
284 struct sst_dsp *sst = byt->dsp; in sst_byt_process_notification()
296 stream = sst_byt_get_stream(byt, stream_id); in sst_byt_process_notification()
304 sst_byt_fw_ready(byt, header); in sst_byt_process_notification()
314 struct sst_byt *byt = sst_dsp_get_thread_context(sst); in sst_byt_irq_thread() local
315 struct sst_generic_ipc *ipc = &byt->ipc; in sst_byt_irq_thread()
325 sst_byt_process_notification(byt, &flags); in sst_byt_irq_thread()
328 sst_byt_process_reply(byt, header); in sst_byt_irq_thread()
353 struct sst_byt_stream *sst_byt_stream_new(struct sst_byt *byt, int id, in sst_byt_stream_new() argument
358 struct sst_dsp *sst = byt->dsp; in sst_byt_stream_new()
366 list_add(&stream->node, &byt->stream_list); in sst_byt_stream_new()
369 stream->byt = byt; in sst_byt_stream_new()
376 int sst_byt_stream_set_bits(struct sst_byt *byt, struct sst_byt_stream *stream, in sst_byt_stream_set_bits() argument
383 int sst_byt_stream_set_channels(struct sst_byt *byt, in sst_byt_stream_set_channels() argument
390 int sst_byt_stream_set_rate(struct sst_byt *byt, struct sst_byt_stream *stream, in sst_byt_stream_set_rate() argument
398 int sst_byt_stream_type(struct sst_byt *byt, struct sst_byt_stream *stream, in sst_byt_stream_type() argument
409 int sst_byt_stream_buffer(struct sst_byt *byt, struct sst_byt_stream *stream, in sst_byt_stream_buffer() argument
424 int sst_byt_stream_commit(struct sst_byt *byt, struct sst_byt_stream *stream) in sst_byt_stream_commit() argument
434 ret = sst_ipc_tx_message_wait(&byt->ipc, header, str_req, in sst_byt_stream_commit()
438 dev_err(byt->dev, "ipc: error stream commit failed\n"); in sst_byt_stream_commit()
447 int sst_byt_stream_free(struct sst_byt *byt, struct sst_byt_stream *stream) in sst_byt_stream_free() argument
451 struct sst_dsp *sst = byt->dsp; in sst_byt_stream_free()
458 ret = sst_ipc_tx_message_wait(&byt->ipc, header, NULL, 0, NULL, 0); in sst_byt_stream_free()
460 dev_err(byt->dev, "ipc: free stream %d failed\n", in sst_byt_stream_free()
475 static int sst_byt_stream_operations(struct sst_byt *byt, int type, in sst_byt_stream_operations() argument
482 return sst_ipc_tx_message_wait(&byt->ipc, header, NULL, in sst_byt_stream_operations()
485 return sst_ipc_tx_message_nowait(&byt->ipc, header, in sst_byt_stream_operations()
490 int sst_byt_stream_start(struct sst_byt *byt, struct sst_byt_stream *stream, in sst_byt_stream_start() argument
506 ret = sst_ipc_tx_message_nowait(&byt->ipc, header, tx_msg, size); in sst_byt_stream_start()
508 dev_err(byt->dev, "ipc: error failed to start stream %d\n", in sst_byt_stream_start()
514 int sst_byt_stream_stop(struct sst_byt *byt, struct sst_byt_stream *stream) in sst_byt_stream_stop() argument
522 ret = sst_byt_stream_operations(byt, IPC_IA_DROP_STREAM, in sst_byt_stream_stop()
525 dev_err(byt->dev, "ipc: error failed to stop stream %d\n", in sst_byt_stream_stop()
530 int sst_byt_stream_pause(struct sst_byt *byt, struct sst_byt_stream *stream) in sst_byt_stream_pause() argument
534 ret = sst_byt_stream_operations(byt, IPC_IA_PAUSE_STREAM, in sst_byt_stream_pause()
537 dev_err(byt->dev, "ipc: error failed to pause stream %d\n", in sst_byt_stream_pause()
543 int sst_byt_stream_resume(struct sst_byt *byt, struct sst_byt_stream *stream) in sst_byt_stream_resume() argument
547 ret = sst_byt_stream_operations(byt, IPC_IA_RESUME_STREAM, in sst_byt_stream_resume()
550 dev_err(byt->dev, "ipc: error failed to resume stream %d\n", in sst_byt_stream_resume()
556 int sst_byt_get_dsp_position(struct sst_byt *byt, in sst_byt_get_dsp_position() argument
559 struct sst_dsp *sst = byt->dsp; in sst_byt_get_dsp_position()
571 struct sst_dsp *sst_byt_get_dsp(struct sst_byt *byt) in sst_byt_get_dsp() argument
573 return byt->dsp; in sst_byt_get_dsp()
583 struct sst_byt *byt = pdata->dsp; in sst_byt_dsp_suspend_late() local
585 dev_dbg(byt->dev, "dsp reset\n"); in sst_byt_dsp_suspend_late()
586 sst_dsp_reset(byt->dsp); in sst_byt_dsp_suspend_late()
587 sst_ipc_drop_all(&byt->ipc); in sst_byt_dsp_suspend_late()
588 dev_dbg(byt->dev, "dsp in reset\n"); in sst_byt_dsp_suspend_late()
590 dev_dbg(byt->dev, "free all blocks and unload fw\n"); in sst_byt_dsp_suspend_late()
591 sst_fw_unload(byt->fw); in sst_byt_dsp_suspend_late()
599 struct sst_byt *byt = pdata->dsp; in sst_byt_dsp_boot() local
602 dev_dbg(byt->dev, "reload dsp fw\n"); in sst_byt_dsp_boot()
604 sst_dsp_reset(byt->dsp); in sst_byt_dsp_boot()
606 ret = sst_fw_reload(byt->fw); in sst_byt_dsp_boot()
613 byt->boot_complete = false; in sst_byt_dsp_boot()
614 sst_dsp_boot(byt->dsp); in sst_byt_dsp_boot()
615 dev_dbg(byt->dev, "dsp booting...\n"); in sst_byt_dsp_boot()
623 struct sst_byt *byt = pdata->dsp; in sst_byt_dsp_wait_for_ready() local
626 dev_dbg(byt->dev, "wait for dsp reboot\n"); in sst_byt_dsp_wait_for_ready()
628 err = wait_event_timeout(byt->boot_wait, byt->boot_complete, in sst_byt_dsp_wait_for_ready()
631 dev_err(byt->dev, "ipc: error DSP boot timeout\n"); in sst_byt_dsp_wait_for_ready()
635 dev_dbg(byt->dev, "dsp rebooted\n"); in sst_byt_dsp_wait_for_ready()
692 struct sst_byt *byt; in sst_byt_dsp_init() local
700 byt = devm_kzalloc(dev, sizeof(*byt), GFP_KERNEL); in sst_byt_dsp_init()
701 if (byt == NULL) in sst_byt_dsp_init()
704 byt->dev = dev; in sst_byt_dsp_init()
706 ipc = &byt->ipc; in sst_byt_dsp_init()
720 INIT_LIST_HEAD(&byt->stream_list); in sst_byt_dsp_init()
721 init_waitqueue_head(&byt->boot_wait); in sst_byt_dsp_init()
722 byt_dev.thread_context = byt; in sst_byt_dsp_init()
725 byt->dsp = sst_dsp_new(dev, &byt_dev, pdata); in sst_byt_dsp_init()
726 if (byt->dsp == NULL) { in sst_byt_dsp_init()
731 ipc->dsp = byt->dsp; in sst_byt_dsp_init()
734 sst_dsp_reset(byt->dsp); in sst_byt_dsp_init()
736 byt_sst_fw = sst_fw_new(byt->dsp, pdata->fw, byt); in sst_byt_dsp_init()
744 sst_dsp_boot(byt->dsp); in sst_byt_dsp_init()
745 err = wait_event_timeout(byt->boot_wait, byt->boot_complete, in sst_byt_dsp_init()
749 dev_err(byt->dev, "ipc: error DSP boot timeout\n"); in sst_byt_dsp_init()
754 sst_dsp_inbox_read(byt->dsp, &init, sizeof(init)); in sst_byt_dsp_init()
755 dev_info(byt->dev, "FW version: %02x.%02x.%02x.%02x\n", in sst_byt_dsp_init()
758 dev_info(byt->dev, "Build type: %x\n", init.fw_version.type); in sst_byt_dsp_init()
759 dev_info(byt->dev, "Build date: %s %s\n", in sst_byt_dsp_init()
762 pdata->dsp = byt; in sst_byt_dsp_init()
763 byt->fw = byt_sst_fw; in sst_byt_dsp_init()
768 sst_dsp_reset(byt->dsp); in sst_byt_dsp_init()
771 sst_dsp_free(byt->dsp); in sst_byt_dsp_init()
782 struct sst_byt *byt = pdata->dsp; in sst_byt_dsp_free() local
784 sst_dsp_reset(byt->dsp); in sst_byt_dsp_free()
785 sst_fw_free_all(byt->dsp); in sst_byt_dsp_free()
786 sst_dsp_free(byt->dsp); in sst_byt_dsp_free()
787 sst_ipc_fini(&byt->ipc); in sst_byt_dsp_free()