summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-05-31 19:35:41 +0000
committered <ed@FreeBSD.org>2009-05-31 19:35:41 +0000
commitd5a70a77bc470854a180ef21bcca7705d0c31e01 (patch)
tree530bd0dac9786416dad1937bdf5bf4d407e19fe2 /sys/dev/syscons
parent3d7ca7e19288365264e31954d12a37bf69f20723 (diff)
downloadFreeBSD-src-d5a70a77bc470854a180ef21bcca7705d0c31e01.zip
FreeBSD-src-d5a70a77bc470854a180ef21bcca7705d0c31e01.tar.gz
Restore support for bell pitch/duration.
Because we only support a single argument to tf_param, use 16 bits for the pitch and 16 bits for the duration. While there, make the argument unsigned. There isn't a single param call that needs a signed integer. Submitted by: danfe (modified)
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/scterm-teken.c6
-rw-r--r--sys/dev/syscons/teken/sequences1
-rw-r--r--sys/dev/syscons/teken/teken.c2
-rw-r--r--sys/dev/syscons/teken/teken.h5
-rw-r--r--sys/dev/syscons/teken/teken_subr_compat.h9
5 files changed, 20 insertions, 3 deletions
diff --git a/sys/dev/syscons/scterm-teken.c b/sys/dev/syscons/scterm-teken.c
index 491f82a..3ec6b44 100644
--- a/sys/dev/syscons/scterm-teken.c
+++ b/sys/dev/syscons/scterm-teken.c
@@ -491,7 +491,7 @@ scteken_copy(void *arg, const teken_rect_t *r, const teken_pos_t *p)
}
static void
-scteken_param(void *arg, int cmd, int value)
+scteken_param(void *arg, int cmd, unsigned int value)
{
scr_stat *scp = arg;
@@ -508,6 +508,10 @@ scteken_param(void *arg, int cmd, int value)
case TP_SWITCHVT:
sc_switch_scr(scp->sc, value);
break;
+ case TP_SETBELLPD:
+ scp->bell_pitch = TP_SETBELLPD_PITCH(value);
+ scp->bell_duration = TP_SETBELLPD_DURATION(value);
+ break;
}
}
diff --git a/sys/dev/syscons/teken/sequences b/sys/dev/syscons/teken/sequences
index 59d3245..8f7bfb4 100644
--- a/sys/dev/syscons/teken/sequences
+++ b/sys/dev/syscons/teken/sequences
@@ -102,6 +102,7 @@ VPA Vertical Position Absolute ^[ [ d n
# Cons25 compatibility sequences
C25ADBG Cons25 set adapter background ^[ [ = G r
C25ADFG Cons25 set adapter foreground ^[ [ = F r
+C25BLPD Cons25 set bell pitch duration ^[ [ = B r r
C25CURS Cons25 set cursor type ^[ [ = S r
C25VTSW Cons25 switch virtual terminal ^[ [ z r
diff --git a/sys/dev/syscons/teken/teken.c b/sys/dev/syscons/teken/teken.c
index 30845c4..9cfa16c 100644
--- a/sys/dev/syscons/teken/teken.c
+++ b/sys/dev/syscons/teken/teken.c
@@ -167,7 +167,7 @@ teken_funcs_copy(teken_t *t, const teken_rect_t *r, const teken_pos_t *p)
}
static inline void
-teken_funcs_param(teken_t *t, int cmd, int value)
+teken_funcs_param(teken_t *t, int cmd, unsigned int value)
{
t->t_funcs->tf_param(t->t_softc, cmd, value);
diff --git a/sys/dev/syscons/teken/teken.h b/sys/dev/syscons/teken/teken.h
index 620dfd5..dd19e76 100644
--- a/sys/dev/syscons/teken/teken.h
+++ b/sys/dev/syscons/teken/teken.h
@@ -98,13 +98,16 @@ typedef void tf_putchar_t(void *, const teken_pos_t *, teken_char_t,
typedef void tf_fill_t(void *, const teken_rect_t *, teken_char_t,
const teken_attr_t *);
typedef void tf_copy_t(void *, const teken_rect_t *, const teken_pos_t *);
-typedef void tf_param_t(void *, int, int);
+typedef void tf_param_t(void *, int, unsigned int);
#define TP_SHOWCURSOR 0
#define TP_CURSORKEYS 1
#define TP_KEYPADAPP 2
#define TP_AUTOREPEAT 3
#define TP_SWITCHVT 4
#define TP_132COLS 5
+#define TP_SETBELLPD 6
+#define TP_SETBELLPD_PITCH(pd) ((pd) >> 16)
+#define TP_SETBELLPD_DURATION(pd) ((pd) & 0xffff)
typedef void tf_respond_t(void *, const void *, size_t);
typedef struct {
diff --git a/sys/dev/syscons/teken/teken_subr_compat.h b/sys/dev/syscons/teken/teken_subr_compat.h
index e49c1cd..4e03c66 100644
--- a/sys/dev/syscons/teken/teken_subr_compat.h
+++ b/sys/dev/syscons/teken/teken_subr_compat.h
@@ -66,6 +66,15 @@ teken_subr_cons25_switch_virtual_terminal(teken_t *t, unsigned int vt)
teken_funcs_param(t, TP_SWITCHVT, vt);
}
+static void
+teken_subr_cons25_set_bell_pitch_duration(teken_t *t, unsigned int pitch,
+ unsigned int duration)
+{
+
+ teken_funcs_param(t, TP_SETBELLPD, (pitch << 16) |
+ (duration & 0xffff));
+}
+
#if 0
static void
teken_subr_vt52_decid(teken_t *t)
OpenPOWER on IntegriCloud