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