Lines Matching refs:rmh
532 static int pcxhr_read_rmh_status(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_read_rmh_status() argument
541 if (rmh->stat_len < PCXHR_SIZE_MAX_STATUS) in pcxhr_read_rmh_status()
543 else max_stat_len = rmh->stat_len; in pcxhr_read_rmh_status()
545 for (i = 0; i < rmh->stat_len; i++) { in pcxhr_read_rmh_status()
564 if (rmh->dsp_stat != RMH_SSIZE_FIXED) { in pcxhr_read_rmh_status()
565 if (rmh->dsp_stat == RMH_SSIZE_ARG) { in pcxhr_read_rmh_status()
566 rmh->stat_len = (data & 0x0000ff) + 1; in pcxhr_read_rmh_status()
570 rmh->stat_len = 1; in pcxhr_read_rmh_status()
574 rmh->stat_len++; in pcxhr_read_rmh_status()
581 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_read_rmh_status()
585 rmh->stat[i] = data; in pcxhr_read_rmh_status()
587 if (rmh->stat_len > max_stat_len) { in pcxhr_read_rmh_status()
589 rmh->stat_len); in pcxhr_read_rmh_status()
590 rmh->stat_len = max_stat_len; in pcxhr_read_rmh_status()
595 static int pcxhr_send_msg_nolock(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_send_msg_nolock() argument
602 if (snd_BUG_ON(rmh->cmd_len >= PCXHR_SIZE_MAX_CMD)) in pcxhr_send_msg_nolock()
625 data = rmh->cmd[0]; in pcxhr_send_msg_nolock()
627 if (rmh->cmd_len > 1) in pcxhr_send_msg_nolock()
632 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_send_msg_nolock()
634 data, cmd_names[rmh->cmd_idx]); in pcxhr_send_msg_nolock()
645 if (rmh->cmd_len > 1) { in pcxhr_send_msg_nolock()
647 data = rmh->cmd_len - 1; in pcxhr_send_msg_nolock()
658 for (i=1; i < rmh->cmd_len; i++) { in pcxhr_send_msg_nolock()
660 data = rmh->cmd[i]; in pcxhr_send_msg_nolock()
662 if (rmh->cmd_idx < CMD_LAST_INDEX) in pcxhr_send_msg_nolock()
699 rmh->cmd_idx, data); in pcxhr_send_msg_nolock()
703 err = pcxhr_read_rmh_status(mgr, rmh); in pcxhr_send_msg_nolock()
717 void pcxhr_init_rmh(struct pcxhr_rmh *rmh, int cmd) in pcxhr_init_rmh() argument
721 rmh->cmd[0] = pcxhr_dsp_cmds[cmd].opcode; in pcxhr_init_rmh()
722 rmh->cmd_len = 1; in pcxhr_init_rmh()
723 rmh->stat_len = pcxhr_dsp_cmds[cmd].st_length; in pcxhr_init_rmh()
724 rmh->dsp_stat = pcxhr_dsp_cmds[cmd].st_type; in pcxhr_init_rmh()
725 rmh->cmd_idx = cmd; in pcxhr_init_rmh()
729 void pcxhr_set_pipe_cmd_params(struct pcxhr_rmh *rmh, int capture, in pcxhr_set_pipe_cmd_params() argument
735 rmh->cmd[0] |= 0x800; /* COMMAND_RECORD_MASK */ in pcxhr_set_pipe_cmd_params()
737 rmh->cmd[0] |= (param1 << FIELD_SIZE); in pcxhr_set_pipe_cmd_params()
740 rmh->cmd[0] |= param2; in pcxhr_set_pipe_cmd_params()
744 rmh->cmd[1] = param3; in pcxhr_set_pipe_cmd_params()
745 rmh->cmd_len = 2; in pcxhr_set_pipe_cmd_params()
755 int pcxhr_send_msg(struct pcxhr_mgr *mgr, struct pcxhr_rmh *rmh) in pcxhr_send_msg() argument
760 err = pcxhr_send_msg_nolock(mgr, rmh); in pcxhr_send_msg()
784 struct pcxhr_rmh rmh; in pcxhr_prepair_pipe_start() local
791 pcxhr_init_rmh(&rmh, CMD_CAN_START_PIPE); in pcxhr_prepair_pipe_start()
794 pcxhr_set_pipe_cmd_params(&rmh, 0, audio, 0, 0); in pcxhr_prepair_pipe_start()
797 pcxhr_set_pipe_cmd_params(&rmh, 1, audio - in pcxhr_prepair_pipe_start()
801 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_prepair_pipe_start()
812 if (rmh.stat[0] == 0) in pcxhr_prepair_pipe_start()
823 struct pcxhr_rmh rmh; in pcxhr_stop_pipes() local
829 pcxhr_init_rmh(&rmh, CMD_STOP_PIPE); in pcxhr_stop_pipes()
832 pcxhr_set_pipe_cmd_params(&rmh, 0, audio, 0, 0); in pcxhr_stop_pipes()
835 pcxhr_set_pipe_cmd_params(&rmh, 1, audio - in pcxhr_stop_pipes()
839 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_stop_pipes()
855 struct pcxhr_rmh rmh; in pcxhr_toggle_pipes() local
861 pcxhr_init_rmh(&rmh, CMD_CONF_PIPE); in pcxhr_toggle_pipes()
863 pcxhr_set_pipe_cmd_params(&rmh, 0, 0, 0, in pcxhr_toggle_pipes()
866 pcxhr_set_pipe_cmd_params(&rmh, 1, 0, 0, in pcxhr_toggle_pipes()
868 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_toggle_pipes()
880 pcxhr_init_rmh(&rmh, CMD_SEND_IRQA); in pcxhr_toggle_pipes()
881 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_toggle_pipes()
962 struct pcxhr_rmh rmh; in pcxhr_write_io_num_reg_cont() local
975 pcxhr_init_rmh(&rmh, CMD_ACCESS_IO_WRITE); in pcxhr_write_io_num_reg_cont()
976 rmh.cmd[0] |= IO_NUM_REG_CONT; in pcxhr_write_io_num_reg_cont()
977 rmh.cmd[1] = mask; in pcxhr_write_io_num_reg_cont()
978 rmh.cmd[2] = value; in pcxhr_write_io_num_reg_cont()
979 rmh.cmd_len = 3; in pcxhr_write_io_num_reg_cont()
980 err = pcxhr_send_msg_nolock(mgr, &rmh); in pcxhr_write_io_num_reg_cont()
1119 struct pcxhr_rmh rmh; in pcxhr_stream_read_position() local
1125 pcxhr_init_rmh(&rmh, CMD_STREAM_SAMPLE_COUNT); in pcxhr_stream_read_position()
1126 pcxhr_set_pipe_cmd_params(&rmh, stream->pipe->is_capture, in pcxhr_stream_read_position()
1130 err = pcxhr_send_msg(mgr, &rmh); in pcxhr_stream_read_position()
1134 hw_sample_count = ((u_int64_t)rmh.stat[0]) << 24; in pcxhr_stream_read_position()
1135 hw_sample_count += (u_int64_t)rmh.stat[1]; in pcxhr_stream_read_position()