1 /*-
2 * pccard noise interface.
3 * Nate Williams, October 1997.
4 * This file is in the public domain.
5 */
6
7 #include <sys/param.h>
8 #include <sys/kernel.h>
9 #include <sys/systm.h>
10
11 #include <machine/clock.h>
12
13 #include <pccard/driver.h>
14
15 #define PCCARD_BEEP_PITCH0 1600
16 #define PCCARD_BEEP_DURATION0 20
17 #define PCCARD_BEEP_PITCH1 1200
18 #define PCCARD_BEEP_DURATION1 40
19 #define PCCARD_BEEP_PITCH2 3200
20 #define PCCARD_BEEP_DURATION2 40
21
22 static struct callout_handle beeptimeout_ch
23 = CALLOUT_HANDLE_INITIALIZER(&beeptimeout_ch);
24
25 static enum beepstate allow_beep = BEEP_OFF;
26
27 /*
28 * timeout function to keep lots of noise from
29 * happening with insertion/removals.
30 */
31 static void enable_beep(void *dummy)
32 {
33 /* Should never be needed */
34 untimeout(enable_beep, (void *)NULL, beeptimeout_ch);
35
36 allow_beep = 1;
37 }
38
39 void pccard_insert_beep(void)
40 {
41 if (allow_beep == BEEP_ON) {
42 sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
43 allow_beep = 0;
44 beeptimeout_ch = timeout(enable_beep, (void *)NULL, hz / 5);
45 }
46 }
47
48 void pccard_remove_beep(void)
49 {
50 if (allow_beep == BEEP_ON) {
51 sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
52 allow_beep = 0;
53 beeptimeout_ch = timeout(enable_beep, (void *)NULL, hz / 5);
54 }
55 }
56
57 void pccard_success_beep(void)
58 {
59 sysbeep(PCCARD_BEEP_PITCH1, PCCARD_BEEP_DURATION1);
60 }
61
62 void pccard_failure_beep(void)
63 {
64 sysbeep(PCCARD_BEEP_PITCH2, PCCARD_BEEP_DURATION2);
65 }
66
67 int pccard_beep_select(enum beepstate state)
68 {
69 if (state == BEEP_ON || state == BEEP_OFF) {
70 allow_beep = state;
71 return 0;
72 }
73 return 1;
74 }
Cache object: 1ff47fe050704d6026404e14b095f83d
|