Lines Matching full:msg

35 static int imx_rpmsg_pcm_send_message(struct rpmsg_msg *msg,  in imx_rpmsg_pcm_send_message()  argument
48 dev_dbg(&rpdev->dev, "send cmd %d\n", msg->s_msg.header.cmd); in imx_rpmsg_pcm_send_message()
50 if (!(msg->s_msg.header.type == MSG_TYPE_C)) in imx_rpmsg_pcm_send_message()
53 ret = rpmsg_send(rpdev->ept, (void *)&msg->s_msg, in imx_rpmsg_pcm_send_message()
61 /* No receive msg for TYPE_C command */ in imx_rpmsg_pcm_send_message()
62 if (msg->s_msg.header.type == MSG_TYPE_C) { in imx_rpmsg_pcm_send_message()
72 msg->s_msg.header.cmd); in imx_rpmsg_pcm_send_message()
77 memcpy(&msg->r_msg, &info->r_msg, sizeof(struct rpmsg_r_msg)); in imx_rpmsg_pcm_send_message()
78 memcpy(&info->msg[msg->r_msg.header.cmd].r_msg, in imx_rpmsg_pcm_send_message()
79 &msg->r_msg, sizeof(struct rpmsg_r_msg)); in imx_rpmsg_pcm_send_message()
88 switch (msg->s_msg.header.cmd) { in imx_rpmsg_pcm_send_message()
90 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_send_message()
93 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_send_message()
99 dev_dbg(&rpdev->dev, "cmd:%d, resp %d\n", msg->s_msg.header.cmd, in imx_rpmsg_pcm_send_message()
108 struct rpmsg_msg *msg, in imx_rpmsg_insert_workqueue() argument
122 memcpy(&info->work_list[index].msg, msg, in imx_rpmsg_insert_workqueue()
142 struct rpmsg_msg *msg; in imx_rpmsg_pcm_hw_params() local
146 msg = &info->msg[TX_HW_PARAM]; in imx_rpmsg_pcm_hw_params()
147 msg->s_msg.header.cmd = TX_HW_PARAM; in imx_rpmsg_pcm_hw_params()
149 msg = &info->msg[RX_HW_PARAM]; in imx_rpmsg_pcm_hw_params()
150 msg->s_msg.header.cmd = RX_HW_PARAM; in imx_rpmsg_pcm_hw_params()
153 msg->s_msg.param.rate = params_rate(params); in imx_rpmsg_pcm_hw_params()
157 msg->s_msg.param.format = RPMSG_S16_LE; in imx_rpmsg_pcm_hw_params()
160 msg->s_msg.param.format = RPMSG_S24_LE; in imx_rpmsg_pcm_hw_params()
163 msg->s_msg.param.format = RPMSG_DSD_U16_LE; in imx_rpmsg_pcm_hw_params()
166 msg->s_msg.param.format = RPMSG_DSD_U32_LE; in imx_rpmsg_pcm_hw_params()
169 msg->s_msg.param.format = RPMSG_S32_LE; in imx_rpmsg_pcm_hw_params()
175 msg->s_msg.param.channels = RPMSG_CH_LEFT; in imx_rpmsg_pcm_hw_params()
178 msg->s_msg.param.channels = RPMSG_CH_STEREO; in imx_rpmsg_pcm_hw_params()
185 info->send_message(msg, info); in imx_rpmsg_pcm_hw_params()
194 struct rpmsg_msg *msg; in imx_rpmsg_pcm_pointer() local
199 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_pointer()
201 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_pointer()
203 buffer_tail = msg->r_msg.param.buffer_tail; in imx_rpmsg_pcm_pointer()
215 struct rpmsg_msg *msg; in imx_rpmsg_timer_callback() local
218 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_timer_callback()
219 msg->s_msg.header.cmd = TX_PERIOD_DONE; in imx_rpmsg_timer_callback()
221 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_timer_callback()
222 msg->s_msg.header.cmd = RX_PERIOD_DONE; in imx_rpmsg_timer_callback()
225 imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_timer_callback()
232 struct rpmsg_msg *msg; in imx_rpmsg_pcm_open() local
237 msg = &info->msg[TX_OPEN]; in imx_rpmsg_pcm_open()
238 msg->s_msg.header.cmd = TX_OPEN; in imx_rpmsg_pcm_open()
242 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
243 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
244 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_open()
247 msg = &info->msg[RX_OPEN]; in imx_rpmsg_pcm_open()
248 msg->s_msg.header.cmd = RX_OPEN; in imx_rpmsg_pcm_open()
252 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
253 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_pcm_open()
254 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_pcm_open()
257 info->send_message(msg, info); in imx_rpmsg_pcm_open()
284 struct rpmsg_msg *msg; in imx_rpmsg_pcm_close() local
291 msg = &info->msg[TX_CLOSE]; in imx_rpmsg_pcm_close()
292 msg->s_msg.header.cmd = TX_CLOSE; in imx_rpmsg_pcm_close()
294 msg = &info->msg[RX_CLOSE]; in imx_rpmsg_pcm_close()
295 msg->s_msg.header.cmd = RX_CLOSE; in imx_rpmsg_pcm_close()
298 info->send_message(msg, info); in imx_rpmsg_pcm_close()
305 dev_warn(rtd->dev, "Msg is dropped!, number is %d\n", in imx_rpmsg_pcm_close()
350 struct rpmsg_msg *msg; in imx_rpmsg_prepare_and_submit() local
353 msg = &info->msg[TX_BUFFER]; in imx_rpmsg_prepare_and_submit()
354 msg->s_msg.header.cmd = TX_BUFFER; in imx_rpmsg_prepare_and_submit()
356 msg = &info->msg[RX_BUFFER]; in imx_rpmsg_prepare_and_submit()
357 msg->s_msg.header.cmd = RX_BUFFER; in imx_rpmsg_prepare_and_submit()
361 msg->s_msg.param.buffer_addr = substream->runtime->dma_addr; in imx_rpmsg_prepare_and_submit()
362 msg->s_msg.param.buffer_size = snd_pcm_lib_buffer_bytes(substream); in imx_rpmsg_prepare_and_submit()
363 msg->s_msg.param.period_size = snd_pcm_lib_period_bytes(substream); in imx_rpmsg_prepare_and_submit()
364 msg->s_msg.param.buffer_tail = 0; in imx_rpmsg_prepare_and_submit()
366 info->num_period[substream->stream] = msg->s_msg.param.buffer_size / in imx_rpmsg_prepare_and_submit()
367 msg->s_msg.param.period_size; in imx_rpmsg_prepare_and_submit()
372 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_prepare_and_submit()
379 struct rpmsg_msg *msg; in imx_rpmsg_async_issue_pending() local
382 msg = &info->msg[TX_START]; in imx_rpmsg_async_issue_pending()
383 msg->s_msg.header.cmd = TX_START; in imx_rpmsg_async_issue_pending()
385 msg = &info->msg[RX_START]; in imx_rpmsg_async_issue_pending()
386 msg->s_msg.header.cmd = RX_START; in imx_rpmsg_async_issue_pending()
389 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_async_issue_pending()
396 struct rpmsg_msg *msg; in imx_rpmsg_restart() local
399 msg = &info->msg[TX_RESTART]; in imx_rpmsg_restart()
400 msg->s_msg.header.cmd = TX_RESTART; in imx_rpmsg_restart()
402 msg = &info->msg[RX_RESTART]; in imx_rpmsg_restart()
403 msg->s_msg.header.cmd = RX_RESTART; in imx_rpmsg_restart()
406 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_restart()
413 struct rpmsg_msg *msg; in imx_rpmsg_pause() local
416 msg = &info->msg[TX_PAUSE]; in imx_rpmsg_pause()
417 msg->s_msg.header.cmd = TX_PAUSE; in imx_rpmsg_pause()
419 msg = &info->msg[RX_PAUSE]; in imx_rpmsg_pause()
420 msg->s_msg.header.cmd = RX_PAUSE; in imx_rpmsg_pause()
423 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_pause()
430 struct rpmsg_msg *msg; in imx_rpmsg_terminate_all() local
434 msg = &info->msg[TX_TERMINATE]; in imx_rpmsg_terminate_all()
435 msg->s_msg.header.cmd = TX_TERMINATE; in imx_rpmsg_terminate_all()
438 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
439 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
440 info->msg[TX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_terminate_all()
442 msg = &info->msg[RX_TERMINATE]; in imx_rpmsg_terminate_all()
443 msg->s_msg.header.cmd = RX_TERMINATE; in imx_rpmsg_terminate_all()
446 info->msg[cmd].s_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
447 info->msg[cmd].r_msg.param.buffer_tail = 0; in imx_rpmsg_terminate_all()
448 info->msg[RX_POINTER].r_msg.param.buffer_offset = 0; in imx_rpmsg_terminate_all()
453 return imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_terminate_all()
507 * all the period index to M core, reduce some unnessesary msg
521 struct rpmsg_msg *msg; in imx_rpmsg_pcm_ack() local
530 msg = &info->msg[TX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_ack()
531 msg->s_msg.header.cmd = TX_PERIOD_DONE; in imx_rpmsg_pcm_ack()
533 msg = &info->msg[RX_PERIOD_DONE + MSG_TYPE_A_NUM]; in imx_rpmsg_pcm_ack()
534 msg->s_msg.header.cmd = RX_PERIOD_DONE; in imx_rpmsg_pcm_ack()
537 msg->s_msg.header.type = MSG_TYPE_C; in imx_rpmsg_pcm_ack()
544 if (buffer_tail != msg->s_msg.param.buffer_tail) { in imx_rpmsg_pcm_ack()
545 written_num = buffer_tail - msg->s_msg.param.buffer_tail; in imx_rpmsg_pcm_ack()
549 msg->s_msg.param.buffer_tail = buffer_tail; in imx_rpmsg_pcm_ack()
553 memcpy(&info->notify[substream->stream], msg, in imx_rpmsg_pcm_ack()
577 imx_rpmsg_insert_workqueue(substream, msg, info); in imx_rpmsg_pcm_ack()
624 struct rpmsg_msg msg; in imx_rpmsg_pcm_work() local
638 memcpy(&msg, &info->notify[TX], sizeof(struct rpmsg_s_msg)); in imx_rpmsg_pcm_work()
641 info->send_message(&msg, info); in imx_rpmsg_pcm_work()
648 memcpy(&msg, &info->notify[RX], sizeof(struct rpmsg_s_msg)); in imx_rpmsg_pcm_work()
651 info->send_message(&msg, info); in imx_rpmsg_pcm_work()
657 if (work_of_rpmsg->msg.s_msg.header.type == MSG_TYPE_C && in imx_rpmsg_pcm_work()
658 (work_of_rpmsg->msg.s_msg.header.cmd == TX_PERIOD_DONE || in imx_rpmsg_pcm_work()
659 work_of_rpmsg->msg.s_msg.header.cmd == RX_PERIOD_DONE)) in imx_rpmsg_pcm_work()
663 info->send_message(&work_of_rpmsg->msg, info); in imx_rpmsg_pcm_work()
705 /* Initialize msg */ in imx_rpmsg_pcm_probe()
707 info->msg[i].s_msg.header.cate = IMX_RPMSG_AUDIO; in imx_rpmsg_pcm_probe()
708 info->msg[i].s_msg.header.major = IMX_RMPSG_MAJOR; in imx_rpmsg_pcm_probe()
709 info->msg[i].s_msg.header.minor = IMX_RMPSG_MINOR; in imx_rpmsg_pcm_probe()
710 info->msg[i].s_msg.header.type = MSG_TYPE_A; in imx_rpmsg_pcm_probe()
711 info->msg[i].s_msg.param.audioindex = 0; in imx_rpmsg_pcm_probe()
781 rpmsg_tx = &info->msg[TX_SUSPEND]; in imx_rpmsg_pcm_suspend()
782 rpmsg_rx = &info->msg[RX_SUSPEND]; in imx_rpmsg_pcm_suspend()
799 rpmsg_tx = &info->msg[TX_RESUME]; in imx_rpmsg_pcm_resume()
800 rpmsg_rx = &info->msg[RX_RESUME]; in imx_rpmsg_pcm_resume()