• Home
  • Raw
  • Download

Lines Matching refs:info

20 	.info = SNDRV_PCM_INFO_INTERLEAVED |
37 struct rpmsg_info *info) in imx_rpmsg_pcm_send_message() argument
39 struct rpmsg_device *rpdev = info->rpdev; in imx_rpmsg_pcm_send_message()
42 mutex_lock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
44 dev_err(info->dev, "rpmsg channel not ready\n"); in imx_rpmsg_pcm_send_message()
45 mutex_unlock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
52 reinit_completion(&info->cmd_complete); in imx_rpmsg_pcm_send_message()
58 mutex_unlock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
64 mutex_unlock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
69 ret = wait_for_completion_timeout(&info->cmd_complete, in imx_rpmsg_pcm_send_message()
74 mutex_unlock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
78 memcpy(&msg->r_msg, &info->r_msg, sizeof(struct rpmsg_r_msg)); in imx_rpmsg_pcm_send_message()
79 memcpy(&info->msg[msg->r_msg.header.cmd].r_msg, in imx_rpmsg_pcm_send_message()
91 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_send_message()
94 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_send_message()
101 info->r_msg.param.resp); in imx_rpmsg_pcm_send_message()
103 mutex_unlock(&info->msg_lock); in imx_rpmsg_pcm_send_message()
110 struct rpmsg_info *info) in imx_rpmsg_insert_workqueue() argument
119 spin_lock_irqsave(&info->wq_lock, flags); in imx_rpmsg_insert_workqueue()
120 if (info->work_write_index != info->work_read_index) { in imx_rpmsg_insert_workqueue()
121 int index = info->work_write_index; in imx_rpmsg_insert_workqueue()
123 memcpy(&info->work_list[index].msg, msg, in imx_rpmsg_insert_workqueue()
126 queue_work(info->rpmsg_wq, &info->work_list[index].work); in imx_rpmsg_insert_workqueue()
127 info->work_write_index++; in imx_rpmsg_insert_workqueue()
128 info->work_write_index %= WORK_MAX_NUM; in imx_rpmsg_insert_workqueue()
130 info->msg_drop_count[substream->stream]++; in imx_rpmsg_insert_workqueue()
133 spin_unlock_irqrestore(&info->wq_lock, flags); in imx_rpmsg_insert_workqueue()
142 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pcm_hw_params() local
147 msg = &info->msg[TX_HW_PARAM]; in imx_rpmsg_pcm_hw_params()
150 msg = &info->msg[RX_HW_PARAM]; in imx_rpmsg_pcm_hw_params()
186 info->send_message(msg, info); in imx_rpmsg_pcm_hw_params()
194 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pcm_pointer() local
200 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_pointer()
202 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_pointer()
215 struct rpmsg_info *info = stream_timer->info; in imx_rpmsg_timer_callback() local
219 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_timer_callback()
222 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_timer_callback()
226 imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_timer_callback()
232 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pcm_open() local
238 msg = &info->msg[TX_OPEN]; in imx_rpmsg_pcm_open()
243 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
244 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
245 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_open()
248 msg = &info->msg[RX_OPEN]; in imx_rpmsg_pcm_open()
253 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
254 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
255 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_open()
258 info->send_message(msg, info); in imx_rpmsg_pcm_open()
270 info->msg_drop_count[substream->stream] = 0; in imx_rpmsg_pcm_open()
273 info->stream_timer[substream->stream].info = info; in imx_rpmsg_pcm_open()
274 info->stream_timer[substream->stream].substream = substream; in imx_rpmsg_pcm_open()
275 timer_setup(&info->stream_timer[substream->stream].timer, in imx_rpmsg_pcm_open()
284 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pcm_close() local
289 flush_workqueue(info->rpmsg_wq); in imx_rpmsg_pcm_close()
292 msg = &info->msg[TX_CLOSE]; in imx_rpmsg_pcm_close()
295 msg = &info->msg[RX_CLOSE]; in imx_rpmsg_pcm_close()
299 info->send_message(msg, info); in imx_rpmsg_pcm_close()
301 del_timer(&info->stream_timer[substream->stream].timer); in imx_rpmsg_pcm_close()
305 if (info->msg_drop_count[substream->stream]) in imx_rpmsg_pcm_close()
307 info->msg_drop_count[substream->stream]); in imx_rpmsg_pcm_close()
350 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_prepare_and_submit() local
354 msg = &info->msg[TX_BUFFER]; in imx_rpmsg_prepare_and_submit()
357 msg = &info->msg[RX_BUFFER]; in imx_rpmsg_prepare_and_submit()
367 info->num_period[substream->stream] = msg->s_msg.param.buffer_size / in imx_rpmsg_prepare_and_submit()
370 info->callback[substream->stream] = imx_rpmsg_pcm_dma_complete; in imx_rpmsg_prepare_and_submit()
371 info->callback_param[substream->stream] = substream; in imx_rpmsg_prepare_and_submit()
373 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_prepare_and_submit()
379 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_async_issue_pending() local
383 msg = &info->msg[TX_START]; in imx_rpmsg_async_issue_pending()
386 msg = &info->msg[RX_START]; in imx_rpmsg_async_issue_pending()
390 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_async_issue_pending()
396 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_restart() local
400 msg = &info->msg[TX_RESTART]; in imx_rpmsg_restart()
403 msg = &info->msg[RX_RESTART]; in imx_rpmsg_restart()
407 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_restart()
413 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pause() local
417 msg = &info->msg[TX_PAUSE]; in imx_rpmsg_pause()
420 msg = &info->msg[RX_PAUSE]; in imx_rpmsg_pause()
424 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_pause()
430 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_terminate_all() local
435 msg = &info->msg[TX_TERMINATE]; in imx_rpmsg_terminate_all()
439 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
440 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
441 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_terminate_all()
443 msg = &info->msg[RX_TERMINATE]; in imx_rpmsg_terminate_all()
447 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
448 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
449 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_terminate_all()
452 del_timer(&info->stream_timer[substream->stream].timer); in imx_rpmsg_terminate_all()
454 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_terminate_all()
482 if (runtime->info & SNDRV_PCM_INFO_PAUSE) in imx_rpmsg_pcm_trigger()
518 struct rpmsg_info *info = dev_get_drvdata(component->dev); in imx_rpmsg_pcm_ack() local
531 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_ack()
534 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_ack()
553 spin_lock_irqsave(&info->lock[substream->stream], flags); in imx_rpmsg_pcm_ack()
554 memcpy(&info->notify[substream->stream], msg, in imx_rpmsg_pcm_ack()
556 info->notify_updated[substream->stream] = true; in imx_rpmsg_pcm_ack()
557 spin_unlock_irqrestore(&info->lock[substream->stream], flags); in imx_rpmsg_pcm_ack()
564 timer = &info->stream_timer[substream->stream].timer; in imx_rpmsg_pcm_ack()
578 imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_pcm_ack()
624 struct rpmsg_info *info; in imx_rpmsg_pcm_work() local
629 info = work_of_rpmsg->info; in imx_rpmsg_pcm_work()
637 spin_lock_irqsave(&info->lock[TX], flags); in imx_rpmsg_pcm_work()
638 if (info->notify_updated[TX]) { in imx_rpmsg_pcm_work()
639 memcpy(&msg, &info->notify[TX], sizeof(struct rpmsg_s_msg)); in imx_rpmsg_pcm_work()
640 info->notify_updated[TX] = false; in imx_rpmsg_pcm_work()
641 spin_unlock_irqrestore(&info->lock[TX], flags); in imx_rpmsg_pcm_work()
642 info->send_message(&msg, info); in imx_rpmsg_pcm_work()
644 spin_unlock_irqrestore(&info->lock[TX], flags); in imx_rpmsg_pcm_work()
647 spin_lock_irqsave(&info->lock[RX], flags); in imx_rpmsg_pcm_work()
648 if (info->notify_updated[RX]) { in imx_rpmsg_pcm_work()
649 memcpy(&msg, &info->notify[RX], sizeof(struct rpmsg_s_msg)); in imx_rpmsg_pcm_work()
650 info->notify_updated[RX] = false; in imx_rpmsg_pcm_work()
651 spin_unlock_irqrestore(&info->lock[RX], flags); in imx_rpmsg_pcm_work()
652 info->send_message(&msg, info); in imx_rpmsg_pcm_work()
654 spin_unlock_irqrestore(&info->lock[RX], flags); in imx_rpmsg_pcm_work()
664 info->send_message(&work_of_rpmsg->msg, info); in imx_rpmsg_pcm_work()
667 spin_lock_irqsave(&info->wq_lock, flags); in imx_rpmsg_pcm_work()
668 info->work_read_index++; in imx_rpmsg_pcm_work()
669 info->work_read_index %= WORK_MAX_NUM; in imx_rpmsg_pcm_work()
670 spin_unlock_irqrestore(&info->wq_lock, flags); in imx_rpmsg_pcm_work()
676 struct rpmsg_info *info; in imx_rpmsg_pcm_probe() local
679 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); in imx_rpmsg_pcm_probe()
680 if (!info) in imx_rpmsg_pcm_probe()
683 platform_set_drvdata(pdev, info); in imx_rpmsg_pcm_probe()
685 info->rpdev = container_of(pdev->dev.parent, struct rpmsg_device, dev); in imx_rpmsg_pcm_probe()
686 info->dev = &pdev->dev; in imx_rpmsg_pcm_probe()
688 info->rpmsg_wq = alloc_ordered_workqueue("rpmsg_audio", in imx_rpmsg_pcm_probe()
692 if (!info->rpmsg_wq) { in imx_rpmsg_pcm_probe()
698 info->work_write_index = 1; in imx_rpmsg_pcm_probe()
699 info->send_message = imx_rpmsg_pcm_send_message; in imx_rpmsg_pcm_probe()
702 INIT_WORK(&info->work_list[i].work, imx_rpmsg_pcm_work); in imx_rpmsg_pcm_probe()
703 info->work_list[i].info = info; in imx_rpmsg_pcm_probe()
708 info->msg[i].s_msg.header.cate = IMX_RPMSG_AUDIO; in imx_rpmsg_pcm_probe()
709 info->msg[i].s_msg.header.major = IMX_RMPSG_MAJOR; in imx_rpmsg_pcm_probe()
710 info->msg[i].s_msg.header.minor = IMX_RMPSG_MINOR; in imx_rpmsg_pcm_probe()
711 info->msg[i].s_msg.header.type = MSG_TYPE_A; in imx_rpmsg_pcm_probe()
712 info->msg[i].s_msg.param.audioindex = 0; in imx_rpmsg_pcm_probe()
715 init_completion(&info->cmd_complete); in imx_rpmsg_pcm_probe()
716 mutex_init(&info->msg_lock); in imx_rpmsg_pcm_probe()
717 spin_lock_init(&info->lock[TX]); in imx_rpmsg_pcm_probe()
718 spin_lock_init(&info->lock[RX]); in imx_rpmsg_pcm_probe()
719 spin_lock_init(&info->wq_lock); in imx_rpmsg_pcm_probe()
739 if (info->rpmsg_wq) in imx_rpmsg_pcm_probe()
740 destroy_workqueue(info->rpmsg_wq); in imx_rpmsg_pcm_probe()
747 struct rpmsg_info *info = platform_get_drvdata(pdev); in imx_rpmsg_pcm_remove() local
749 if (info->rpmsg_wq) in imx_rpmsg_pcm_remove()
750 destroy_workqueue(info->rpmsg_wq); in imx_rpmsg_pcm_remove()
758 struct rpmsg_info *info = dev_get_drvdata(dev); in imx_rpmsg_pcm_runtime_resume() local
760 cpu_latency_qos_add_request(&info->pm_qos_req, 0); in imx_rpmsg_pcm_runtime_resume()
767 struct rpmsg_info *info = dev_get_drvdata(dev); in imx_rpmsg_pcm_runtime_suspend() local
769 cpu_latency_qos_remove_request(&info->pm_qos_req); in imx_rpmsg_pcm_runtime_suspend()
778 struct rpmsg_info *info = dev_get_drvdata(dev); in imx_rpmsg_pcm_suspend() local
782 rpmsg_tx = &info->msg[TX_SUSPEND]; in imx_rpmsg_pcm_suspend()
783 rpmsg_rx = &info->msg[RX_SUSPEND]; in imx_rpmsg_pcm_suspend()
786 info->send_message(rpmsg_tx, info); in imx_rpmsg_pcm_suspend()
789 info->send_message(rpmsg_rx, info); in imx_rpmsg_pcm_suspend()
796 struct rpmsg_info *info = dev_get_drvdata(dev); in imx_rpmsg_pcm_resume() local
800 rpmsg_tx = &info->msg[TX_RESUME]; in imx_rpmsg_pcm_resume()
801 rpmsg_rx = &info->msg[RX_RESUME]; in imx_rpmsg_pcm_resume()
804 info->send_message(rpmsg_tx, info); in imx_rpmsg_pcm_resume()
807 info->send_message(rpmsg_rx, info); in imx_rpmsg_pcm_resume()