xref: /openbmc/linux/sound/pci/hda/thinkpad_helper.c (revision 8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2b317b032STakashi Iwai /* Helper functions for Thinkpad LED control;
3b317b032STakashi Iwai  * to be included from codec driver
4b317b032STakashi Iwai  */
5b317b032STakashi Iwai 
68d3d1eceSTakashi Iwai #if IS_ENABLED(CONFIG_THINKPAD_ACPI)
7b317b032STakashi Iwai 
8b317b032STakashi Iwai #include <linux/acpi.h>
9b3802783STakashi Iwai #include <linux/leds.h>
10b317b032STakashi Iwai 
is_thinkpad(struct hda_codec * codec)11b317b032STakashi Iwai static bool is_thinkpad(struct hda_codec *codec)
12b317b032STakashi Iwai {
13c3a90058SLukas Wunner 	return (codec->core.subsystem_id >> 16 == 0x17aa) &&
142ecb704aSHui Wang 	       (acpi_dev_found("LEN0068") || acpi_dev_found("LEN0268") ||
152ecb704aSHui Wang 		acpi_dev_found("IBM0068"));
16b317b032STakashi Iwai }
17b317b032STakashi Iwai 
hda_fixup_thinkpad_acpi(struct hda_codec * codec,const struct hda_fixup * fix,int action)18b317b032STakashi Iwai static void hda_fixup_thinkpad_acpi(struct hda_codec *codec,
19b317b032STakashi Iwai 				    const struct hda_fixup *fix, int action)
20b317b032STakashi Iwai {
21*e65bf997SJaroslav Kysela 	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
22b317b032STakashi Iwai 		if (!is_thinkpad(codec))
23b317b032STakashi Iwai 			return;
248d3d1eceSTakashi Iwai 		snd_hda_gen_add_mute_led_cdev(codec, NULL);
258a503555STakashi Iwai 		snd_hda_gen_add_micmute_led_cdev(codec, NULL);
26b317b032STakashi Iwai 	}
27b317b032STakashi Iwai }
28b317b032STakashi Iwai 
29b317b032STakashi Iwai #else /* CONFIG_THINKPAD_ACPI */
30b317b032STakashi Iwai 
hda_fixup_thinkpad_acpi(struct hda_codec * codec,const struct hda_fixup * fix,int action)31b317b032STakashi Iwai static void hda_fixup_thinkpad_acpi(struct hda_codec *codec,
32b317b032STakashi Iwai 				    const struct hda_fixup *fix, int action)
33b317b032STakashi Iwai {
34b317b032STakashi Iwai }
35b317b032STakashi Iwai 
36b317b032STakashi Iwai #endif /* CONFIG_THINKPAD_ACPI */
37