diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /sound/usb/format.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'sound/usb/format.c')
-rw-r--r-- | sound/usb/format.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sound/usb/format.c b/sound/usb/format.c index 69148212aa70..8d042dce0d16 100644 --- a/sound/usb/format.c +++ b/sound/usb/format.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include "helper.h" | 30 | #include "helper.h" |
31 | #include "debug.h" | 31 | #include "debug.h" |
32 | #include "clock.h" | 32 | #include "clock.h" |
33 | #include "format.h" | ||
33 | 34 | ||
34 | /* | 35 | /* |
35 | * parse the audio format type I descriptor | 36 | * parse the audio format type I descriptor |
@@ -76,7 +77,10 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip, | |||
76 | format = 1 << UAC_FORMAT_TYPE_I_PCM; | 77 | format = 1 << UAC_FORMAT_TYPE_I_PCM; |
77 | } | 78 | } |
78 | if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) { | 79 | if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) { |
79 | if (sample_width > sample_bytes * 8) { | 80 | if (chip->usb_id == USB_ID(0x0582, 0x0016) /* Edirol SD-90 */ && |
81 | sample_width == 24 && sample_bytes == 2) | ||
82 | sample_bytes = 3; | ||
83 | else if (sample_width > sample_bytes * 8) { | ||
80 | snd_printk(KERN_INFO "%d:%u:%d : sample bitwidth %d in over sample bytes %d\n", | 84 | snd_printk(KERN_INFO "%d:%u:%d : sample bitwidth %d in over sample bytes %d\n", |
81 | chip->dev->devnum, fp->iface, fp->altsetting, | 85 | chip->dev->devnum, fp->iface, fp->altsetting, |
82 | sample_width, sample_bytes); | 86 | sample_width, sample_bytes); |
@@ -173,9 +177,11 @@ static int parse_audio_format_rates_v1(struct snd_usb_audio *chip, struct audiof | |||
173 | if (!rate) | 177 | if (!rate) |
174 | continue; | 178 | continue; |
175 | /* C-Media CM6501 mislabels its 96 kHz altsetting */ | 179 | /* C-Media CM6501 mislabels its 96 kHz altsetting */ |
180 | /* Terratec Aureon 7.1 USB C-Media 6206, too */ | ||
176 | if (rate == 48000 && nr_rates == 1 && | 181 | if (rate == 48000 && nr_rates == 1 && |
177 | (chip->usb_id == USB_ID(0x0d8c, 0x0201) || | 182 | (chip->usb_id == USB_ID(0x0d8c, 0x0201) || |
178 | chip->usb_id == USB_ID(0x0d8c, 0x0102)) && | 183 | chip->usb_id == USB_ID(0x0d8c, 0x0102) || |
184 | chip->usb_id == USB_ID(0x0ccd, 0x00b1)) && | ||
179 | fp->altsetting == 5 && fp->maxpacksize == 392) | 185 | fp->altsetting == 5 && fp->maxpacksize == 392) |
180 | rate = 96000; | 186 | rate = 96000; |
181 | /* Creative VF0470 Live Cam reports 16 kHz instead of 8kHz */ | 187 | /* Creative VF0470 Live Cam reports 16 kHz instead of 8kHz */ |