TTY: "nobeep" setting to disable beeps

Disable the speaker by passing in "nobeep=1" as a boot option.
The option is preserved when updating the boot configuration.
Currently i386 only.
This commit is contained in:
David van Moolenbroek 2013-02-10 01:17:47 +01:00
parent 09b729b328
commit 972156d595
2 changed files with 24 additions and 1 deletions

View file

@ -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()
{

View 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)