10 Dec, 2015
4 commits
-
commit a91e627e3f0ed820b11d86cdc04df38f65f33a70 upstream.
One of the many faults of the QinHeng CH345 USB MIDI interface chip is
that it does not handle received SysEx messages correctly -- every second
event packet has a wrong code index number, which is the one from the last
seen message, instead of 4. For example, the two messages "FE F0 01 02 03
04 05 06 07 08 09 0A 0B 0C 0D 0E F7" result in the following event
packets:correct: CH345:
0F FE 00 00 0F FE 00 00
04 F0 01 02 04 F0 01 02
04 03 04 05 0F 03 04 05
04 06 07 08 04 06 07 08
04 09 0A 0B 0F 09 0A 0B
04 0C 0D 0E 04 0C 0D 0E
05 F7 00 00 05 F7 00 00A class-compliant driver must interpret an event packet with CIN 15 as
having a single data byte, so the other two bytes would be ignored. The
message received by the host would then be missing two bytes out of six;
in this example, "F0 01 02 03 06 07 08 09 0C 0D 0E F7".These corrupted SysEx event packages contain only data bytes, while the
CH345 uses event packets with a correct CIN value only for messages with
a status byte, so it is possible to distinguish between these two cases by
checking for the presence of this status byte.(Other bugs in the CH345's input handling, such as the corruption resulting
from running status, cannot be worked around.)Signed-off-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 1ca8b201309d842642f221db7f02f71c0af5be2d upstream.
The CH345 USB MIDI chip has two output ports. However, they are
multiplexed through one pin, and the number of ports cannot be reduced
even for hardware that implements only one connector, so for those
devices, data sent to either port ends up on the same hardware output.
This becomes a problem when both ports are used at the same time, as
longer MIDI commands (such as SysEx messages) are likely to be
interrupted by messages from the other port, and thus to get lost.It would not be possible for the driver to detect how many ports the
device actually has, except that in practice, _all_ devices built with
the CH345 have only one port. So we can just ignore the device's
descriptors, and hardcode one output port.Signed-off-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 98d362becb6621bebdda7ed0eac7ad7ec6c37898 upstream.
Signed-off-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 16771c7c704769c5f3d70c024630b6e5b3eafa67 upstream.
This patch adds native DSD support for the Aune X1S 32BIT/384 DSD DAC
Signed-off-by: Jurgen Kramer
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman
30 Sep, 2015
1 commit
-
commit 6aa6925cad06159dc6e25857991bbc4960821242 upstream.
The check of cval->cached should be zero-based (including master channel).
Signed-off-by: Yao-Wen Mao
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman
14 Sep, 2015
2 commits
-
commit 9544f8b6e2ee9ed02d2322ff018837b185f51d45 upstream.
This patch adds native DSD support for the Gustard DAC-X20U.
Signed-off-by: Jurgen Kramer
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 9003ebb13f61e8c78a641e0dda7775183ada0625 upstream.
The fix for deadlock in PM in commit [1ee23fe07ee8: 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: Hans Yang
Fixes: 1ee23fe07ee8 ('ALSA: usb-audio: Fix deadlocks at resuming')
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman
11 Aug, 2015
3 commits
-
commit 2d1cb7f658fb9c3ba8f9dab8aca297d4dfdec835 upstream.
Add the correct dB ranges of Bose Companion 5 and Drangonfly DAC 1.2.
Signed-off-by: Yao-Wen Mao
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 4d0e677523a999e1dec28e55cc314c47ba09ca12 upstream.
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
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman -
commit 0689a86ae814f39af94a9736a0a5426dd82eb107 upstream.
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: Dominic Sacré
Signed-off-by: Albert Huitsing
Acked-by: Clemens Ladisch
Signed-off-by: Takashi Iwai
Signed-off-by: Greg Kroah-Hartman
08 Jun, 2015
1 commit
-
This patch adds native DSD support for the XMOS based JLsounds I2SoverUSB board
Signed-off-by: Jurgen Kramer
Cc:
Signed-off-by: Takashi Iwai
03 Jun, 2015
2 commits
-
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: nightmixes
Tested-by: nightmixes
Signed-off-by: Clemens Ladisch
Cc:
Signed-off-by: Takashi Iwai -
Add mixer control names for the ESI Maya44 USB+ (which appears to be
identical width the AudioTrak Maya44 USB).Reported-by: nightmixes
Signed-off-by: Clemens Ladisch
Cc:
Signed-off-by: Takashi Iwai
30 May, 2015
1 commit
-
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: Eric Wong
Cc: Joe Turner
Cc:
Signed-off-by: Takashi Iwai
29 May, 2015
1 commit
-
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/1Signed-off-by: Wolfram Sang
Cc:
Signed-off-by: Takashi Iwai
24 May, 2015
1 commit
-
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:
Signed-off-by: Vittorio Gambaletta
Signed-off-by: Takashi Iwai
19 May, 2015
1 commit
-
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:
Signed-off-by: Takashi Iwai
21 Apr, 2015
1 commit
-
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: Takamichi Horikawa
Signed-off-by: Takashi Iwai
13 Apr, 2015
1 commit
12 Apr, 2015
1 commit
-
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: Adam Honse
Cc:
Signed-off-by: Takashi Iwai
09 Apr, 2015
1 commit
-
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: Dmitry M. Fedin
Cc:
Signed-off-by: Takashi Iwai
08 Apr, 2015
1 commit
-
Back merge HD-audio quirks to for-next branch, so that we can apply
a couple of more quirks.Signed-off-by: Takashi Iwai
04 Apr, 2015
1 commit
-
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: Eric Wong
Cc: Joe Turner
Signed-off-by: Takashi Iwai
16 Mar, 2015
1 commit
12 Mar, 2015
1 commit
-
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: Daniel Mack
Reported-by: Rafa Lafuente
Tested-by: Raphaël Doursenaud
Cc:
Signed-off-by: Takashi Iwai
09 Mar, 2015
1 commit
-
Merging the HD-audio fixes back to base devel branch for further
working on it.
05 Mar, 2015
1 commit
-
The usages of clamp() macro in sound/usb/line6/playback.c are just
wrong, the low and high values are swapped.Reported-by: Dan Carpenter
Signed-off-by: Takashi Iwai
04 Mar, 2015
1 commit
-
There are three places doing the same check. Let's make them
together.Signed-off-by: Takashi Iwai
18 Feb, 2015
1 commit
-
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=93261
Signed-off-by: Frank C Guenther
Cc:
Signed-off-by: Takashi Iwai
17 Feb, 2015
1 commit
-
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: Joe Turner
Signed-off-by: Takashi Iwai
12 Feb, 2015
1 commit
-
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: Chris Rorvick
Signed-off-by: Takashi Iwai
11 Feb, 2015
5 commits
-
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: Chris Rorvick
Signed-off-by: Takashi Iwai -
The serial number (aka ESN) is a 32-bit value.
Signed-off-by: Chris Rorvick
Signed-off-by: Takashi Iwai -
Signed-off-by: Chris Rorvick
Signed-off-by: Takashi Iwai -
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: Chris Rorvick
Signed-off-by: Takashi Iwai -
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: Chris Rorvick
Signed-off-by: Takashi Iwai
09 Feb, 2015
1 commit
-
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: Pierre-Louis Bossart
Signed-off-by: Takashi Iwai
08 Feb, 2015
3 commits
-
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: Chris Rorvick
Signed-off-by: Takashi Iwai -
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: Chris Rorvick
Signed-off-by: Takashi Iwai -
Add a predicate for testing if the device supports source selection to
make the conditional logic around this a bit cleaner.Signed-off-by: Chris Rorvick
Signed-off-by: Takashi Iwai