summaryrefslogtreecommitdiffstats
path: root/sound/usb
Commit message (Collapse)AuthorAgeFilesLines
...
* ALSA: line6: Create sysfs via snd_card_add_dev_attr()Takashi Iwai2015-02-061-25/+13Star
| | | | | | | Use the new helper function to create sysfs entries in the card more gracefully without races. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: line6: fixup of line6_start_timer argument typeNicholas Mc Guire2015-02-032-2/+2
| | | | | | | | | line6_start_timer passes an unsigned int as argument to be used in mod_timer which is then used by mod_timer as unsigned long, this just fixes up the argument type. This change helps make static code checkers happy. Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: line6: use msecs_to_jiffies for conversionNicholas Mc Guire2015-02-031-1/+1
| | | | | | | | This is only an API consolidation and should make things more readable it replaces var * HZ / 1000 by msecs_to_jiffies(var). Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: line6: Remove unused line6_midibuf_skip_message()Chris Rorvick2015-02-012-13/+0Star
| | | | | | | | | | | Use of this function ended with commits 3e58c868db1d ("staging: line6: drop midi_mask_receive") and af89d2897a71 ("staging: line6: drop midi_mask_transmit".) [Removed the corresponding line in midibuf.h, too -- tiwai] Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: line6: Remove unused line6_midibuf_status()Chris Rorvick2015-02-012-8/+0Star
| | | | | | | | | | This function has not been used since merging the driver into the kernel (and a good while before that.) [Removed the corresponding line in midibuf.h, too -- tiwai] Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'topic/line6' into for-nextTakashi Iwai2015-01-3013-250/+114Star
|\
| * ALSA: line6: Remove snd_line6_ prefix of pcm property fieldsTakashi Iwai2015-01-286-20/+18Star
| | | | | | | | | | | | It's just superfluous and doesn't give any better readability. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Remove invalid capability bits for PODxt Live VariaxTakashi Iwai2015-01-281-3/+1Star
| | | | | | | | | | | | PODxt Live Variax doesn't have PCM and HWMON but only MIDI. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Remove struct usb_line6_podhdTakashi Iwai2015-01-281-6/+1Star
| | | | | | | | | | | | It's identical with struct usb_line6. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Move the contents of usbdefs.h into driver.hTakashi Iwai2015-01-289-34/+16Star
| | | | | | | | | | | | | | Most of them are rather relevant with the definitions in driver.h, and there are only a few lines, so just rip it off. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Remove revision.hTakashi Iwai2015-01-282-5/+0Star
| | | | | | | | | | | | The definition is no longer used. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Tidy up and typo fixes in commentsTakashi Iwai2015-01-288-174/+65Star
| | | | | | | | | | | | | | | | | | | | Just reformatting the comments and typos fixed, no functional changes. Particularly, - avoid the kerneldoc marker "/**", - reduce multiple comment lines into single lines, - corrected wrongly referred function names Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Fix volume calculation for big-endianTakashi Iwai2015-01-281-9/+14
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: usx2y: Move UAPI definition into include/uapi/sound/usb_stream.hTakashi Iwai2015-01-281-74/+4Star
| | | | | | | | | | | | | | | | | | | | The user-space API definition for usb_stream stuff should be moved to include/uapi/sound to be exposed publicly. While we're at it, add the missing ifdef guard for double inclusion, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'topic/line6' into for-nextTakashi Iwai2015-01-2815-1105/+705Star
|\|
| * ALSA: line6: Handle error from line6_pcm_acquire()Takashi Iwai2015-01-282-6/+20
| | | | | | | | | | Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Make common PCM pointer callbackTakashi Iwai2015-01-284-20/+12Star
| | | | | | | | | | | | | | | | Both playback and capture callbacks are identical, so let's merge them. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Reorganize PCM stream handlingTakashi Iwai2015-01-287-425/+252Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current code deals with the stream start / stop solely via line6_pcm_acquire() and line6_pcm_release(). This was (supposedly) intended to avoid the races, but it doesn't work as expected. The concurrent acquire and release calls can be performed without proper protections, thus this might result in memory corruption. Furthermore, we can't take a mutex to protect the whole function because it can be called from the PCM trigger callback that is an atomic context. Also spinlock isn't appropriate because the function allocates with kmalloc with GFP_KERNEL. That is, these function just lead to singular problems. This is an attempt to reduce the existing races. First off, separate both the stream buffer management and the stream URB management. The former is protected via a newly introduced state_mutex while the latter is protected via each line6_pcm_stream lock. Secondly, the stream state are now managed in opened and running bit flags of each line6_pcm_stream. Not only this a bit clearer than previous combined bit flags, this also gives a better abstraction. These rewrites allows us to make common hw_params and hw_free callbacks for both playback and capture directions. For the monitor and impulse operations, still line6_pcm_acquire() and line6_pcm_release() are used. They call internally the corresponding functions for both playback and capture streams with proper lock or mutex. Unlike the previous versions, these function don't take the bit masks but the only single type value. Also they are supposed to be applied only as duplex operations. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Clear prev_fbuf and prev_fsize properlyTakashi Iwai2015-01-282-7/+7
| | | | | | | | | | | | | | | | | | | | | | Clearing prev_fsize in line6_pcm_acquire() is pretty racy. This can be called at any time while the stream is being played. Rather better to clear prev_fbuf and prev_fsize at the proper place like the stream stop for capture, and just after copying the monitor / impulse data inside the spinlock. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Fix racy loopback handlingTakashi Iwai2015-01-282-20/+24
| | | | | | | | | | | | | | | | | | | | | | The impulse and monitor handling in submit_audio_out_urb() isn't protected thus this can be racy with the capture stream handling. This patch extends the range to protect via each stream's spinlock (now the whole submit_audio_*_urb() are covered), and take the capture stream lock additionally for the impulse and monitor handling part. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Minor tidy up in line6_probe()Takashi Iwai2015-01-281-11/+9Star
| | | | | | | | | | | | | | | | Move the check of multi configurations before snd_card_new() as a short path, and reduce superfluous pointer references. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Let snd_card_new() allocate private dataTakashi Iwai2015-01-286-45/+20Star
| | | | | | | | | | | | | | | | | | Instead of allocating the private data individually in each driver's probe at first, let snd_card_new() allocate the data that is called in line6_probe(). This simplifies the primary probe functions. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Drop interface argument from private_init and disconnect callbacksTakashi Iwai2015-01-286-30/+31
| | | | | | | | | | | | | | | | | | | | | | The interface argument is used just for retrieving the assigned device, which can be already found in line6->ifcdev. Drop them from the callbacks. Also, pass the usb id to private_init so that the driver can deal with it there. This is a preliminary work for the further cleanup to move the whole allocation into driver.c. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Skip volume manipulation during silence copyingTakashi Iwai2015-01-281-2/+3
| | | | | | | | | | | | | | | | A minor optimization; while pausing, the driver just copies the zero that doesn't need any volume changes. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Do clipping in volume / monitor manipulationsTakashi Iwai2015-01-281-3/+7
| | | | | | | | | | Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Consolidate PCM stream buffer allocation and freeTakashi Iwai2015-01-285-38/+29Star
| | | | | | | | | | | | | | | | | | The PCM stream buffer allocation and free are identical for both playback and capture streams. Provide single helper functions. These are used only in pcm.c, thus they can be even static. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Use dev_err()Takashi Iwai2015-01-281-1/+2
| | | | | | | | | | | | | | This is the last remaining snd_printk() usage in this driver. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Consolidate URB unlink and sync helpersTakashi Iwai2015-01-285-133/+69Star
| | | | | | | | | | | | | | | | The codes to unlink and sync URBs are identical for both playback and capture streams. Consolidate to single helper functions. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Rearrange PCM structureTakashi Iwai2015-01-284-208/+142Star
| | | | | | | | | | | | | | | | | | | | | | Introduce a new line6_pcm_stream structure and group individual fields of snd_line6_pcm struct to playback and capture groups. This patch itself just does rename and nothing else. More meaningful cleanups based on these fields shuffling will follow. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Drop voodoo workaroundsTakashi Iwai2015-01-282-24/+0Star
| | | | | | | | | | | | | | | | If the problem still really remains, we should fix it instead of papering over it like this... Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Use incremental loopTakashi Iwai2015-01-283-11/+11
| | | | | | | | | | | | | | | | Using a decremental loop without particular reasons worsens the readability a lot. Use incremental loops instead. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Drop superfluous spinlock for triggerTakashi Iwai2015-01-282-22/+6Star
| | | | | | | | | | | | | | | | The trigger callback is already spinlocked, so we need no more lock here (even for the linked substreams). Let's drop it. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Fix the error recovery in line6_pcm_acquire()Takashi Iwai2015-01-281-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | line6_pcm_acquire() tries to restore the newly obtained resources at the error path. But some flags aren't recorded and released properly when the corresponding buffer is already present. These bits have to be cleared in the error recovery, too. Also, "flags_final" can be initialized to zero since we pass only the subset of "channels" bits. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Use logical ORTakashi Iwai2015-01-281-2/+2
| | | | | | | | | | | | | | Fixed a few places using bits OR wrongly for condition checks. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Fix missing error handling in line6_pcm_acquire()Takashi Iwai2015-01-281-1/+2
| | | | | | | | | | Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Reduce superfluous spinlock in midi.cTakashi Iwai2015-01-282-18/+7Star
| | | | | | | | | | | | | | | | | | | | The midi_transmit_lock is used always inside the send_urb_lock, thus it doesn't play any role. Let's kill it. Also, rename "send_urb_lock" as a more simple name "lock" since this is the only lock for midi. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Remove unused line6_nop_read()Takashi Iwai2015-01-282-12/+0Star
| | | | | | | | | | | | | | | | The function isn't used any longer after rewriting from sysfs to leds class in toneport.c. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Fix memory leak at probe error pathTakashi Iwai2015-01-281-29/+30
| | | | | | | | | | | | | | | | | | Fix memory leak at probe error path by rearranging the call order in line6_destruct() so that the common destructor is always called. Also this simplifies the error path to a single goto label. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Minor refactoringTakashi Iwai2015-01-281-45/+49
| | | | | | | | | | | | | | Split some codes in the lengthy line6_probe(). Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6/toneport: Implement LED controls via LED classTakashi Iwai2015-01-282-74/+91
| | | | | | | | | | | | | | | | Instead of non-standard sysfs, reimplement the LED controls on TonePort as LED class devices. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6/toneport: Fix wrong argument for toneport_has_led()Takashi Iwai2015-01-281-3/+1Star
| | | | | | | | | | Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Don't forget to call driver's destructor at error pathTakashi Iwai2015-01-281-0/+2
| | | | | | | | | | | | | | | | | | Currently disconnect callback is used as a driver's destructor, and this has to be called not only at the disconnection time but also at the error paths during probe. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6/toneport: Move setup_timer() at the beginningTakashi Iwai2015-01-281-4/+5
| | | | | | | | | | | | | | | | | | ... so that timer_del_sync() in the destructor can be called safely at any time. Also move the mod_timer() call in toneport_setup(), which is a bit clearer place. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Remove superfluous NULL checks in each driverTakashi Iwai2015-01-284-38/+8Star
| | | | | | | | | | | | | | | | | | The interface and driver objects are always set when callbacks are called. Drop such superfluous NULL checks in init and disconnect calls of each driver. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Abort if inconsistent usbdev is found at disconnectTakashi Iwai2015-01-281-3/+3
| | | | | | | | | | | | | | | | | | It's utterly unsafe to proceed further the disconnect procedure if the assigned usbdev is inconsistent with the expected object. Better to put a WARN_ON() for more cautions and abort immediately. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: line6: Yet more cleanup of superfluous NULL checksTakashi Iwai2015-01-281-11/+2Star
| | | | | | | | | | | | | | ... in line6_disconnect() as well. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into for-nextTakashi Iwai2015-01-261-0/+1
|\ \ | | | | | | | | | | | | Sync with the latest 3.19-rc state for applying other ALSA sequencer core fixes.
| * | ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210Jason Lee Cragg2015-01-181-0/+1
| | | | | | | | | | | | | | | | | | Signed-off-by: Jason Lee Cragg <jcragg@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | | Merge branch 'topic/timer-cleanup' into for-nextTakashi Iwai2015-01-201-3/+2Star
|\ \ \
| * | | ALSA: usb-audio: Use setup_timer() and mod_timer()Takashi Iwai2015-01-191-3/+2Star
| | | | | | | | | | | | | | | | | | | | | | | | No functional change, refactoring with the standard helpers. Signed-off-by: Takashi Iwai <tiwai@suse.de>