mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
sound fixes for 4.0
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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJVJ6tVAAoJEGwxgFQ9KSmkJ58QAJx99DJpHAXNSodOX9oEtvO7 FttZpUWUL+sx+k0H6f5VLC6IuUVM3gdCQiBw+R3ZPvu6zEg/PuoQPvuD1vYEjg4O vK61OwI8LEvuTGvjRuu5apSZBlEitbJc0gevNSVU3C0XZRrSPmPpTa2172mdsdbW xlYG4M8eFy3ljMqKp41obA1/zo5tZFZ8G3c0Y7zFMz0P0p0LXLXU7E4BcZ6Lwfi/ TJZjUIcbwbiHgNlIhSHt0ONMauG9PlvbmaBQCrHhbOY8mhxAOeW7KZmYoCQCfa5T d1vLHT3yXw4Y1mkC9g5D60ncNMmMZdyqtESh8/R9EEvKHzpCsfUWaPL7uXbAWoL7 36muciYXL3VGEhQfEPS5yEJU1dFRcBkI6TYQ4jYJqnTwg3oZAslHThnxcdECNs3N vsp4JeizNFOfnoj5fA3nBhTnnwlhw7iBQ+t2mZJoFTKIedwu78ZdJCfO2JhrowED NnRvk4j9SkkzDdvj0rEqZCpVh2+72h1a02MaSq+HQsxjRguEsdbJ8NVtiNlJxJ17 CUKrif8iGIbZb2SEswh05NQCDJzmBDZvDyyk/sQNLWWatRqF2JxcTef8zoY4bc9e t7GNKJSjdGn1kQako7pRfnCWnAdHJa88Z4NBR5tdtbtAXGn1tsr70TJq4TTBSeT/ 1+wFD8DvNl82lSjU3bpc =hSdz -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
cfc4957b46
@ -96,10 +96,10 @@ int snd_bebob_maudio_load_firmware(struct fw_unit *unit)
|
||||
struct fw_device *device = fw_parent_device(unit);
|
||||
int err, rcode;
|
||||
u64 date;
|
||||
__be32 cues[3] = {
|
||||
MAUDIO_BOOTLOADER_CUE1,
|
||||
MAUDIO_BOOTLOADER_CUE2,
|
||||
MAUDIO_BOOTLOADER_CUE3
|
||||
__le32 cues[3] = {
|
||||
cpu_to_le32(MAUDIO_BOOTLOADER_CUE1),
|
||||
cpu_to_le32(MAUDIO_BOOTLOADER_CUE2),
|
||||
cpu_to_le32(MAUDIO_BOOTLOADER_CUE3)
|
||||
};
|
||||
|
||||
/* check date of software used to build */
|
||||
|
@ -2912,6 +2912,8 @@ static void alc283_init(struct hda_codec *codec)
|
||||
|
||||
if (!hp_pin)
|
||||
return;
|
||||
|
||||
msleep(30);
|
||||
hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
|
||||
|
||||
/* Index 0x43 Direct Drive HP AMP LPM Control 1 */
|
||||
@ -3607,6 +3609,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
break;
|
||||
case 0x10ec0233:
|
||||
@ -3662,6 +3665,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_write_coef_idx(codec, 0x45, 0xc489);
|
||||
snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
@ -3731,6 +3735,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
break;
|
||||
case 0x10ec0233:
|
||||
@ -3785,6 +3790,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
break;
|
||||
case 0x10ec0233:
|
||||
@ -3839,6 +3845,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
break;
|
||||
case 0x10ec0233:
|
||||
@ -3884,6 +3891,7 @@ static void alc_determine_headset_type(struct hda_codec *codec)
|
||||
|
||||
switch (codec->vendor_id) {
|
||||
case 0x10ec0255:
|
||||
case 0x10ec0256:
|
||||
alc_process_coef_fw(codec, coef0255);
|
||||
msleep(300);
|
||||
val = alc_read_coef_idx(codec, 0x46);
|
||||
@ -4364,6 +4372,7 @@ enum {
|
||||
ALC269_FIXUP_QUANTA_MUTE,
|
||||
ALC269_FIXUP_LIFEBOOK,
|
||||
ALC269_FIXUP_LIFEBOOK_EXTMIC,
|
||||
ALC269_FIXUP_LIFEBOOK_HP_PIN,
|
||||
ALC269_FIXUP_AMIC,
|
||||
ALC269_FIXUP_DMIC,
|
||||
ALC269VB_FIXUP_AMIC,
|
||||
@ -4517,6 +4526,13 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||
{ }
|
||||
},
|
||||
},
|
||||
[ALC269_FIXUP_LIFEBOOK_HP_PIN] = {
|
||||
.type = HDA_FIXUP_PINS,
|
||||
.v.pins = (const struct hda_pintbl[]) {
|
||||
{ 0x21, 0x0221102f }, /* HP out */
|
||||
{ }
|
||||
},
|
||||
},
|
||||
[ALC269_FIXUP_AMIC] = {
|
||||
.type = HDA_FIXUP_PINS,
|
||||
.v.pins = (const struct hda_pintbl[]) {
|
||||
@ -5010,6 +5026,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
|
||||
SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX),
|
||||
SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
|
||||
SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
|
||||
SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
|
||||
SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
|
||||
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[] = {
|
||||
{0x17, 0x40000000},
|
||||
{0x1d, 0x40700001},
|
||||
{0x21, 0x02211050}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||
{0x12, 0x90a60140},
|
||||
{0x13, 0x40000000},
|
||||
{0x14, 0x90170110},
|
||||
{0x19, 0x411111f0},
|
||||
{0x1a, 0x411111f0},
|
||||
{0x1b, 0x411111f0},
|
||||
{0x1d, 0x40700001},
|
||||
{0x1e, 0x411111f0},
|
||||
{0x21, 0x02211020}),
|
||||
SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4,
|
||||
{0x12, 0x90a60130},
|
||||
{0x13, 0x40000000},
|
||||
|
@ -192,6 +192,7 @@ static const struct rc_config {
|
||||
{ USB_ID(0x041e, 0x3040), 2, 2, 6, 6, 2, 0x6e91 }, /* Live! 24-bit */
|
||||
{ USB_ID(0x041e, 0x3042), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 */
|
||||
{ USB_ID(0x041e, 0x30df), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
|
||||
{ USB_ID(0x041e, 0x3237), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
|
||||
{ USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */
|
||||
};
|
||||
|
||||
|
@ -1113,8 +1113,13 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
|
||||
|
||||
bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
|
||||
{
|
||||
/* MS Lifecam HD-5000 doesn't support reading the sample rate. */
|
||||
return chip->usb_id == USB_ID(0x045E, 0x076D);
|
||||
/* devices which do not support reading the sample rate. */
|
||||
switch (chip->usb_id) {
|
||||
case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
|
||||
case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Marantz/Denon USB DACs need a vendor cmd to switch
|
||||
|
Loading…
Reference in New Issue
Block a user