Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfc4957b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents 6fb805fb 3dc8523f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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 */
+27 −0
Original line number Diff line number Diff line
@@ -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},
+1 −0
Original line number Diff line number Diff line
@@ -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 */
};

+7 −2
Original line number Diff line number Diff line
@@ -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