uart_kbd_sun.c (162424) | uart_kbd_sun.c (162711) |
---|---|
1/*- 2 * Copyright (c) 2003 Jake Burkholder. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2003 Jake Burkholder. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/dev/uart/uart_kbd_sun.c 162424 2006-09-18 22:56:59Z emax $"); | 28__FBSDID("$FreeBSD: head/sys/dev/uart/uart_kbd_sun.c 162711 2006-09-27 19:57:02Z ru $"); |
29 | 29 |
30#include "opt_compat.h" |
|
30#include "opt_kbd.h" 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/bus.h> 35#include <sys/interrupt.h> 36#include <sys/kbio.h> 37#include <sys/kernel.h> --- 382 unchanged lines hidden (view full) --- 420 return (0); 421} 422 423static int 424sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) 425{ 426 struct sunkbd_softc *sc; 427 int error; | 31#include "opt_kbd.h" 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/bus.h> 36#include <sys/interrupt.h> 37#include <sys/kbio.h> 38#include <sys/kernel.h> --- 382 unchanged lines hidden (view full) --- 421 return (0); 422} 423 424static int 425sunkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) 426{ 427 struct sunkbd_softc *sc; 428 int error; |
429#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) 430 int ival; 431#endif |
|
428 429 sc = (struct sunkbd_softc *)kbd; 430 error = 0; 431 switch (cmd) { 432 case KDGKBMODE: 433 *(int *)data = sc->sc_mode; 434 break; | 432 433 sc = (struct sunkbd_softc *)kbd; 434 error = 0; 435 switch (cmd) { 436 case KDGKBMODE: 437 *(int *)data = sc->sc_mode; 438 break; |
439#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) 440 case _IO('K', 7): 441 ival = IOCPARM_IVAL(data); 442 data = (caddr_t)&ival; 443 /* FALLTHROUGH */ 444#endif |
|
435 case KDSKBMODE: 436 switch (*(int *)data) { 437 case K_XLATE: 438 if (sc->sc_mode != K_XLATE) { 439 /* make lock key state and LED state match */ 440 sc->sc_state &= ~LOCK_MASK; 441 sc->sc_state |= KBD_LED_VAL(kbd); 442 } --- 8 unchanged lines hidden (view full) --- 451 default: 452 error = EINVAL; 453 break; 454 } 455 break; 456 case KDGETLED: 457 *(int *)data = KBD_LED_VAL(kbd); 458 break; | 445 case KDSKBMODE: 446 switch (*(int *)data) { 447 case K_XLATE: 448 if (sc->sc_mode != K_XLATE) { 449 /* make lock key state and LED state match */ 450 sc->sc_state &= ~LOCK_MASK; 451 sc->sc_state |= KBD_LED_VAL(kbd); 452 } --- 8 unchanged lines hidden (view full) --- 461 default: 462 error = EINVAL; 463 break; 464 } 465 break; 466 case KDGETLED: 467 *(int *)data = KBD_LED_VAL(kbd); 468 break; |
469#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) 470 case _IO('K', 66): 471 ival = IOCPARM_IVAL(data); 472 data = (caddr_t)&ival; 473 /* FALLTHROUGH */ 474#endif |
|
459 case KDSETLED: 460 if (*(int *)data & ~LOCK_MASK) { 461 error = EINVAL; 462 break; 463 } 464 if (sc->sc_uart == NULL) 465 break; 466 sc->sc_uart->sc_txdatasz = 2; --- 6 unchanged lines hidden (view full) --- 473 if (*(int *)data & SLKED) 474 sc->sc_uart->sc_txbuf[1] |= SKBD_LED_SCROLLLOCK; 475 UART_TRANSMIT(sc->sc_uart); 476 KBD_LED_VAL(kbd) = *(int *)data; 477 break; 478 case KDGKBSTATE: 479 *(int *)data = sc->sc_state & LOCK_MASK; 480 break; | 475 case KDSETLED: 476 if (*(int *)data & ~LOCK_MASK) { 477 error = EINVAL; 478 break; 479 } 480 if (sc->sc_uart == NULL) 481 break; 482 sc->sc_uart->sc_txdatasz = 2; --- 6 unchanged lines hidden (view full) --- 489 if (*(int *)data & SLKED) 490 sc->sc_uart->sc_txbuf[1] |= SKBD_LED_SCROLLLOCK; 491 UART_TRANSMIT(sc->sc_uart); 492 KBD_LED_VAL(kbd) = *(int *)data; 493 break; 494 case KDGKBSTATE: 495 *(int *)data = sc->sc_state & LOCK_MASK; 496 break; |
497#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) 498 case _IO('K', 20): 499 ival = IOCPARM_IVAL(data); 500 data = (caddr_t)&ival; 501 /* FALLTHROUGH */ 502#endif |
|
481 case KDSKBSTATE: 482 if (*(int *)data & ~LOCK_MASK) { 483 error = EINVAL; 484 break; 485 } 486 sc->sc_state &= ~LOCK_MASK; 487 sc->sc_state |= *(int *)data; | 503 case KDSKBSTATE: 504 if (*(int *)data & ~LOCK_MASK) { 505 error = EINVAL; 506 break; 507 } 508 sc->sc_state &= ~LOCK_MASK; 509 sc->sc_state |= *(int *)data; |
488 break; | 510 /* set LEDs and quit */ 511 return (sunkbd_ioctl(kbd, KDSETLED, data)); |
489 case KDSETREPEAT: 490 case KDSETRAD: 491 break; 492 case PIO_KEYMAP: 493 case PIO_KEYMAPENT: 494 case PIO_DEADKEYMAP: 495 default: 496 return (genkbd_commonioctl(kbd, cmd, data)); --- 63 unchanged lines hidden --- | 512 case KDSETREPEAT: 513 case KDSETRAD: 514 break; 515 case PIO_KEYMAP: 516 case PIO_KEYMAPENT: 517 case PIO_DEADKEYMAP: 518 default: 519 return (genkbd_commonioctl(kbd, cmd, data)); --- 63 unchanged lines hidden --- |