aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-10 14:16:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-10 14:16:54 -0400
commitcfc4957b46d78115351ad6ff3ce0cd0da7b83730 (patch)
tree5c18d3858670b5eaf86b05834d2fe2f50e8f6845
parent6fb805fb104de653ad28384192c1e469505b6bdd (diff)
parent3dc8523fa7412e731441c01fb33f003eb3cfece1 (diff)
Merge tag 'sound-4.0' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "Here are fixes gathered for 4.0-final; one FireFire endian fix, two USB-audio quirks, and three HD-audio quirks. All relatively small and device-specific fixes, should be pretty safe to apply" * tag 'sound-4.0' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: usb - Creative USB X-Fi Pro SB1095 volume knob support ALSA: hda - Fix headphone pin config for Lifebook T731 ALSA: bebob: fix to processing in big-endian machine for sending cue ALSA: hda/realtek - Make more stable to get pin sense for ALC283 ALSA: usb-audio: don't try to get Benchmark DAC1 sample rate ALSA: hda/realtek - Support Dell headset mode for ALC256
-rw-r--r--sound/firewire/bebob/bebob_maudio.c8
-rw-r--r--sound/pci/hda/patch_realtek.c27
-rw-r--r--sound/usb/mixer_quirks.c1
-rw-r--r--sound/usb/quirks.c9
4 files changed, 39 insertions, 6 deletions
diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
index a422aaa3bb0c..9ee25a63f684 100644
--- a/sound/firewire/bebob/bebob_maudio.c
+++ b/sound/firewire/bebob/bebob_maudio.c
@@ -96,10 +96,10 @@ int snd_bebob_maudio_load_firmware(struct fw_unit *unit)
96 struct fw_device *device = fw_parent_device(unit); 96 struct fw_device *device = fw_parent_device(unit);
97 int err, rcode; 97 int err, rcode;
98 u64 date; 98 u64 date;
99 __be32 cues[3] = { 99 __le32 cues[3] = {
100 MAUDIO_BOOTLOADER_CUE1, 100 cpu_to_le32(MAUDIO_BOOTLOADER_CUE1),
101 MAUDIO_BOOTLOADER_CUE2, 101 cpu_to_le32(MAUDIO_BOOTLOADER_CUE2),
102 MAUDIO_BOOTLOADER_CUE3 102 cpu_to_le32(MAUDIO_BOOTLOADER_CUE3)
103 }; 103 };
104 104
105 /* check date of software used to build */ 105 /* check date of software used to build */
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 74382137b9f5..f9d12c0a7e5a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2912,6 +2912,8 @@ static void alc283_init(struct hda_codec *codec)
2912 2912
2913 if (!hp_pin) 2913 if (!hp_pin)
2914 return; 2914 return;
2915
2916 msleep(30);
2915 hp_pin_sense = snd_hda_jack_detect(codec, hp_pin); 2917 hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
2916 2918
2917 /* Index 0x43 Direct Drive HP AMP LPM Control 1 */ 2919 /* Index 0x43 Direct Drive HP AMP LPM Control 1 */
@@ -3607,6 +3609,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3607 3609
3608 switch (codec->vendor_id) { 3610 switch (codec->vendor_id) {
3609 case 0x10ec0255: 3611 case 0x10ec0255:
3612 case 0x10ec0256:
3610 alc_process_coef_fw(codec, coef0255); 3613 alc_process_coef_fw(codec, coef0255);
3611 break; 3614 break;
3612 case 0x10ec0233: 3615 case 0x10ec0233:
@@ -3662,6 +3665,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3662 3665
3663 switch (codec->vendor_id) { 3666 switch (codec->vendor_id) {
3664 case 0x10ec0255: 3667 case 0x10ec0255:
3668 case 0x10ec0256:
3665 alc_write_coef_idx(codec, 0x45, 0xc489); 3669 alc_write_coef_idx(codec, 0x45, 0xc489);
3666 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 3670 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
3667 alc_process_coef_fw(codec, coef0255); 3671 alc_process_coef_fw(codec, coef0255);
@@ -3731,6 +3735,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
3731 3735
3732 switch (codec->vendor_id) { 3736 switch (codec->vendor_id) {
3733 case 0x10ec0255: 3737 case 0x10ec0255:
3738 case 0x10ec0256:
3734 alc_process_coef_fw(codec, coef0255); 3739 alc_process_coef_fw(codec, coef0255);
3735 break; 3740 break;
3736 case 0x10ec0233: 3741 case 0x10ec0233:
@@ -3785,6 +3790,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
3785 3790
3786 switch (codec->vendor_id) { 3791 switch (codec->vendor_id) {
3787 case 0x10ec0255: 3792 case 0x10ec0255:
3793 case 0x10ec0256:
3788 alc_process_coef_fw(codec, coef0255); 3794 alc_process_coef_fw(codec, coef0255);
3789 break; 3795 break;
3790 case 0x10ec0233: 3796 case 0x10ec0233:
@@ -3839,6 +3845,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
3839 3845
3840 switch (codec->vendor_id) { 3846 switch (codec->vendor_id) {
3841 case 0x10ec0255: 3847 case 0x10ec0255:
3848 case 0x10ec0256:
3842 alc_process_coef_fw(codec, coef0255); 3849 alc_process_coef_fw(codec, coef0255);
3843 break; 3850 break;
3844 case 0x10ec0233: 3851 case 0x10ec0233:
@@ -3884,6 +3891,7 @@ static void alc_determine_headset_type(struct hda_codec *codec)
3884 3891
3885 switch (codec->vendor_id) { 3892 switch (codec->vendor_id) {
3886 case 0x10ec0255: 3893 case 0x10ec0255:
3894 case 0x10ec0256:
3887 alc_process_coef_fw(codec, coef0255); 3895 alc_process_coef_fw(codec, coef0255);
3888 msleep(300); 3896 msleep(300);
3889 val = alc_read_coef_idx(codec, 0x46); 3897 val = alc_read_coef_idx(codec, 0x46);
@@ -4364,6 +4372,7 @@ enum {
4364 ALC269_FIXUP_QUANTA_MUTE, 4372 ALC269_FIXUP_QUANTA_MUTE,
4365 ALC269_FIXUP_LIFEBOOK, 4373 ALC269_FIXUP_LIFEBOOK,
4366 ALC269_FIXUP_LIFEBOOK_EXTMIC, 4374 ALC269_FIXUP_LIFEBOOK_EXTMIC,
4375 ALC269_FIXUP_LIFEBOOK_HP_PIN,
4367 ALC269_FIXUP_AMIC, 4376 ALC269_FIXUP_AMIC,
4368 ALC269_FIXUP_DMIC, 4377 ALC269_FIXUP_DMIC,
4369 ALC269VB_FIXUP_AMIC, 4378 ALC269VB_FIXUP_AMIC,
@@ -4517,6 +4526,13 @@ static const struct hda_fixup alc269_fixups[] = {
4517 { } 4526 { }
4518 }, 4527 },
4519 }, 4528 },
4529 [ALC269_FIXUP_LIFEBOOK_HP_PIN] = {
4530 .type = HDA_FIXUP_PINS,
4531 .v.pins = (const struct hda_pintbl[]) {
4532 { 0x21, 0x0221102f }, /* HP out */
4533 { }
4534 },
4535 },
4520 [ALC269_FIXUP_AMIC] = { 4536 [ALC269_FIXUP_AMIC] = {
4521 .type = HDA_FIXUP_PINS, 4537 .type = HDA_FIXUP_PINS,
4522 .v.pins = (const struct hda_pintbl[]) { 4538 .v.pins = (const struct hda_pintbl[]) {
@@ -5010,6 +5026,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
5010 SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), 5026 SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
5011 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX), 5027 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX),
5012 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK), 5028 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
5029 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
5013 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), 5030 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
5014 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 5031 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
5015 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC), 5032 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC),
@@ -5217,6 +5234,16 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
5217 {0x17, 0x40000000}, 5234 {0x17, 0x40000000},
5218 {0x1d, 0x40700001}, 5235 {0x1d, 0x40700001},
5219 {0x21, 0x02211050}), 5236 {0x21, 0x02211050}),
5237 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5238 {0x12, 0x90a60140},
5239 {0x13, 0x40000000},
5240 {0x14, 0x90170110},
5241 {0x19, 0x411111f0},
5242 {0x1a, 0x411111f0},
5243 {0x1b, 0x411111f0},
5244 {0x1d, 0x40700001},
5245 {0x1e, 0x411111f0},
5246 {0x21, 0x02211020}),
5220 SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, 5247 SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4,
5221 {0x12, 0x90a60130}, 5248 {0x12, 0x90a60130},
5222 {0x13, 0x40000000}, 5249 {0x13, 0x40000000},
diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
index dc9df007d3e3..337c317ead6f 100644
--- a/sound/usb/mixer_quirks.c
+++ b/sound/usb/mixer_quirks.c
@@ -192,6 +192,7 @@ static const struct rc_config {
192 { USB_ID(0x041e, 0x3040), 2, 2, 6, 6, 2, 0x6e91 }, /* Live! 24-bit */ 192 { USB_ID(0x041e, 0x3040), 2, 2, 6, 6, 2, 0x6e91 }, /* Live! 24-bit */
193 { USB_ID(0x041e, 0x3042), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 */ 193 { USB_ID(0x041e, 0x3042), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 */
194 { USB_ID(0x041e, 0x30df), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */ 194 { USB_ID(0x041e, 0x30df), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
195 { USB_ID(0x041e, 0x3237), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
195 { USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */ 196 { USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */
196}; 197};
197 198
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 753a47de8459..9a28365126f9 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1113,8 +1113,13 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
1113 1113
1114bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) 1114bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
1115{ 1115{
1116 /* MS Lifecam HD-5000 doesn't support reading the sample rate. */ 1116 /* devices which do not support reading the sample rate. */
1117 return chip->usb_id == USB_ID(0x045E, 0x076D); 1117 switch (chip->usb_id) {
1118 case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
1119 case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
1120 return true;
1121 }
1122 return false;
1118} 1123}
1119 1124
1120/* Marantz/Denon USB DACs need a vendor cmd to switch 1125/* Marantz/Denon USB DACs need a vendor cmd to switch