]> Zhao Yanbai Git Server - minix.git/commitdiff
TTY: "nobeep" setting to disable beeps R3.2.1 v3.2.1
authorDavid van Moolenbroek <david@minix3.org>
Sun, 10 Feb 2013 00:17:47 +0000 (01:17 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Fri, 15 Feb 2013 10:06:34 +0000 (11:06 +0100)
Disable the speaker by passing in "nobeep=1" as a boot option.
The option is preserved when updating the boot configuration.
Currently i386 only.

commands/update_bootcfg/update_bootcfg.sh
drivers/tty/arch/i386/console.c

index 33abf6d30517d8191ab88bd46d14d9a7c80dcb88..c5c3529395cf51e404d7db38c3d6eaca56a2be31 100755 (executable)
@@ -6,7 +6,7 @@ DEFAULTCFG=/etc/boot.cfg.default
 LOCALCFG=/etc/boot.cfg.local
 TMP=/boot.cfg.temp
 DIRSBASE=/boot/minix
-INHERIT="ahci acpi no_apic"
+INHERIT="ahci acpi no_apic nobeep"
 
 filter_entries()
 {
index cd383c46ffd8cd6beeb331c7d649736bef49fc82..b18b853f4f113a2c14f246460713d9d063273e7b 100644 (file)
@@ -49,6 +49,7 @@ static int vid_port;          /* I/O port for accessing 6845 */
 static int wrap;               /* hardware can wrap? */
 static int softscroll;         /* 1 = software scrolling, 0 = hardware */
 static int beeping;            /* speaker is beeping? */
+static long disable_beep = -1; /* do not use speaker if set to 1 */
 static unsigned font_lines;    /* font lines per character */
 static unsigned scr_width;     /* # characters on a line */
 static unsigned scr_lines;     /* # lines on the screen */
@@ -761,6 +762,24 @@ unsigned *val;                     /* 16-bit value to set it to */
 }
 #endif
 
+/*===========================================================================*
+ *                             beep_disabled                                *
+ *===========================================================================*/
+static long beep_disabled(void)
+{
+/* Return whether the user requested that beeps not be performed.
+ */
+
+  /* Perform first-time initialization if necessary. */
+  if (disable_beep < 0) {
+       disable_beep = 0;       /* the default is on */
+
+       (void) env_parse("nobeep", "d", 0, &disable_beep, 0, 1);
+  }
+
+  return disable_beep;
+}
+
 /*===========================================================================*
  *                             beep                                         *
  *===========================================================================*/
@@ -774,6 +793,8 @@ static void beep()
   pvb_pair_t char_out[3];
   u32_t port_b_val;
   
+  if (beep_disabled()) return;
+
   /* Set timer in advance to prevent beeping delay. */
   set_timer(&tmr_stop_beep, B_TIME, stop_beep, 0);
 
@@ -880,6 +901,8 @@ clock_t dur;
   static timer_t tmr_stop_beep;
   pvb_pair_t char_out[3];
   u32_t port_b_val;
+
+  if (beep_disabled()) return;
   
   unsigned long ival= TIMER_FREQ / freq;
   if (ival == 0 || ival > 0xffff)