Lines Matching refs:tscm

19 static long hwdep_read_locked(struct snd_tscm *tscm, char __user *buf,  in hwdep_read_locked()  argument
27 event.lock_status.status = (tscm->dev_lock_count > 0); in hwdep_read_locked()
28 tscm->dev_lock_changed = false; in hwdep_read_locked()
41 struct snd_tscm *tscm = hwdep->private_data; in hwdep_read() local
45 spin_lock_irq(&tscm->lock); in hwdep_read()
47 while (!tscm->dev_lock_changed) { in hwdep_read()
48 prepare_to_wait(&tscm->hwdep_wait, &wait, TASK_INTERRUPTIBLE); in hwdep_read()
49 spin_unlock_irq(&tscm->lock); in hwdep_read()
51 finish_wait(&tscm->hwdep_wait, &wait); in hwdep_read()
54 spin_lock_irq(&tscm->lock); in hwdep_read()
58 count = hwdep_read_locked(tscm, buf, count); in hwdep_read()
59 spin_unlock_irq(&tscm->lock); in hwdep_read()
67 struct snd_tscm *tscm = hwdep->private_data; in hwdep_poll() local
70 poll_wait(file, &tscm->hwdep_wait, wait); in hwdep_poll()
72 spin_lock_irq(&tscm->lock); in hwdep_poll()
73 if (tscm->dev_lock_changed) in hwdep_poll()
77 spin_unlock_irq(&tscm->lock); in hwdep_poll()
82 static int hwdep_get_info(struct snd_tscm *tscm, void __user *arg) in hwdep_get_info() argument
84 struct fw_device *dev = fw_parent_device(tscm->unit); in hwdep_get_info()
101 static int hwdep_lock(struct snd_tscm *tscm) in hwdep_lock() argument
105 spin_lock_irq(&tscm->lock); in hwdep_lock()
107 if (tscm->dev_lock_count == 0) { in hwdep_lock()
108 tscm->dev_lock_count = -1; in hwdep_lock()
114 spin_unlock_irq(&tscm->lock); in hwdep_lock()
119 static int hwdep_unlock(struct snd_tscm *tscm) in hwdep_unlock() argument
123 spin_lock_irq(&tscm->lock); in hwdep_unlock()
125 if (tscm->dev_lock_count == -1) { in hwdep_unlock()
126 tscm->dev_lock_count = 0; in hwdep_unlock()
132 spin_unlock_irq(&tscm->lock); in hwdep_unlock()
139 struct snd_tscm *tscm = hwdep->private_data; in hwdep_release() local
141 spin_lock_irq(&tscm->lock); in hwdep_release()
142 if (tscm->dev_lock_count == -1) in hwdep_release()
143 tscm->dev_lock_count = 0; in hwdep_release()
144 spin_unlock_irq(&tscm->lock); in hwdep_release()
152 struct snd_tscm *tscm = hwdep->private_data; in hwdep_ioctl() local
156 return hwdep_get_info(tscm, (void __user *)arg); in hwdep_ioctl()
158 return hwdep_lock(tscm); in hwdep_ioctl()
160 return hwdep_unlock(tscm); in hwdep_ioctl()
185 int snd_tscm_create_hwdep_device(struct snd_tscm *tscm) in snd_tscm_create_hwdep_device() argument
190 err = snd_hwdep_new(tscm->card, "Tascam", 0, &hwdep); in snd_tscm_create_hwdep_device()
197 hwdep->private_data = tscm; in snd_tscm_create_hwdep_device()