diff options
author | Thibault Le Meur <Thibault.LeMeur@supelec.fr> | 2007-07-12 05:26:35 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-07-20 05:11:50 -0400 |
commit | f8c78b82b9e47d933629e7060e4a83a277b15ffe (patch) | |
tree | bebe05fcce9dc70f5b6fea2459e3950ca909b1e0 /sound/usb/usbaudio.c | |
parent | be38114a49853e441e694d690e631937de5fc524 (diff) |
[ALSA] usb-audio - Fix audiophile-USB quirk for little-endian
Audiophile-usb fix (corrects little-endianness in 16bit
modes, resets interfaces at device initialization, and updates the
documentation).
Signed-off-by: Thibault Le Meur <Thibault.LeMeur@supelec.fr>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r-- | sound/usb/usbaudio.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index 8ebc1adb5ed9..834b0aff5ec1 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -2350,7 +2350,9 @@ static int is_big_endian_format(struct snd_usb_audio *chip, struct audioformat * | |||
2350 | return 1; | 2350 | return 1; |
2351 | break; | 2351 | break; |
2352 | case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */ | 2352 | case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */ |
2353 | return 1; | 2353 | if (device_setup[chip->index] == 0x00 || |
2354 | fp->altsetting==1 || fp->altsetting==2 || fp->altsetting==3) | ||
2355 | return 1; | ||
2354 | } | 2356 | } |
2355 | return 0; | 2357 | return 0; |
2356 | } | 2358 | } |
@@ -3251,6 +3253,11 @@ static int snd_usb_cm106_boot_quirk(struct usb_device *dev) | |||
3251 | static int audiophile_skip_setting_quirk(struct snd_usb_audio *chip, | 3253 | static int audiophile_skip_setting_quirk(struct snd_usb_audio *chip, |
3252 | int iface, int altno) | 3254 | int iface, int altno) |
3253 | { | 3255 | { |
3256 | /* Reset ALL ifaces to 0 altsetting. | ||
3257 | * Call it for every possible altsetting of every interface. | ||
3258 | */ | ||
3259 | usb_set_interface(chip->dev, iface, 0); | ||
3260 | |||
3254 | if (device_setup[chip->index] & AUDIOPHILE_SET) { | 3261 | if (device_setup[chip->index] & AUDIOPHILE_SET) { |
3255 | if ((device_setup[chip->index] & AUDIOPHILE_SET_DTS) | 3262 | if ((device_setup[chip->index] & AUDIOPHILE_SET_DTS) |
3256 | && altno != 6) | 3263 | && altno != 6) |