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;
92 guard(spinlock_irqsave)(&parser->lock);
105 switch (parser->state) {
111 parser->value = fragment;
112 parser->message_count = 1;
113 parser->state = FRAGMENT_DETECTED;
119 if (parser->message_count % interval == 0) {
122 parser->value >>= 8;
123 parser->value |= (u64)fragment << 56;
125 if (parser->value == VALUES_AT_IMAGE_END) {
126 parser->state = AVAILABLE;
127 parser->fragment_pos = 0;
128 parser->value_index = 0;
129 parser->message_count = 0;
132 ++parser->message_count;
138 if (parser->message_count % interval == 0) {
141 parser->value >>= 8;
142 parser->value |= (u64)fragment << 56;
143 ++parser->fragment_pos;
145 if (parser->fragment_pos == 4) {
149 if (parser->value_index <
151 u32 val = (u32)(parser->value >> 32);
152 parser->meter.data[parser->value_index] = val;
154 ++parser->value_index;
155 parser->fragment_pos = 0;
158 if (parser->value == VALUES_AT_IMAGE_END) {
159 parser->value_index = 0;
160 parser->fragment_pos = 0;
161 parser->message_count = 0;
164 ++parser->message_count;
175 struct msg_parser *parser = motu->message_parser;
177 guard(spinlock_irqsave)(&parser->lock);
178 memcpy(meter, &parser->meter, sizeof(*meter));