Lines Matching defs:motu

3  * motu-hwdep.c - a part of driver for MOTU FireWire series
17 #include "motu.h"
19 static bool has_dsp_event(struct snd_motu *motu)
21 if (motu->spec->flags & SND_MOTU_SPEC_REGISTER_DSP)
22 return (snd_motu_register_dsp_message_parser_count_event(motu) > 0);
30 struct snd_motu *motu = hwdep->private_data;
34 spin_lock_irq(&motu->lock);
36 while (!motu->dev_lock_changed && motu->msg == 0 && !has_dsp_event(motu)) {
37 prepare_to_wait(&motu->hwdep_wait, &wait, TASK_INTERRUPTIBLE);
38 spin_unlock_irq(&motu->lock);
40 finish_wait(&motu->hwdep_wait, &wait);
43 spin_lock_irq(&motu->lock);
47 if (motu->dev_lock_changed) {
49 event.lock_status.status = (motu->dev_lock_count > 0);
50 motu->dev_lock_changed = false;
51 spin_unlock_irq(&motu->lock);
56 } else if (motu->msg > 0) {
58 event.motu_notification.message = motu->msg;
59 motu->msg = 0;
60 spin_unlock_irq(&motu->lock);
65 } else if (has_dsp_event(motu)) {
70 spin_unlock_irq(&motu->lock);
76 snd_motu_register_dsp_message_parser_copy_event(motu, &ev)) {
91 spin_unlock_irq(&motu->lock);
102 struct snd_motu *motu = hwdep->private_data;
105 poll_wait(file, &motu->hwdep_wait, wait);
107 spin_lock_irq(&motu->lock);
108 if (motu->dev_lock_changed || motu->msg || has_dsp_event(motu))
112 spin_unlock_irq(&motu->lock);
117 static int hwdep_get_info(struct snd_motu *motu, void __user *arg)
119 struct fw_device *dev = fw_parent_device(motu->unit);
136 static int hwdep_lock(struct snd_motu *motu)
140 spin_lock_irq(&motu->lock);
142 if (motu->dev_lock_count == 0) {
143 motu->dev_lock_count = -1;
149 spin_unlock_irq(&motu->lock);
154 static int hwdep_unlock(struct snd_motu *motu)
158 spin_lock_irq(&motu->lock);
160 if (motu->dev_lock_count == -1) {
161 motu->dev_lock_count = 0;
167 spin_unlock_irq(&motu->lock);
174 struct snd_motu *motu = hwdep->private_data;
176 spin_lock_irq(&motu->lock);
177 if (motu->dev_lock_count == -1)
178 motu->dev_lock_count = 0;
179 spin_unlock_irq(&motu->lock);
187 struct snd_motu *motu = hwdep->private_data;
191 return hwdep_get_info(motu, (void __user *)arg);
193 return hwdep_lock(motu);
195 return hwdep_unlock(motu);
201 if (!(motu->spec->flags & SND_MOTU_SPEC_REGISTER_DSP))
208 snd_motu_register_dsp_message_parser_copy_meter(motu, meter);
223 if (!(motu->spec->flags & SND_MOTU_SPEC_COMMAND_DSP))
230 snd_motu_command_dsp_message_parser_copy_meter(motu, meter);
245 if (!(motu->spec->flags & SND_MOTU_SPEC_REGISTER_DSP))
252 snd_motu_register_dsp_message_parser_copy_parameter(motu, param);
277 int snd_motu_create_hwdep_device(struct snd_motu *motu)
289 err = snd_hwdep_new(motu->card, motu->card->driver, 0, &hwdep);
296 hwdep->private_data = motu;
299 motu->hwdep = hwdep;