Lines Matching refs:rmh
545 static int pcxhr_read_rmh_status(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_read_rmh_status() argument
554 if (rmh->stat_len < PCXHR_SIZE_MAX_STATUS) in pcxhr_read_rmh_status()
556 else max_stat_len = rmh->stat_len; in pcxhr_read_rmh_status()
558 for (i = 0; i < rmh->stat_len; i++) { in pcxhr_read_rmh_status()
577 if (rmh->dsp_stat != RMH_SSIZE_FIXED) { in pcxhr_read_rmh_status()
578 if (rmh->dsp_stat == RMH_SSIZE_ARG) { in pcxhr_read_rmh_status()
579 rmh->stat_len = (data & 0x0000ff) + 1; in pcxhr_read_rmh_status()
583 rmh->stat_len = 1; in pcxhr_read_rmh_status()
587 rmh->stat_len++; in pcxhr_read_rmh_status()
594 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_read_rmh_status()
598 rmh->stat[i] = data; in pcxhr_read_rmh_status()
600 if (rmh->stat_len > max_stat_len) { in pcxhr_read_rmh_status()
602 rmh->stat_len); in pcxhr_read_rmh_status()
603 rmh->stat_len = max_stat_len; in pcxhr_read_rmh_status()
608 static int pcxhr_send_msg_nolock(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_send_msg_nolock() argument
615 if (snd_BUG_ON(rmh->cmd_len >= PCXHR_SIZE_MAX_CMD)) in pcxhr_send_msg_nolock()
638 data = rmh->cmd[0]; in pcxhr_send_msg_nolock()
640 if (rmh->cmd_len > 1) in pcxhr_send_msg_nolock()
645 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_send_msg_nolock()
647 data, cmd_names[rmh->cmd_idx]); in pcxhr_send_msg_nolock()
658 if (rmh->cmd_len > 1) { in pcxhr_send_msg_nolock()
660 data = rmh->cmd_len - 1; in pcxhr_send_msg_nolock()
671 for (i=1; i < rmh->cmd_len; i++) { in pcxhr_send_msg_nolock()
673 data = rmh->cmd[i]; in pcxhr_send_msg_nolock()
675 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_send_msg_nolock()
712 rmh->cmd_idx, data); in pcxhr_send_msg_nolock()
716 err = pcxhr_read_rmh_status(mgr, rmh); in pcxhr_send_msg_nolock()
730 void pcxhr_init_rmh(struct pcxhr_rmh *rmh, int cmd) in pcxhr_init_rmh() argument
734 rmh->cmd[0] = pcxhr_dsp_cmds[cmd].opcode; in pcxhr_init_rmh()
735 rmh->cmd_len = 1; in pcxhr_init_rmh()
736 rmh->stat_len = pcxhr_dsp_cmds[cmd].st_length; in pcxhr_init_rmh()
737 rmh->dsp_stat = pcxhr_dsp_cmds[cmd].st_type; in pcxhr_init_rmh()
738 rmh->cmd_idx = cmd; in pcxhr_init_rmh()
742 void pcxhr_set_pipe_cmd_params(struct pcxhr_rmh *rmh, int capture, in pcxhr_set_pipe_cmd_params() argument
748 rmh->cmd[0] |= 0x800; /* COMMAND_RECORD_MASK */ in pcxhr_set_pipe_cmd_params()
750 rmh->cmd[0] |= (param1 << FIELD_SIZE); in pcxhr_set_pipe_cmd_params()
753 rmh->cmd[0] |= param2; in pcxhr_set_pipe_cmd_params()
757 rmh->cmd[1] = param3; in pcxhr_set_pipe_cmd_params()
758 rmh->cmd_len = 2; in pcxhr_set_pipe_cmd_params()
768 int pcxhr_send_msg(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_send_msg() argument
773 err = pcxhr_send_msg_nolock(mgr, rmh); in pcxhr_send_msg()
797 struct pcxhr_rmh rmh; in pcxhr_prepair_pipe_start() local
804 pcxhr_init_rmh(&rmh, CMD_CAN_START_PIPE); in pcxhr_prepair_pipe_start()
807 pcxhr_set_pipe_cmd_params(&rmh, 0, audio, 0, 0); in pcxhr_prepair_pipe_start()
810 pcxhr_set_pipe_cmd_params(&rmh, 1, audio - in pcxhr_prepair_pipe_start()
814 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_prepair_pipe_start()
825 if (rmh.stat[0] == 0) in pcxhr_prepair_pipe_start()
836 struct pcxhr_rmh rmh; in pcxhr_stop_pipes() local
842 pcxhr_init_rmh(&rmh, CMD_STOP_PIPE); in pcxhr_stop_pipes()
845 pcxhr_set_pipe_cmd_params(&rmh, 0, audio, 0, 0); in pcxhr_stop_pipes()
848 pcxhr_set_pipe_cmd_params(&rmh, 1, audio - in pcxhr_stop_pipes()
852 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_stop_pipes()
868 struct pcxhr_rmh rmh; in pcxhr_toggle_pipes() local
874 pcxhr_init_rmh(&rmh, CMD_CONF_PIPE); in pcxhr_toggle_pipes()
876 pcxhr_set_pipe_cmd_params(&rmh, 0, 0, 0, in pcxhr_toggle_pipes()
879 pcxhr_set_pipe_cmd_params(&rmh, 1, 0, 0, in pcxhr_toggle_pipes()
881 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_toggle_pipes()
893 pcxhr_init_rmh(&rmh, CMD_SEND_IRQA); in pcxhr_toggle_pipes()
894 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_toggle_pipes()
975 struct pcxhr_rmh rmh; in pcxhr_write_io_num_reg_cont() local
988 pcxhr_init_rmh(&rmh, CMD_ACCESS_IO_WRITE); in pcxhr_write_io_num_reg_cont()
989 rmh.cmd[0] |= IO_NUM_REG_CONT; in pcxhr_write_io_num_reg_cont()
990 rmh.cmd[1] = mask; in pcxhr_write_io_num_reg_cont()
991 rmh.cmd[2] = value; in pcxhr_write_io_num_reg_cont()
992 rmh.cmd_len = 3; in pcxhr_write_io_num_reg_cont()
993 err = pcxhr_send_msg_nolock(mgr, &rmh); in pcxhr_write_io_num_reg_cont()
1132 struct pcxhr_rmh rmh; in pcxhr_stream_read_position() local
1138 pcxhr_init_rmh(&rmh, CMD_STREAM_SAMPLE_COUNT); in pcxhr_stream_read_position()
1139 pcxhr_set_pipe_cmd_params(&rmh, stream->pipe->is_capture, in pcxhr_stream_read_position()
1143 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_stream_read_position()
1147 hw_sample_count = ((u_int64_t)rmh.stat[0]) << 24; in pcxhr_stream_read_position()
1148 hw_sample_count += (u_int64_t)rmh.stat[1]; in pcxhr_stream_read_position()