Lines Matching refs:parser
3 // motu-register-dsp-message-parser.c - a part of driver for MOTU FireWire series
103 struct msg_parser *parser;
104 parser = devm_kzalloc(&motu->card->card_dev, sizeof(*parser), GFP_KERNEL);
105 if (!parser)
107 spin_lock_init(&parser->lock);
109 parser->meter_pos_quirk = true;
110 motu->message_parser = parser;
116 struct msg_parser *parser = motu->message_parser;
118 parser->prev_mixer_src_type = INVALID;
119 parser->mixer_ch = 0xff;
120 parser->mixer_src_ch = 0xff;
121 parser->prev_msg_type = INVALID;
129 struct msg_parser *parser = motu->message_parser;
130 unsigned int pos = parser->push_pos;
137 parser->event_queue[pos] = entry;
142 parser->push_pos = pos;
150 struct msg_parser *parser = motu->message_parser;
151 bool meter_pos_quirk = parser->meter_pos_quirk;
152 unsigned int pos = parser->push_pos;
156 spin_lock_irqsave(&parser->lock, flags);
177 parser->mixer_src_ch = 0;
178 parser->mixer_ch = mixer_ch;
188 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
189 u8 mixer_ch = parser->mixer_ch;
190 u8 mixer_src_ch = parser->mixer_src_ch;
192 if (msg_type != parser->prev_mixer_src_type)
196 parser->prev_mixer_src_type = msg_type;
200 u8 mixer_ch = parser->mixer_ch;
237 parser->mixer_src_ch = mixer_src_ch;
244 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
245 u8 mixer_ch = parser->mixer_ch;
268 if (parser->param.output.main_paired_volume != val) {
270 parser->param.output.main_paired_volume = val;
274 if (parser->param.output.hp_paired_volume != val) {
276 parser->param.output.hp_paired_volume = val;
280 if (parser->param.output.hp_paired_assignment != val) {
282 parser->param.output.hp_paired_assignment = val;
286 if (parser->param.line_input.boost_flag != val) {
288 parser->param.line_input.boost_flag = val;
292 if (parser->param.line_input.nominal_level_flag != val) {
294 parser->param.line_input.nominal_level_flag = val;
300 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
301 u8 input_ch = parser->input_ch;
303 if (parser->prev_msg_type != msg_type)
325 parser->input_ch = input_ch;
342 parser->meter.data[pos] = val;
347 parser->meter.data[pos] = val;
360 parser->prev_msg_type = msg_type;
364 if (pos != parser->push_pos)
367 spin_unlock_irqrestore(&parser->lock, flags);
373 struct msg_parser *parser = motu->message_parser;
376 spin_lock_irqsave(&parser->lock, flags);
377 memcpy(meter, &parser->meter, sizeof(*meter));
378 spin_unlock_irqrestore(&parser->lock, flags);
384 struct msg_parser *parser = motu->message_parser;
387 spin_lock_irqsave(&parser->lock, flags);
388 memcpy(param, &parser->param, sizeof(*param));
389 spin_unlock_irqrestore(&parser->lock, flags);
394 struct msg_parser *parser = motu->message_parser;
396 if (parser->pull_pos > parser->push_pos)
397 return EVENT_QUEUE_SIZE - parser->pull_pos + parser->push_pos;
399 return parser->push_pos - parser->pull_pos;
404 struct msg_parser *parser = motu->message_parser;
405 unsigned int pos = parser->pull_pos;
408 if (pos == parser->push_pos)
411 spin_lock_irqsave(&parser->lock, flags);
413 *event = parser->event_queue[pos];
418 parser->pull_pos = pos;
420 spin_unlock_irqrestore(&parser->lock, flags);