Lines Matching defs:parser

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