diff options
author | Steve Pfetsch <spfetsch@google.com> | 2016-07-13 12:19:16 -0700 |
---|---|---|
committer | Steve Pfetsch <spfetsch@google.com> | 2016-07-13 14:27:02 -0700 |
commit | e4622e4329245baa0613416e66fdd8cb8d359589 (patch) | |
tree | f0c5016186139487cb34a3879540ab1a9c9167ed /sound/usb | |
parent | 0308697d86d79b23a54c56a10f0c4a0a72080815 (diff) | |
parent | 719694ad9565811a5d92301cfa04ef440f1d38a8 (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.c | 1 | ||||
-rw-r--r-- | sound/usb/mixer.c | 6 | ||||
-rw-r--r-- | sound/usb/quirks.c | 25 |
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; |