ALSA: hda/realtek - Add HP new mute led supported for ALC236
HP new platform has new mute led feature. COEF index 0x34 bit 5 to control playback mute led. COEF index 0x35 bit 2 and bit 3 to control Mic mute led. [ corrected typos by tiwai ] Signed-off-by: Kailang Yang <kailang@realtek.com> Link: https://lore.kernel.org/r/6741211598ba499687362ff2aa30626b@realtek.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									431e76c3ed
								
							
						
					
					
						commit
						24164f434d
					
				| @ -4219,6 +4219,23 @@ static void alc285_fixup_hp_mute_led_coefbit(struct hda_codec *codec, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void alc236_fixup_hp_mute_led_coefbit(struct hda_codec *codec, | ||||
| 					  const struct hda_fixup *fix, | ||||
| 					  int action) | ||||
| { | ||||
| 	struct alc_spec *spec = codec->spec; | ||||
| 
 | ||||
| 	if (action == HDA_FIXUP_ACT_PRE_PROBE) { | ||||
| 		spec->mute_led_polarity = 0; | ||||
| 		spec->mute_led_coef_idx = 0x34; | ||||
| 		spec->mute_led_coefbit_mask = 1<<5; | ||||
| 		spec->mute_led_coefbit_on = 0; | ||||
| 		spec->mute_led_coefbit_off = 1<<5; | ||||
| 		spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook; | ||||
| 		spec->gen.vmaster_mute_enum = 1; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* turn on/off mic-mute LED per capture hook by coef bit */ | ||||
| static void alc_hp_cap_micmute_update(struct hda_codec *codec) | ||||
| { | ||||
| @ -4246,6 +4263,20 @@ static void alc285_fixup_hp_coef_micmute_led(struct hda_codec *codec, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void alc236_fixup_hp_coef_micmute_led(struct hda_codec *codec, | ||||
| 				const struct hda_fixup *fix, int action) | ||||
| { | ||||
| 	struct alc_spec *spec = codec->spec; | ||||
| 
 | ||||
| 	if (action == HDA_FIXUP_ACT_PRE_PROBE) { | ||||
| 		spec->mic_led_coef_idx = 0x35; | ||||
| 		spec->mic_led_coefbit_mask = 3<<2; | ||||
| 		spec->mic_led_coefbit_on = 2<<2; | ||||
| 		spec->mic_led_coefbit_off = 1<<2; | ||||
| 		snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void alc285_fixup_hp_mute_led(struct hda_codec *codec, | ||||
| 				const struct hda_fixup *fix, int action) | ||||
| { | ||||
| @ -4253,6 +4284,13 @@ static void alc285_fixup_hp_mute_led(struct hda_codec *codec, | ||||
| 	alc285_fixup_hp_coef_micmute_led(codec, fix, action); | ||||
| } | ||||
| 
 | ||||
| static void alc236_fixup_hp_mute_led(struct hda_codec *codec, | ||||
| 				const struct hda_fixup *fix, int action) | ||||
| { | ||||
| 	alc236_fixup_hp_mute_led_coefbit(codec, fix, action); | ||||
| 	alc236_fixup_hp_coef_micmute_led(codec, fix, action); | ||||
| } | ||||
| 
 | ||||
| #if IS_REACHABLE(CONFIG_INPUT) | ||||
| static void gpio2_mic_hotkey_event(struct hda_codec *codec, | ||||
| 				   struct hda_jack_callback *event) | ||||
| @ -6040,6 +6078,7 @@ enum { | ||||
| 	ALC294_FIXUP_ASUS_HPE, | ||||
| 	ALC285_FIXUP_HP_GPIO_LED, | ||||
| 	ALC285_FIXUP_HP_MUTE_LED, | ||||
| 	ALC236_FIXUP_HP_MUTE_LED, | ||||
| }; | ||||
| 
 | ||||
| static const struct hda_fixup alc269_fixups[] = { | ||||
| @ -7169,6 +7208,10 @@ static const struct hda_fixup alc269_fixups[] = { | ||||
| 		.type = HDA_FIXUP_FUNC, | ||||
| 		.v.func = alc285_fixup_hp_mute_led, | ||||
| 	}, | ||||
| 	[ALC236_FIXUP_HP_MUTE_LED] = { | ||||
| 		.type = HDA_FIXUP_FUNC, | ||||
| 		.v.func = alc236_fixup_hp_mute_led, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static const struct snd_pci_quirk alc269_fixup_tbl[] = { | ||||
| @ -7315,6 +7358,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | ||||
| 	SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3), | ||||
| 	SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_LED), | ||||
| 	SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), | ||||
| 	SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), | ||||
| 	SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), | ||||
| 	SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), | ||||
| 	SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user