Lines Matching defs: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;
155 guard(spinlock_irqsave)(&parser->lock);
176 parser->mixer_src_ch = 0;
177 parser->mixer_ch = mixer_ch;
187 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
188 u8 mixer_ch = parser->mixer_ch;
189 u8 mixer_src_ch = parser->mixer_src_ch;
191 if (msg_type != parser->prev_mixer_src_type)
195 parser->prev_mixer_src_type = msg_type;
199 u8 mixer_ch = parser->mixer_ch;
236 parser->mixer_src_ch = mixer_src_ch;
243 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
244 u8 mixer_ch = parser->mixer_ch;
267 if (parser->param.output.main_paired_volume != val) {
269 parser->param.output.main_paired_volume = val;
273 if (parser->param.output.hp_paired_volume != val) {
275 parser->param.output.hp_paired_volume = val;
279 if (parser->param.output.hp_paired_assignment != val) {
281 parser->param.output.hp_paired_assignment = val;
285 if (parser->param.line_input.boost_flag != val) {
287 parser->param.line_input.boost_flag = val;
291 if (parser->param.line_input.nominal_level_flag != val) {
293 parser->param.line_input.nominal_level_flag = val;
299 struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
300 u8 input_ch = parser->input_ch;
302 if (parser->prev_msg_type != msg_type)
324 parser->input_ch = input_ch;
341 parser->meter.data[pos] = val;
346 parser->meter.data[pos] = val;
359 parser->prev_msg_type = msg_type;
363 if (pos != parser->push_pos)
370 struct msg_parser *parser = motu->message_parser;
372 guard(spinlock_irqsave)(&parser->lock);
373 memcpy(meter, &parser->meter, sizeof(*meter));
379 struct msg_parser *parser = motu->message_parser;
381 guard(spinlock_irqsave)(&parser->lock);
382 memcpy(param, &parser->param, sizeof(*param));
387 struct msg_parser *parser = motu->message_parser;
389 if (parser->pull_pos > parser->push_pos)
390 return EVENT_QUEUE_SIZE - parser->pull_pos + parser->push_pos;
392 return parser->push_pos - parser->pull_pos;
397 struct msg_parser *parser = motu->message_parser;
398 unsigned int pos = parser->pull_pos;
400 if (pos == parser->push_pos)
403 guard(spinlock_irqsave)(&parser->lock);
405 *event = parser->event_queue[pos];
410 parser->pull_pos = pos;