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 Iwaistatic 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 Iwaistatic 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