aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/uart
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2006-10-04 06:09:11 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2006-10-04 06:09:11 +0000
commit7fdeb89389886d8be16f14cd4a437452e5a7f422 (patch)
treebac1642da7f4d4369fd40b990879891bd85c03ff /sys/dev/uart
parent4b9d5a3405200c47615baf9a8ec8315355a127cb (diff)
Notes
Diffstat (limited to 'sys/dev/uart')
-rw-r--r--sys/dev/uart/uart_kbd_sun.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/sys/dev/uart/uart_kbd_sun.c b/sys/dev/uart/uart_kbd_sun.c
index f5cd40a9b0e5..4cdc61e07d89 100644
--- a/sys/dev/uart/uart_kbd_sun.c
+++ b/sys/dev/uart/uart_kbd_sun.c
@@ -425,6 +425,7 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data)
{
struct sunkbd_softc *sc;
int error;
+ int ival;
sc = (struct sunkbd_softc *)kbd;
error = 0;
@@ -432,6 +433,10 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data)
case KDGKBMODE:
*(int *)data = sc->sc_mode;
break;
+ case _IO('K', 7):
+ ival = IOCPARM_IVAL(data);
+ data = (caddr_t)&ival;
+ /* FALLTHROUGH */
case KDSKBMODE:
switch (*(int *)data) {
case K_XLATE:
@@ -456,6 +461,10 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data)
case KDGETLED:
*(int *)data = KBD_LED_VAL(kbd);
break;
+ case _IO('K', 66):
+ ival = IOCPARM_IVAL(data);
+ data = (caddr_t)&ival;
+ /* FALLTHROUGH */
case KDSETLED:
if (*(int *)data & ~LOCK_MASK) {
error = EINVAL;
@@ -478,6 +487,10 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data)
case KDGKBSTATE:
*(int *)data = sc->sc_state & LOCK_MASK;
break;
+ case _IO('K', 20):
+ ival = IOCPARM_IVAL(data);
+ data = (caddr_t)&ival;
+ /* FALLTHROUGH */
case KDSKBSTATE:
if (*(int *)data & ~LOCK_MASK) {
error = EINVAL;
@@ -485,7 +498,8 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data)
}
sc->sc_state &= ~LOCK_MASK;
sc->sc_state |= *(int *)data;
- break;
+ /* set LEDs and quit */
+ return (sunkbd_ioctl(kbd, KDSETLED, data));
case KDSETREPEAT:
case KDSETRAD:
break;