Lines Matching refs:dev

43 		dev_printk(KERN_DEBUG, &dev->intf->dev,			\
49 static int em28xx_deinit_isoc_audio(struct em28xx *dev) in em28xx_deinit_isoc_audio() argument
54 for (i = 0; i < dev->adev.num_urb; i++) { in em28xx_deinit_isoc_audio()
55 struct urb *urb = dev->adev.urb[i]; in em28xx_deinit_isoc_audio()
68 struct em28xx *dev = urb->context; in em28xx_audio_isocirq() local
78 if (dev->disconnected) { in em28xx_audio_isocirq()
81 atomic_set(&dev->adev.stream_started, 0); in em28xx_audio_isocirq()
98 if (atomic_read(&dev->adev.stream_started) == 0) in em28xx_audio_isocirq()
101 if (dev->adev.capture_pcm_substream) { in em28xx_audio_isocirq()
102 substream = dev->adev.capture_pcm_substream; in em28xx_audio_isocirq()
116 oldptr = dev->adev.hwptr_done_capture; in em28xx_audio_isocirq()
131 dev->adev.hwptr_done_capture += length; in em28xx_audio_isocirq()
132 if (dev->adev.hwptr_done_capture >= in em28xx_audio_isocirq()
134 dev->adev.hwptr_done_capture -= in em28xx_audio_isocirq()
137 dev->adev.capture_transfer_done += length; in em28xx_audio_isocirq()
138 if (dev->adev.capture_transfer_done >= in em28xx_audio_isocirq()
140 dev->adev.capture_transfer_done -= in em28xx_audio_isocirq()
154 dev_err(&dev->intf->dev, in em28xx_audio_isocirq()
159 static int em28xx_init_audio_isoc(struct em28xx *dev) in em28xx_init_audio_isoc() argument
166 for (i = 0; i < dev->adev.num_urb; i++) { in em28xx_init_audio_isoc()
167 memset(dev->adev.transfer_buffer[i], 0x80, in em28xx_init_audio_isoc()
168 dev->adev.urb[i]->transfer_buffer_length); in em28xx_init_audio_isoc()
170 err = usb_submit_urb(dev->adev.urb[i], GFP_ATOMIC); in em28xx_init_audio_isoc()
172 dev_err(&dev->intf->dev, in em28xx_init_audio_isoc()
175 em28xx_deinit_isoc_audio(dev); in em28xx_init_audio_isoc()
176 atomic_set(&dev->adev.stream_started, 0); in em28xx_init_audio_isoc()
218 struct em28xx *dev = snd_pcm_substream_chip(substream); in snd_em28xx_capture_open() local
222 if (!dev) { in snd_em28xx_capture_open()
227 if (dev->disconnected) in snd_em28xx_capture_open()
234 if (!mutex_trylock(&dev->lock)) in snd_em28xx_capture_open()
237 mutex_lock(&dev->lock); in snd_em28xx_capture_open()
242 if (dev->adev.users == 0) { in snd_em28xx_capture_open()
243 if (!dev->alt || dev->is_audio_only) { in snd_em28xx_capture_open()
246 udev = interface_to_usbdev(dev->intf); in snd_em28xx_capture_open()
248 if (dev->is_audio_only) in snd_em28xx_capture_open()
250 dev->alt = 1; in snd_em28xx_capture_open()
253 dev->alt = 7; in snd_em28xx_capture_open()
264 dev->ifnum, dev->alt); in snd_em28xx_capture_open()
265 usb_set_interface(udev, dev->ifnum, dev->alt); in snd_em28xx_capture_open()
269 dev->mute = 0; in snd_em28xx_capture_open()
270 ret = em28xx_audio_analog_set(dev); in snd_em28xx_capture_open()
275 kref_get(&dev->ref); in snd_em28xx_capture_open()
276 dev->adev.users++; in snd_em28xx_capture_open()
277 mutex_unlock(&dev->lock); in snd_em28xx_capture_open()
282 dev->adev.period * 95 / 100, in snd_em28xx_capture_open()
283 dev->adev.period * 105 / 100); in snd_em28xx_capture_open()
285 dev->adev.capture_pcm_substream = substream; in snd_em28xx_capture_open()
289 mutex_unlock(&dev->lock); in snd_em28xx_capture_open()
291 dev_err(&dev->intf->dev, in snd_em28xx_capture_open()
298 struct em28xx *dev = snd_pcm_substream_chip(substream); in snd_em28xx_pcm_close() local
302 dev->mute = 1; in snd_em28xx_pcm_close()
303 mutex_lock(&dev->lock); in snd_em28xx_pcm_close()
304 dev->adev.users--; in snd_em28xx_pcm_close()
305 if (atomic_read(&dev->adev.stream_started) > 0) { in snd_em28xx_pcm_close()
306 atomic_set(&dev->adev.stream_started, 0); in snd_em28xx_pcm_close()
307 schedule_work(&dev->adev.wq_trigger); in snd_em28xx_pcm_close()
310 em28xx_audio_analog_set(dev); in snd_em28xx_pcm_close()
311 mutex_unlock(&dev->lock); in snd_em28xx_pcm_close()
312 kref_put(&dev->ref, em28xx_free_device); in snd_em28xx_pcm_close()
319 struct em28xx *dev = snd_pcm_substream_chip(substream); in snd_em28xx_prepare() local
321 if (dev->disconnected) in snd_em28xx_prepare()
324 dev->adev.hwptr_done_capture = 0; in snd_em28xx_prepare()
325 dev->adev.capture_transfer_done = 0; in snd_em28xx_prepare()
334 struct em28xx *dev = container_of(adev, struct em28xx, adev); in audio_trigger() local
338 em28xx_init_audio_isoc(dev); in audio_trigger()
341 em28xx_deinit_isoc_audio(dev); in audio_trigger()
348 struct em28xx *dev = snd_pcm_substream_chip(substream); in snd_em28xx_capture_trigger() local
351 if (dev->disconnected) in snd_em28xx_capture_trigger()
358 atomic_set(&dev->adev.stream_started, 1); in snd_em28xx_capture_trigger()
363 atomic_set(&dev->adev.stream_started, 0); in snd_em28xx_capture_trigger()
368 schedule_work(&dev->adev.wq_trigger); in snd_em28xx_capture_trigger()
376 struct em28xx *dev; in snd_em28xx_capture_pointer() local
379 dev = snd_pcm_substream_chip(substream); in snd_em28xx_capture_pointer()
380 if (dev->disconnected) in snd_em28xx_capture_pointer()
383 spin_lock_irqsave(&dev->adev.slock, flags); in snd_em28xx_capture_pointer()
384 hwptr_done = dev->adev.hwptr_done_capture; in snd_em28xx_capture_pointer()
385 spin_unlock_irqrestore(&dev->adev.slock, flags); in snd_em28xx_capture_pointer()
396 struct em28xx *dev = snd_kcontrol_chip(kcontrol); in em28xx_vol_info() local
398 if (dev->disconnected) in em28xx_vol_info()
412 struct em28xx *dev = snd_kcontrol_chip(kcontrol); in em28xx_vol_put() local
413 struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream; in em28xx_vol_put()
419 if (dev->disconnected) in em28xx_vol_put()
425 if (!mutex_trylock(&dev->lock)) in em28xx_vol_put()
428 mutex_lock(&dev->lock); in em28xx_vol_put()
430 rc = em28xx_read_ac97(dev, kcontrol->private_value); in em28xx_vol_put()
436 rc = em28xx_write_ac97(dev, kcontrol->private_value, val); in em28xx_vol_put()
446 mutex_unlock(&dev->lock); in em28xx_vol_put()
453 struct em28xx *dev = snd_kcontrol_chip(kcontrol); in em28xx_vol_get() local
454 struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream; in em28xx_vol_get()
458 if (dev->disconnected) in em28xx_vol_get()
464 if (!mutex_trylock(&dev->lock)) in em28xx_vol_get()
467 mutex_lock(&dev->lock); in em28xx_vol_get()
469 val = em28xx_read_ac97(dev, kcontrol->private_value); in em28xx_vol_get()
470 mutex_unlock(&dev->lock); in em28xx_vol_get()
488 struct em28xx *dev = snd_kcontrol_chip(kcontrol); in em28xx_vol_put_mute() local
490 struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream; in em28xx_vol_put_mute()
494 if (dev->disconnected) in em28xx_vol_put_mute()
500 if (!mutex_trylock(&dev->lock)) in em28xx_vol_put_mute()
503 mutex_lock(&dev->lock); in em28xx_vol_put_mute()
505 rc = em28xx_read_ac97(dev, kcontrol->private_value); in em28xx_vol_put_mute()
514 rc = em28xx_write_ac97(dev, kcontrol->private_value, rc); in em28xx_vol_put_mute()
524 mutex_unlock(&dev->lock); in em28xx_vol_put_mute()
531 struct em28xx *dev = snd_kcontrol_chip(kcontrol); in em28xx_vol_get_mute() local
532 struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream; in em28xx_vol_get_mute()
536 if (dev->disconnected) in em28xx_vol_get_mute()
542 if (!mutex_trylock(&dev->lock)) in em28xx_vol_get_mute()
545 mutex_lock(&dev->lock); in em28xx_vol_get_mute()
547 val = em28xx_read_ac97(dev, kcontrol->private_value); in em28xx_vol_get_mute()
548 mutex_unlock(&dev->lock); in em28xx_vol_get_mute()
567 static int em28xx_cvol_new(struct snd_card *card, struct em28xx *dev, in em28xx_cvol_new() argument
585 kctl = snd_ctl_new1(&tmp, dev); in em28xx_cvol_new()
603 kctl = snd_ctl_new1(&tmp, dev); in em28xx_cvol_new()
624 static void em28xx_audio_free_urb(struct em28xx *dev) in em28xx_audio_free_urb() argument
626 struct usb_device *udev = interface_to_usbdev(dev->intf); in em28xx_audio_free_urb()
629 for (i = 0; i < dev->adev.num_urb; i++) { in em28xx_audio_free_urb()
630 struct urb *urb = dev->adev.urb[i]; in em28xx_audio_free_urb()
636 dev->adev.transfer_buffer[i], in em28xx_audio_free_urb()
641 kfree(dev->adev.urb); in em28xx_audio_free_urb()
642 kfree(dev->adev.transfer_buffer); in em28xx_audio_free_urb()
643 dev->adev.num_urb = 0; in em28xx_audio_free_urb()
658 static int em28xx_audio_urb_init(struct em28xx *dev) in em28xx_audio_urb_init() argument
662 struct usb_device *udev = interface_to_usbdev(dev->intf); in em28xx_audio_urb_init()
667 if (dev->ifnum) in em28xx_audio_urb_init()
672 intf = usb_ifnum_to_if(udev, dev->ifnum); in em28xx_audio_urb_init()
675 dev_err(&dev->intf->dev, "alt %d doesn't exist on interface %d\n", in em28xx_audio_urb_init()
676 dev->ifnum, alt); in em28xx_audio_urb_init()
691 dev_err(&dev->intf->dev, "Couldn't find an audio endpoint"); in em28xx_audio_urb_init()
698 dev_info(&dev->intf->dev, in em28xx_audio_urb_init()
701 dev->ifnum, alt, interval, ep_size); in em28xx_audio_urb_init()
738 dev_info(&dev->intf->dev, in em28xx_audio_urb_init()
743 dev->adev.period = urb_size * npackets; in em28xx_audio_urb_init()
747 dev->adev.transfer_buffer = kcalloc(num_urb, in em28xx_audio_urb_init()
748 sizeof(*dev->adev.transfer_buffer), in em28xx_audio_urb_init()
750 if (!dev->adev.transfer_buffer) in em28xx_audio_urb_init()
753 dev->adev.urb = kcalloc(num_urb, sizeof(*dev->adev.urb), GFP_KERNEL); in em28xx_audio_urb_init()
754 if (!dev->adev.urb) { in em28xx_audio_urb_init()
755 kfree(dev->adev.transfer_buffer); in em28xx_audio_urb_init()
760 dev->adev.num_urb = num_urb; in em28xx_audio_urb_init()
768 em28xx_audio_free_urb(dev); in em28xx_audio_urb_init()
771 dev->adev.urb[i] = urb; in em28xx_audio_urb_init()
776 dev_err(&dev->intf->dev, in em28xx_audio_urb_init()
778 em28xx_audio_free_urb(dev); in em28xx_audio_urb_init()
781 dev->adev.transfer_buffer[i] = buf; in em28xx_audio_urb_init()
783 urb->dev = udev; in em28xx_audio_urb_init()
784 urb->context = dev; in em28xx_audio_urb_init()
802 static int em28xx_audio_init(struct em28xx *dev) in em28xx_audio_init() argument
804 struct em28xx_audio *adev = &dev->adev; in em28xx_audio_init()
805 struct usb_device *udev = interface_to_usbdev(dev->intf); in em28xx_audio_init()
811 if (dev->usb_audio_type != EM28XX_USB_AUDIO_VENDOR) { in em28xx_audio_init()
820 dev_info(&dev->intf->dev, "Binding audio extension\n"); in em28xx_audio_init()
822 kref_get(&dev->ref); in em28xx_audio_init()
824 dev_info(&dev->intf->dev, in em28xx_audio_init()
826 dev_info(&dev->intf->dev, in em28xx_audio_init()
829 err = snd_card_new(&dev->intf->dev, index[devnr], "Em28xx Audio", in em28xx_audio_init()
845 pcm->private_data = dev; in em28xx_audio_init()
854 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) { in em28xx_audio_init()
855 em28xx_cvol_new(card, dev, "Video", AC97_VIDEO); in em28xx_audio_init()
856 em28xx_cvol_new(card, dev, "Line In", AC97_LINE); in em28xx_audio_init()
857 em28xx_cvol_new(card, dev, "Phone", AC97_PHONE); in em28xx_audio_init()
858 em28xx_cvol_new(card, dev, "Microphone", AC97_MIC); in em28xx_audio_init()
859 em28xx_cvol_new(card, dev, "CD", AC97_CD); in em28xx_audio_init()
860 em28xx_cvol_new(card, dev, "AUX", AC97_AUX); in em28xx_audio_init()
861 em28xx_cvol_new(card, dev, "PCM", AC97_PCM); in em28xx_audio_init()
863 em28xx_cvol_new(card, dev, "Master", AC97_MASTER); in em28xx_audio_init()
864 em28xx_cvol_new(card, dev, "Line", AC97_HEADPHONE); in em28xx_audio_init()
865 em28xx_cvol_new(card, dev, "Mono", AC97_MASTER_MONO); in em28xx_audio_init()
866 em28xx_cvol_new(card, dev, "LFE", AC97_CENTER_LFE_MASTER); in em28xx_audio_init()
867 em28xx_cvol_new(card, dev, "Surround", AC97_SURROUND_MASTER); in em28xx_audio_init()
870 err = em28xx_audio_urb_init(dev); in em28xx_audio_init()
878 dev_info(&dev->intf->dev, "Audio extension successfully initialized\n"); in em28xx_audio_init()
882 em28xx_audio_free_urb(dev); in em28xx_audio_init()
891 static int em28xx_audio_fini(struct em28xx *dev) in em28xx_audio_fini() argument
893 if (!dev) in em28xx_audio_fini()
896 if (dev->usb_audio_type != EM28XX_USB_AUDIO_VENDOR) { in em28xx_audio_fini()
905 dev_info(&dev->intf->dev, "Closing audio extension\n"); in em28xx_audio_fini()
907 if (dev->adev.sndcard) { in em28xx_audio_fini()
908 snd_card_disconnect(dev->adev.sndcard); in em28xx_audio_fini()
909 flush_work(&dev->adev.wq_trigger); in em28xx_audio_fini()
911 em28xx_audio_free_urb(dev); in em28xx_audio_fini()
913 snd_card_free(dev->adev.sndcard); in em28xx_audio_fini()
914 dev->adev.sndcard = NULL; in em28xx_audio_fini()
917 kref_put(&dev->ref, em28xx_free_device); in em28xx_audio_fini()
921 static int em28xx_audio_suspend(struct em28xx *dev) in em28xx_audio_suspend() argument
923 if (!dev) in em28xx_audio_suspend()
926 if (dev->usb_audio_type != EM28XX_USB_AUDIO_VENDOR) in em28xx_audio_suspend()
929 dev_info(&dev->intf->dev, "Suspending audio extension\n"); in em28xx_audio_suspend()
930 em28xx_deinit_isoc_audio(dev); in em28xx_audio_suspend()
931 atomic_set(&dev->adev.stream_started, 0); in em28xx_audio_suspend()
935 static int em28xx_audio_resume(struct em28xx *dev) in em28xx_audio_resume() argument
937 if (!dev) in em28xx_audio_resume()
940 if (dev->usb_audio_type != EM28XX_USB_AUDIO_VENDOR) in em28xx_audio_resume()
943 dev_info(&dev->intf->dev, "Resuming audio extension\n"); in em28xx_audio_resume()
945 schedule_work(&dev->adev.wq_trigger); in em28xx_audio_resume()