Lines Matching refs:efw

22 hwdep_read_resp_buf(struct snd_efw *efw, char __user *buf, long remained,
42 spin_lock_irq(&efw->lock);
49 pull_ptr = efw->pull_ptr;
51 while (efw->push_ptr != pull_ptr) {
62 (unsigned int)(pull_ptr - efw->resp_buf);
65 spin_unlock_irq(&efw->lock);
70 spin_lock_irq(&efw->lock);
73 if (pull_ptr >= efw->resp_buf + snd_efw_resp_buf_size)
91 efw->pull_ptr = pull_ptr;
93 spin_unlock_irq(&efw->lock);
99 hwdep_read_locked(struct snd_efw *efw, char __user *buf, long count,
106 spin_lock_irq(&efw->lock);
108 event.lock_status.status = (efw->dev_lock_count > 0);
109 efw->dev_lock_changed = false;
111 spin_unlock_irq(&efw->lock);
125 struct snd_efw *efw = hwdep->private_data;
130 spin_lock_irq(&efw->lock);
132 dev_lock_changed = efw->dev_lock_changed;
133 queued = efw->push_ptr != efw->pull_ptr;
136 prepare_to_wait(&efw->hwdep_wait, &wait, TASK_INTERRUPTIBLE);
137 spin_unlock_irq(&efw->lock);
139 finish_wait(&efw->hwdep_wait, &wait);
142 spin_lock_irq(&efw->lock);
143 dev_lock_changed = efw->dev_lock_changed;
144 queued = efw->push_ptr != efw->pull_ptr;
147 spin_unlock_irq(&efw->lock);
150 count = hwdep_read_locked(efw, buf, count, offset);
152 count = hwdep_read_resp_buf(efw, buf, count, offset);
161 struct snd_efw *efw = hwdep->private_data;
180 if (snd_efw_transaction_cmd(efw->unit, buf, count) < 0)
190 struct snd_efw *efw = hwdep->private_data;
193 poll_wait(file, &efw->hwdep_wait, wait);
195 spin_lock_irq(&efw->lock);
196 if (efw->dev_lock_changed || efw->pull_ptr != efw->push_ptr)
200 spin_unlock_irq(&efw->lock);
206 hwdep_get_info(struct snd_efw *efw, void __user *arg)
208 struct fw_device *dev = fw_parent_device(efw->unit);
226 hwdep_lock(struct snd_efw *efw)
230 spin_lock_irq(&efw->lock);
232 if (efw->dev_lock_count == 0) {
233 efw->dev_lock_count = -1;
239 spin_unlock_irq(&efw->lock);
245 hwdep_unlock(struct snd_efw *efw)
249 spin_lock_irq(&efw->lock);
251 if (efw->dev_lock_count == -1) {
252 efw->dev_lock_count = 0;
258 spin_unlock_irq(&efw->lock);
266 struct snd_efw *efw = hwdep->private_data;
268 spin_lock_irq(&efw->lock);
269 if (efw->dev_lock_count == -1)
270 efw->dev_lock_count = 0;
271 spin_unlock_irq(&efw->lock);
280 struct snd_efw *efw = hwdep->private_data;
284 return hwdep_get_info(efw, (void __user *)arg);
286 return hwdep_lock(efw);
288 return hwdep_unlock(efw);
306 int snd_efw_create_hwdep_device(struct snd_efw *efw)
319 err = snd_hwdep_new(efw->card, "Fireworks", 0, &hwdep);
325 hwdep->private_data = efw;