Lines Matching full:parser

3 // motu-command-dsp-message-parser.c - a part of driver for MOTU FireWire series
38 struct msg_parser *parser; in snd_motu_command_dsp_message_parser_new() local
40 parser = devm_kzalloc(&motu->card->card_dev, sizeof(*parser), GFP_KERNEL); in snd_motu_command_dsp_message_parser_new()
41 if (!parser) in snd_motu_command_dsp_message_parser_new()
43 spin_lock_init(&parser->lock); in snd_motu_command_dsp_message_parser_new()
44 motu->message_parser = parser; in snd_motu_command_dsp_message_parser_new()
51 struct msg_parser *parser = motu->message_parser; in snd_motu_command_dsp_message_parser_init() local
53 parser->state = INITIALIZED; in snd_motu_command_dsp_message_parser_init()
59 parser->interval = 4; in snd_motu_command_dsp_message_parser_init()
63 parser->interval = 2; in snd_motu_command_dsp_message_parser_init()
69 parser->interval = 1; in snd_motu_command_dsp_message_parser_init()
88 struct msg_parser *parser = motu->message_parser; in snd_motu_command_dsp_message_parser_parse() local
89 unsigned int interval = parser->interval; in snd_motu_command_dsp_message_parser_parse()
93 spin_lock_irqsave(&parser->lock, flags); in snd_motu_command_dsp_message_parser_parse()
106 switch (parser->state) { in snd_motu_command_dsp_message_parser_parse()
112 parser->value = fragment; in snd_motu_command_dsp_message_parser_parse()
113 parser->message_count = 1; in snd_motu_command_dsp_message_parser_parse()
114 parser->state = FRAGMENT_DETECTED; in snd_motu_command_dsp_message_parser_parse()
120 if (parser->message_count % interval == 0) { in snd_motu_command_dsp_message_parser_parse()
123 parser->value >>= 8; in snd_motu_command_dsp_message_parser_parse()
124 parser->value |= (u64)fragment << 56; in snd_motu_command_dsp_message_parser_parse()
126 if (parser->value == VALUES_AT_IMAGE_END) { in snd_motu_command_dsp_message_parser_parse()
127 parser->state = AVAILABLE; in snd_motu_command_dsp_message_parser_parse()
128 parser->fragment_pos = 0; in snd_motu_command_dsp_message_parser_parse()
129 parser->value_index = 0; in snd_motu_command_dsp_message_parser_parse()
130 parser->message_count = 0; in snd_motu_command_dsp_message_parser_parse()
133 ++parser->message_count; in snd_motu_command_dsp_message_parser_parse()
139 if (parser->message_count % interval == 0) { in snd_motu_command_dsp_message_parser_parse()
142 parser->value >>= 8; in snd_motu_command_dsp_message_parser_parse()
143 parser->value |= (u64)fragment << 56; in snd_motu_command_dsp_message_parser_parse()
144 ++parser->fragment_pos; in snd_motu_command_dsp_message_parser_parse()
146 if (parser->fragment_pos == 4) { in snd_motu_command_dsp_message_parser_parse()
150 if (parser->value_index < in snd_motu_command_dsp_message_parser_parse()
152 u32 val = (u32)(parser->value >> 32); in snd_motu_command_dsp_message_parser_parse()
153 parser->meter.data[parser->value_index] = val; in snd_motu_command_dsp_message_parser_parse()
155 ++parser->value_index; in snd_motu_command_dsp_message_parser_parse()
156 parser->fragment_pos = 0; in snd_motu_command_dsp_message_parser_parse()
159 if (parser->value == VALUES_AT_IMAGE_END) { in snd_motu_command_dsp_message_parser_parse()
160 parser->value_index = 0; in snd_motu_command_dsp_message_parser_parse()
161 parser->fragment_pos = 0; in snd_motu_command_dsp_message_parser_parse()
162 parser->message_count = 0; in snd_motu_command_dsp_message_parser_parse()
165 ++parser->message_count; in snd_motu_command_dsp_message_parser_parse()
172 spin_unlock_irqrestore(&parser->lock, flags); in snd_motu_command_dsp_message_parser_parse()
178 struct msg_parser *parser = motu->message_parser; in snd_motu_command_dsp_message_parser_copy_meter() local
181 spin_lock_irqsave(&parser->lock, flags); in snd_motu_command_dsp_message_parser_copy_meter()
182 memcpy(meter, &parser->meter, sizeof(*meter)); in snd_motu_command_dsp_message_parser_copy_meter()
183 spin_unlock_irqrestore(&parser->lock, flags); in snd_motu_command_dsp_message_parser_copy_meter()