diff options
| author | Ruslan Ermilov <ru@FreeBSD.org> | 2006-10-04 06:09:11 +0000 |
|---|---|---|
| committer | Ruslan Ermilov <ru@FreeBSD.org> | 2006-10-04 06:09:11 +0000 |
| commit | 7fdeb89389886d8be16f14cd4a437452e5a7f422 (patch) | |
| tree | bac1642da7f4d4369fd40b990879891bd85c03ff /sys/dev/uart | |
| parent | 4b9d5a3405200c47615baf9a8ec8315355a127cb (diff) | |
Notes
Diffstat (limited to 'sys/dev/uart')
| -rw-r--r-- | sys/dev/uart/uart_kbd_sun.c | 16 |
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; |
