xref: /linux/sound/hda/common/hda_beep.h (revision 177bf8620cf4ed290ee170a6c5966adc0924b336)
1*05be28feSTakashi Iwai /* SPDX-License-Identifier: GPL-2.0+ */
2*05be28feSTakashi Iwai /*
3*05be28feSTakashi Iwai  * Digital Beep Input Interface for HD-audio codec
4*05be28feSTakashi Iwai  *
5*05be28feSTakashi Iwai  * Author: Matt Ranostay <matt.ranostay@konsulko.com>
6*05be28feSTakashi Iwai  * Copyright (c) 2008 Embedded Alley Solutions Inc
7*05be28feSTakashi Iwai  */
8*05be28feSTakashi Iwai 
9*05be28feSTakashi Iwai #ifndef __SOUND_HDA_BEEP_H
10*05be28feSTakashi Iwai #define __SOUND_HDA_BEEP_H
11*05be28feSTakashi Iwai 
12*05be28feSTakashi Iwai #include <sound/hda_codec.h>
13*05be28feSTakashi Iwai 
14*05be28feSTakashi Iwai #define HDA_BEEP_MODE_OFF	0
15*05be28feSTakashi Iwai #define HDA_BEEP_MODE_ON	1
16*05be28feSTakashi Iwai 
17*05be28feSTakashi Iwai /* beep information */
18*05be28feSTakashi Iwai struct hda_beep {
19*05be28feSTakashi Iwai 	struct input_dev *dev;
20*05be28feSTakashi Iwai 	struct hda_codec *codec;
21*05be28feSTakashi Iwai 	char phys[32];
22*05be28feSTakashi Iwai 	int tone;
23*05be28feSTakashi Iwai 	hda_nid_t nid;
24*05be28feSTakashi Iwai 	unsigned int registered:1;
25*05be28feSTakashi Iwai 	unsigned int enabled:1;
26*05be28feSTakashi Iwai 	unsigned int linear_tone:1;	/* linear tone for IDT/STAC codec */
27*05be28feSTakashi Iwai 	unsigned int playing:1;
28*05be28feSTakashi Iwai 	unsigned int keep_power_at_enable:1;	/* set by driver */
29*05be28feSTakashi Iwai 	struct work_struct beep_work; /* scheduled task for beep event */
30*05be28feSTakashi Iwai 	void (*power_hook)(struct hda_beep *beep, bool on);
31*05be28feSTakashi Iwai };
32*05be28feSTakashi Iwai 
33*05be28feSTakashi Iwai #ifdef CONFIG_SND_HDA_INPUT_BEEP
34*05be28feSTakashi Iwai int snd_hda_enable_beep_device(struct hda_codec *codec, int enable);
35*05be28feSTakashi Iwai int snd_hda_attach_beep_device(struct hda_codec *codec, int nid);
36*05be28feSTakashi Iwai void snd_hda_detach_beep_device(struct hda_codec *codec);
37*05be28feSTakashi Iwai #else
snd_hda_attach_beep_device(struct hda_codec * codec,int nid)38*05be28feSTakashi Iwai static inline int snd_hda_attach_beep_device(struct hda_codec *codec, int nid)
39*05be28feSTakashi Iwai {
40*05be28feSTakashi Iwai 	return 0;
41*05be28feSTakashi Iwai }
snd_hda_detach_beep_device(struct hda_codec * codec)42*05be28feSTakashi Iwai static inline void snd_hda_detach_beep_device(struct hda_codec *codec)
43*05be28feSTakashi Iwai {
44*05be28feSTakashi Iwai }
45*05be28feSTakashi Iwai #endif
46*05be28feSTakashi Iwai #endif
47