diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-10 14:16:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-10 14:16:54 -0400 |
commit | cfc4957b46d78115351ad6ff3ce0cd0da7b83730 (patch) | |
tree | 5c18d3858670b5eaf86b05834d2fe2f50e8f6845 | |
parent | 6fb805fb104de653ad28384192c1e469505b6bdd (diff) | |
parent | 3dc8523fa7412e731441c01fb33f003eb3cfece1 (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.c | 8 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 27 | ||||
-rw-r--r-- | sound/usb/mixer_quirks.c | 1 | ||||
-rw-r--r-- | sound/usb/quirks.c | 9 |
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 | ||
1114 | bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) | 1114 | bool 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 |