- 26 8月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
After the recent fix of runtime PM for USB-audio driver, we got a lockdep warning like: ============================================= [ INFO: possible recursive locking detected ] 4.2.0-rc8+ #61 Not tainted --------------------------------------------- pulseaudio/980 is trying to acquire lock: (&chip->shutdown_rwsem){.+.+.+}, at: [<ffffffffa0355dac>] snd_usb_autoresume+0x1d/0x52 [snd_usb_audio] but task is already holding lock: (&chip->shutdown_rwsem){.+.+.+}, at: [<ffffffffa0355dac>] snd_usb_autoresume+0x1d/0x52 [snd_usb_audio] This comes from snd_usb_autoresume() invoking down_read() and it's used in a nested way. Although it's basically safe, per se (as these are read locks), it's better to reduce such spurious warnings. The read lock is needed to guarantee the execution of "shutdown" (cleanup at disconnection) task after all concurrent tasks are finished. This can be implemented in another better way. Also, the current check of chip->in_pm isn't good enough for protecting the racy execution of multiple auto-resumes. This patch rewrites the logic of snd_usb_autoresume() & co; namely, - The recursive call of autopm is avoided by the new refcount, chip->active. The chip->in_pm flag is removed accordingly. - Instead of rwsem, another refcount, chip->usage_count, is introduced for tracking the period to delay the shutdown procedure. At the last clear of this refcount, wake_up() to the shutdown waiter is called. - The shutdown flag is replaced with shutdown atomic count; this is for reducing the lock. - Two new helpers are introduced to simplify the management of these refcounts; snd_usb_lock_shutdown() increases the usage_count, checks the shutdown state, and does autoresume. snd_usb_unlock_shutdown() does the opposite. Most of mixer and other codes just need this, and simply returns an error if it receives an error from lock. Fixes: 9003ebb1 ('ALSA: usb-audio: Fix runtime PM unbalance') Reported-and-tested-by: NAlexnader Kuleshov <kuleshovmail@gmail.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 21 8月, 2015 1 次提交
-
-
由 Jurgen Kramer 提交于
This patch adds native DSD support for the Gustard DAC-X20U. Signed-off-by: NJurgen Kramer <gtmkramer@xs4all.nl> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 20 8月, 2015 1 次提交
-
-
由 Julian Scheel 提交于
The input terminal parser recurses into the referenced clock entity to verify it is existant and thus the terminal descriptor is valid. The actual property values of the term instance which is initially parsed must not be overriden by the recursion. For this to work the term properties have to be assigned after recursing into the referenced clock entity descriptors. Signed-off-by: NJulian Scheel <julian@jusst.de> Acked-by: NDaniel Mack <daniel@zonque.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 19 8月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
The fix for deadlock in PM in commit [1ee23fe0: ALSA: usb-audio: Fix deadlocks at resuming] introduced a new check of in_pm flag. However, the brainless patch author evaluated it in a wrong way (logical AND instead of logical OR), thus usb_autopm_get_interface() is wrongly called at probing, leading to unbalance of runtime PM refcount. This patch fixes it by correcting the logic. Reported-by: NHans Yang <hansy@nvidia.com> Fixes: 1ee23fe0 ('ALSA: usb-audio: Fix deadlocks at resuming') Cc: <stable@vger.kernel.org> [v3.15+] Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 16 8月, 2015 2 次提交
-
-
由 Pierre-Louis Bossart 提交于
The M-Audio Transit exposes an interface with a SYNC_NONE attribute. This is not a valid value according to the USB audio classspec. However there is a sync endpoint associated to this record. Changing the logic to try to use this sync endpoint allows for seamless transitions between altset 2 and altset 3. If any errors happen, the behavior remains the same. $ more /proc/asound/card1/stream0 M-Audio Transit USB at usb-0000:00:14.0-2, full speed : USB Audio Playback: Status: Stop Interface 1 Altset 1 Format: S24_3LE Channels: 2 Endpoint: 3 OUT (ADAPTIVE) Rates: 48001 - 96000 (continuous) Interface 1 Altset 2 Format: S24_3LE Channels: 2 Endpoint: 3 OUT (NONE) Rates: 8000 - 48000 (continuous) Interface 1 Altset 3 Format: S16_LE Channels: 2 Endpoint: 3 OUT (ASYNC) Rates: 8000 - 48000 (continuous) Signed-off-by: NPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Pierre-Louis Bossart 提交于
When a transition occurs between alternate settings that do not use the same synchronization method, the substream pointers were not reset. This prevents audio from being played during the second transition. Identified and tested with M-Audio Transit device (0763:2006 Midiman M-Audio Transit) Details of the issue: First playback to adaptive endpoint: $ aplay -Dhw:1,0 ~/24_96.wav Playing WAVE '/home/plb/24_96.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo [ 3169.297556] usb 1-2: setting usb interface 1:1 [ 3169.297568] usb 1-2: Creating new playback data endpoint #3 [ 3169.298563] usb 1-2: Setting params for ep #3 (type 0, 3 urbs), ret=0 [ 3169.298574] usb 1-2: Starting data EP @ffff880035fc8000 first playback to asynchronous endpoint: $ aplay -Dhw:1,0 ~/16_48.wav Playing WAVE '/home/plb/16_48.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo [ 3204.520251] usb 1-2: setting usb interface 1:3 [ 3204.520264] usb 1-2: Creating new playback data endpoint #3 [ 3204.520272] usb 1-2: Creating new capture sync endpoint #83 [ 3204.521162] usb 1-2: Setting params for ep #3 (type 0, 4 urbs), ret=0 [ 3204.521177] usb 1-2: Setting params for ep #83 (type 1, 4 urbs), ret=0 [ 3204.521182] usb 1-2: Starting data EP @ffff880035fce000 [ 3204.521204] usb 1-2: Starting sync EP @ffff8800bd616000 second playback to adaptive endpoint: no audio and error on terminal: $ aplay -Dhw:1,0 ~/24_96.wav Playing WAVE '/home/plb/24_96.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo aplay: pcm_write:1939: write error: Input/output error [ 3239.483589] usb 1-2: setting usb interface 1:1 [ 3239.483601] usb 1-2: Re-using EP 3 in iface 1,1 @ffff880035fc8000 [ 3239.484590] usb 1-2: Setting params for ep #3 (type 0, 4 urbs), ret=0 [ 3239.484606] usb 1-2: Setting params for ep #83 (type 1, 4 urbs), ret=0 This last line shows that a sync endpoint is used when it shouldn't. The sync endpoint is no longer valid and the pointers are corrupted Signed-off-by: NPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 14 8月, 2015 1 次提交
-
-
由 Julian Scheel 提交于
USB Audio Class version 2.0 supports three different parameter block sizes for CUR requests, which are 1 byte (5.2.3.1 Layout 1 Parameter Block), 2 bytes (5.2.3.2 Layout 2 Parameter Block) and 4 bytes (5.2.3.3 Layout 3 Parameter Block). Use the correct size according to the specific control as it was already done for UACv1. The allocated block size for control requests is increased to support the 4 byte worst case. Signed-off-by: NJulian Scheel <julian@jusst.de> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 29 7月, 2015 1 次提交
-
-
由 Yao-Wen Mao 提交于
Add the correct dB ranges of Bose Companion 5 and Drangonfly DAC 1.2. Signed-off-by: NYao-Wen Mao <yaowen@google.com> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 14 7月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
When a monitor stream is active, the next PCM stream access results in EBUSY error because of the check in line6_stream_start(). Fix this by just skipping the submission of pending URBs when the stream is already running instead. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=101431 Cc: <stable@vger.kernel.org> # v4.0+ Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 01 7月, 2015 1 次提交
-
-
由 Dominic Sacré 提交于
The Steinberg MI2 and MI4 interfaces are compatible with the USB class audio spec, but the MIDI part of the devices is reported as a vendor specific interface. This patch adds entries to quirks-table.h to recognize the MIDI endpoints. Audio functionality was already working and is unaffected by this change. Signed-off-by: NDominic Sacré <dominic.sacre@gmx.de> Signed-off-by: NAlbert Huitsing <albert@huitsing.nl> Acked-by: NClemens Ladisch <clemens@ladisch.de> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 11 6月, 2015 1 次提交
-
-
由 Johan Rastén 提交于
Changed ctl type for Input Gain Control and Input Gain Pad Control to USB_MIXER_S16 as per section 5.2.5.7.11-12 in the USB Audio Class 2.0 definition. Signed-off-by: NJohan Rastén <johan@oljud.se> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 08 6月, 2015 1 次提交
-
-
由 Jurgen Kramer 提交于
This patch adds native DSD support for the XMOS based JLsounds I2SoverUSB board Signed-off-by: NJurgen Kramer <gtmkramer@xs4all.nl> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 03 6月, 2015 2 次提交
-
-
由 Clemens Ladisch 提交于
The driver worked around an error in the MAYA44 USB(+)'s mixer unit descriptor by aborting before parsing the missing field. However, aborting parsing too early prevented parsing of the other units connected to this unit, so the capture mixer controls would be missing. Fix this by moving the check for this descriptor error after the parsing of the unit's input pins. Reported-by: Nnightmixes <nightmixes@gmail.com> Tested-by: Nnightmixes <nightmixes@gmail.com> Signed-off-by: NClemens Ladisch <clemens@ladisch.de> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Clemens Ladisch 提交于
Add mixer control names for the ESI Maya44 USB+ (which appears to be identical width the AudioTrak Maya44 USB). Reported-by: Nnightmixes <nightmixes@gmail.com> Signed-off-by: NClemens Ladisch <clemens@ladisch.de> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 30 5月, 2015 1 次提交
-
-
由 Eric Wong 提交于
This quirk allows us to avoid the noisy: current rate 0 is different from the runtime rate message every time playback starts. While USB DAC in the RR2150 supports reading the sample rate, it never returns a sample rate other than zero in my observation with common sample rates. Signed-off-by: NEric Wong <normalperson@yhbt.net> Cc: Joe Turner <joe@oampo.co.uk> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 29 5月, 2015 1 次提交
-
-
由 Wolfram Sang 提交于
Fix this from the logs: usb 7-1: New USB device found, idVendor=046d, idProduct=08ca ... usb 7-1: Warning! Unlikely big volume range (=3072), cval->res is probably wrong. usb 7-1: [5] FU [Mic Capture Volume] ch = 1, val = 4608/7680/1 Signed-off-by: NWolfram Sang <wsa@the-dreams.de> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 26 5月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
Spotted by sparse: sound/usb/bcd2000/bcd2000.c:73:1: warning: symbol 'devices_used' was not declared. Should it be static? Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 24 5月, 2015 1 次提交
-
-
由 Vittorio G (VittGam) 提交于
Microsoft LifeCam HD-3000 (045e:0779) needs a similar quirk for suppressing the unsupported sample rate inquiry. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=98481 Cc: <stable@vger.kernel.org> Signed-off-by: NVittorio Gambaletta <linuxbugs@vittgam.net> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 19 5月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
Microsoft LifeCam Studio (045e:0772) needs a similar quirk for suppressing the wrong sample rate inquiry. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=98481 Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 21 4月, 2015 1 次提交
-
-
由 Takamichi Horikawa 提交于
Roland SC-D70 reports its device class as vendor specific class and the quirk QUIRK_AUDIO_FIXED_ENDPOINT was used for audio output. In the quirks table the sampling rate was hard-coded to 44100 Hz and therefore not worked when the sound module was in 48000 Hz mode. In this change the quirk is changed to QUIRK_AUDIO_STANDARD_INTERFACE but as the sound module reports incorrect bSubframeSize in its descriptors, additional change is made in format.c to detect it and to override it (which uses the existing code for Edirol SD-90). Tested both when the sound module was in 44100 Hz mode and 48000 Hz mode and both audio input and output. MIDI related part of the driver is not touched. Signed-off-by: NTakamichi Horikawa <takamichiho@gmail.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 12 4月, 2015 1 次提交
-
-
由 Adam Honse 提交于
Adds Microsoft LifeCam Cinema USB ID to the snd_usb_get_sample_rate_quirk list as the Lifecam Cinema does not appear to support getting the sample rate. Fixes the issue where the LifeCam Cinema would wait for USB timeout and log the message "cannot get freq at ep 0x82" when accessed. Addresses bug report https://bugzilla.kernel.org/show_bug.cgi?id=95961. Signed-off-by: NAdam Honse <calcprogrammer1@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 09 4月, 2015 1 次提交
-
-
由 Dmitry M. Fedin 提交于
Adds an entry for Creative USB X-Fi to the rc_config array in mixer_quirks.c to allow use of volume knob on the device. Adds support for newer X-Fi Pro card, known as "Model No. SB1095" with USB ID "041e:3237" Signed-off-by: NDmitry M. Fedin <dmitry.fedin@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 04 4月, 2015 1 次提交
-
-
由 Eric Wong 提交于
Adding this quirk allows us to avoid the noisy "cannot get freq at ep 0x1" message in dmesg output every time playback starts. This ought to affect other Benchmark DAC1 variations using the same "Microchip Technology, Inc." chip as well, but I have only tested with the "Pre" variant. Signed-off-by: NEric Wong <normalperson@yhbt.net> Cc: Joe Turner <joe@oampo.co.uk> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 12 3月, 2015 1 次提交
-
-
由 Daniel Mack 提交于
The device complies to the UAC1 standard but hides that fact with proprietary descriptors. The autodetect quirk for Roland devices catches the audio interface but misses the MIDI part, so a specific quirk is needed. Signed-off-by: NDaniel Mack <daniel@zonque.org> Reported-by: NRafa Lafuente <rafalafuente@gmail.com> Tested-by: NRaphaël Doursenaud <raphael@doursenaud.fr> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 05 3月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
The usages of clamp() macro in sound/usb/line6/playback.c are just wrong, the low and high values are swapped. Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 04 3月, 2015 1 次提交
-
-
由 Takashi Iwai 提交于
There are three places doing the same check. Let's make them together. Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 18 2月, 2015 1 次提交
-
-
由 Frank C Guenther 提交于
Fix problem where playback of Denon DA-300USB DAC sometimes does not start and leads to error messages like "clock source 41 is not valid, cannot use". Solution: Treat this device the same as other Denon/Marantz devices in sound/usb/quirks.c. Tested with both PCM and DSD formats. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=93261Signed-off-by: NFrank C Guenther <bugzilla.frnkcg@spamgourmet.com> Cc: <stable@vger.kernel.org> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 17 2月, 2015 1 次提交
-
-
由 Joe Turner 提交于
Adds a quirk to disable the check that the sample rate has been set correctly, as the Lifecam does not support getting the sample rate. This means that we don't need to wait for the USB timeout when attempting to get the sample rate. Waiting for the timeout causes problems in some applications, which give up on the device acquisition process before it has had time to complete, resulting in no sound. [minor tidy up by tiwai] Signed-off-by: NJoe Turner <joe@oampo.co.uk> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 12 2月, 2015 1 次提交
-
-
由 Chris Rorvick 提交于
The address cannot be negative so make it unsigned. Also, an unsigned int is always sufficient for the length, so no need to overdo it with a size_t. Finally, add in range checks to see if the values passed in actually fit where they are used. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 11 2月, 2015 5 次提交
-
-
由 Chris Rorvick 提交于
The firmware version is a single byte so have the variable type agree. Since the address to this member is passed to the read function, using an int is not even portable. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
The serial number (aka ESN) is a 32-bit value. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
Put an upper bound on how long we will wait for the device to respond to a read/write request (i.e., 100 milliseconds) and return an error if this is reached. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
The device indicates the result of a read/write operation by making the status available on a subsequent request from the driver. This is not ready immediately, though, so the driver is currently slamming the device with hundreds of pointless requests before getting the expected response. Add a two millisecond delay before each attempt. This is approximately the behavior observed with version 4.2.7.1 of the Windows driver. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 09 2月, 2015 1 次提交
-
-
由 Pierre-Louis Bossart 提交于
The first URBs are submitted during the prepare stage. When .trigger is called, the ALSA core saves a trigger tstamp that doesn't correspond to the actual time when the samples are submitted. The trigger_tstamp is now updated when the first data are submitted to avoid any time offsets. A usb-specific trigger_tstamp_pending_update flag is used for now, at some point the flag would need to move to the ALSA core, USB is not the only interface where silent block transfers are programmed as part of the prepare stage, with actual data enabled when .trigger is called. Signed-off-by: NPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 08 2月, 2015 3 次提交
-
-
由 Chris Rorvick 提交于
Provide a unique name for each driver instead of using "line6usb" for all of them. This will allow for different configurations based on the driver type. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
It is unlikely this function would ever be used in a context without a pointer to a `struct usb_line6_toneport', so grab the device type from it rather than having the caller do it. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Chris Rorvick 提交于
Add a predicate for testing if the device supports source selection to make the conditional logic around this a bit cleaner. Signed-off-by: NChris Rorvick <chris@rorvick.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
- 06 2月, 2015 2 次提交
-
-
由 Takashi Iwai 提交于
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-
由 Takashi Iwai 提交于
Use the new helper function to create sysfs entries in the card more gracefully without races. Signed-off-by: NTakashi Iwai <tiwai@suse.de>
-