aboutsummaryrefslogtreecommitdiff
path: root/sound/usb
diff options
context:
space:
mode:
authorSteve Pfetsch <spfetsch@google.com>2016-07-13 12:19:16 -0700
committerSteve Pfetsch <spfetsch@google.com>2016-07-13 14:27:02 -0700
commite4622e4329245baa0613416e66fdd8cb8d359589 (patch)
treef0c5016186139487cb34a3879540ab1a9c9167ed /sound/usb
parent0308697d86d79b23a54c56a10f0c4a0a72080815 (diff)
parent719694ad9565811a5d92301cfa04ef440f1d38a8 (diff)
Merge AU_LINUX_ANDROID_LA.HB.1.3.9.06.00.01.213.216 into android-msm-marlin-3.18
The following camera commit was reverted in the branch being merged: f3c656d msm: camera: sensor: power_down eeprom if read fails The following sched commits were reverted in the branch being merged: 556f086 Revert "sched: warn/panic upon excessive scheduling latency" ef07180 Revert "sched: add scheduling latency tracking procfs node" ab273d4 sched: eliminate sched_early_detection_duration knob eb7bc52 sched: Remove the sched heavy task frequency guidance feature 49fe8ea sched: eliminate sched_migration_fixup knob 650cf42 sched: eliminate sched_enable_power_aware knob and parameter f212108 sched: eliminate sched_freq_account_wait_time knob 08f5e5b sched: eliminate sched_account_wait_time knob fa70996 sched: don't assume higher capacity means higher power in lb e62daff sched/cputime: Fix steal_account_process_tick() to always return jiffies c8d69b6 sched: Fix crash in sched_init_numa() 71dc6a3 sched: Fix cpu_active_mask/cpu_online_mask race Conflicts: Makefile arch/arm64/kernel/setup.c arch/arm64/mm/mmap.c arch/x86/boot/Makefile arch/x86/mm/mmap.c drivers/block/zram/zcomp.c drivers/block/zram/zcomp_lz4.c drivers/block/zram/zcomp_lzo.c drivers/leds/leds-qpnp-flash.c drivers/md/dm-crypt.c drivers/staging/android/lowmemorykiller.c drivers/video/msm/mdss/mdss_debug.c fs/notify/inotify/inotify_user.c fs/sdcardfs/dentry.c fs/sdcardfs/packagelist.c include/linux/dcache.h include/linux/mm.h init/do_mounts_dm.c mm/kasan/Makefile mm/mmap.c scripts/Makefile.lib sound/core/control_compat.c sound/soc/msm/msm8996.c Change-Id: Id16ec29883f2797af471a6b05d2b95df1f6a185f
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/midi.c1
-rw-r--r--sound/usb/mixer.c6
-rw-r--r--sound/usb/quirks.c25
3 files changed, 27 insertions, 5 deletions
diff --git a/sound/usb/midi.c b/sound/usb/midi.c
index 5bfb695547f8..92ae88bdff7e 100644
--- a/sound/usb/midi.c
+++ b/sound/usb/midi.c
@@ -2406,7 +2406,6 @@ int snd_usbmidi_create(struct snd_card *card,
else
err = snd_usbmidi_create_endpoints(umidi, endpoints);
if (err < 0) {
- snd_usbmidi_free(umidi);
return err;
}
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 8631910cbeb8..8d541a19e8b4 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -811,12 +811,12 @@ static struct usb_feature_control_info audio_feature_info[] = {
{ "Tone Control - Treble", USB_MIXER_S8 },
{ "Graphic Equalizer", USB_MIXER_S8 }, /* FIXME: not implemeted yet */
{ "Auto Gain Control", USB_MIXER_BOOLEAN },
- { "Delay Control", USB_MIXER_U16 },
+ { "Delay Control", USB_MIXER_U16 }, /* FIXME: U32 in UAC2 */
{ "Bass Boost", USB_MIXER_BOOLEAN },
{ "Loudness", USB_MIXER_BOOLEAN },
/* UAC2 specific */
- { "Input Gain Control", USB_MIXER_U16 },
- { "Input Gain Pad Control", USB_MIXER_BOOLEAN },
+ { "Input Gain Control", USB_MIXER_S16 },
+ { "Input Gain Pad Control", USB_MIXER_S16 },
{ "Phase Inverter Control", USB_MIXER_BOOLEAN },
};
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 2c10c9ee36a2..7da345b0cdaf 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -168,6 +168,12 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,
}
alts = &iface->altsetting[fp->altset_idx];
altsd = get_iface_desc(alts);
+ if (altsd->bNumEndpoints < 1) {
+ kfree(fp);
+ kfree(rate_table);
+ return -EINVAL;
+ }
+
fp->protocol = altsd->bInterfaceProtocol;
if (fp->datainterval == 0)
@@ -1108,8 +1114,11 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
switch (chip->usb_id) {
case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */
case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
+ case USB_ID(0x045E, 0x076E): /* MS Lifecam HD-5001 */
+ case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */
case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
+ case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */
case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
return true;
}
@@ -1190,8 +1199,12 @@ void snd_usb_set_interface_quirk(struct usb_device *dev)
* "Playback Design" products need a 50ms delay after setting the
* USB interface.
*/
- if (le16_to_cpu(dev->descriptor.idVendor) == 0x23ba)
+ switch (le16_to_cpu(dev->descriptor.idVendor)) {
+ case 0x23ba: /* Playback Design */
+ case 0x0644: /* TEAC Corp. */
mdelay(50);
+ break;
+ }
}
void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
@@ -1206,6 +1219,14 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
(requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
mdelay(20);
+ /*
+ * "TEAC Corp." products need a 20ms delay after each
+ * class compliant request
+ */
+ if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0644) &&
+ (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
+ mdelay(20);
+
/* Marantz/Denon devices with USB DAC functionality need a delay
* after each class compliant request
*/
@@ -1261,6 +1282,8 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */
case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
+ case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */
+ case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */
if (fp->altsetting == 3)
return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break;