Lines Matching defs:beep

24 static void generate_tone(struct hda_beep *beep, int tone)
26 struct hda_codec *codec = beep->codec;
28 if (tone && !beep->playing) {
30 if (beep->power_hook)
31 beep->power_hook(beep, true);
32 beep->playing = 1;
34 snd_hda_codec_write(codec, beep->nid, 0,
36 if (!tone && beep->playing) {
37 beep->playing = 0;
38 if (beep->power_hook)
39 beep->power_hook(beep, false);
46 struct hda_beep *beep =
49 if (beep->enabled)
50 generate_tone(beep, beep->tone);
53 /* (non-standard) Linear beep tone calculation for IDT/STAC codecs
55 * The tone frequency of beep generator on IDT/STAC codecs is
60 static int beep_linear_tone(struct hda_beep *beep, int hz)
68 hz = 0; /* turn off PC beep*/
78 /* HD-audio standard beep tone parameter calculation
84 static int beep_standard_tone(struct hda_beep *beep, int hz)
99 struct hda_beep *beep = input_get_drvdata(dev);
107 if (beep->linear_tone)
108 beep->tone = beep_linear_tone(beep, hz);
110 beep->tone = beep_standard_tone(beep, hz);
116 /* schedule beep event */
117 schedule_work(&beep->beep_work);
121 static void turn_on_beep(struct hda_beep *beep)
123 if (beep->keep_power_at_enable)
124 snd_hda_power_up_pm(beep->codec);
127 static void turn_off_beep(struct hda_beep *beep)
129 cancel_work_sync(&beep->beep_work);
130 if (beep->playing) {
131 /* turn off beep */
132 generate_tone(beep, 0);
134 if (beep->keep_power_at_enable)
135 snd_hda_power_down_pm(beep->codec);
139 * snd_hda_enable_beep_device - Turn on/off beep sound
145 struct hda_beep *beep = codec->beep;
146 if (!beep)
149 if (beep->enabled != enable) {
150 beep->enabled = enable;
152 turn_on_beep(beep);
154 turn_off_beep(beep);
163 struct hda_beep *beep = device->device_data;
166 err = input_register_device(beep->dev);
168 beep->registered = true;
174 struct hda_beep *beep = device->device_data;
176 if (beep->registered)
177 input_unregister_device(beep->dev);
179 input_free_device(beep->dev);
180 if (beep->enabled)
181 turn_off_beep(beep);
187 struct hda_beep *beep = device->device_data;
189 beep->codec->beep = NULL;
190 kfree(beep);
195 * snd_hda_attach_beep_device - Attach a beep input device
197 * @nid: beep NID
199 * Attach a beep object to the given widget. If beep hint is turned off
202 * Currently, only one beep device is allowed to each codec.
212 struct hda_beep *beep;
215 if (!snd_hda_get_bool_hint(codec, "beep"))
220 beep = kzalloc(sizeof(*beep), GFP_KERNEL);
221 if (beep == NULL)
223 snprintf(beep->phys, sizeof(beep->phys),
229 beep->nid = nid;
230 beep->codec = codec;
231 codec->beep = beep;
233 INIT_WORK(&beep->beep_work, &snd_hda_generate_beep);
241 /* setup digital beep device */
243 input_dev->phys = beep->phys;
254 input_set_drvdata(input_dev, beep);
256 beep->dev = input_dev;
258 err = snd_device_new(codec->card, SNDRV_DEV_JACK, beep, &ops);
265 input_free_device(beep->dev);
267 kfree(beep);
268 codec->beep = NULL;
274 * snd_hda_detach_beep_device - Detach the beep device
279 if (!codec->bus->shutdown && codec->beep)
280 snd_device_free(codec->card, codec->beep);
291 /* get/put callbacks for beep mute mixer switches */
294 * snd_hda_mixer_amp_switch_get_beep - Get callback for beep controls
302 struct hda_beep *beep = codec->beep;
305 if (beep && (!beep->enabled || !ctl_has_mute(kcontrol))) {
307 ucontrol->value.integer.value[0] = beep->enabled;
309 ucontrol->value.integer.value[1] = beep->enabled;
317 * snd_hda_mixer_amp_switch_put_beep - Put callback for beep controls
325 struct hda_beep *beep = codec->beep;
326 if (beep) {