atkbd.c (158687) | atkbd.c (162711) |
---|---|
1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 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 --- 12 unchanged lines hidden (view full) --- 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * 26 */ 27 28#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 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 --- 12 unchanged lines hidden (view full) --- 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * 26 */ 27 28#include <sys/cdefs.h> |
29__FBSDID("$FreeBSD: head/sys/dev/atkbdc/atkbd.c 158687 2006-05-17 09:33:15Z phk $"); | 29__FBSDID("$FreeBSD: head/sys/dev/atkbdc/atkbd.c 162711 2006-09-27 19:57:02Z ru $"); |
30 | 30 |
31#include "opt_compat.h" |
|
31#include "opt_kbd.h" 32#include "opt_atkbd.h" 33 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/kernel.h> 37#include <sys/bus.h> 38#include <sys/eventhandler.h> --- 807 unchanged lines hidden (view full) --- 846 /* translate LED_XXX bits into the device specific bits */ 847 static u_char ledmap[8] = { 848 0, 4, 2, 6, 1, 5, 3, 7, 849 }; 850 atkbd_state_t *state = kbd->kb_data; 851 int error; 852 int s; 853 int i; | 32#include "opt_kbd.h" 33#include "opt_atkbd.h" 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/kernel.h> 38#include <sys/bus.h> 39#include <sys/eventhandler.h> --- 807 unchanged lines hidden (view full) --- 847 /* translate LED_XXX bits into the device specific bits */ 848 static u_char ledmap[8] = { 849 0, 4, 2, 6, 1, 5, 3, 7, 850 }; 851 atkbd_state_t *state = kbd->kb_data; 852 int error; 853 int s; 854 int i; |
855#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ 856 defined(COMPAT_FREEBSD4) || defined(COMPAT_43) 857 int ival; 858#endif |
|
854 855 s = spltty(); 856 switch (cmd) { 857 858 case KDGKBMODE: /* get keyboard mode */ 859 *(int *)arg = state->ks_mode; 860 break; | 859 860 s = spltty(); 861 switch (cmd) { 862 863 case KDGKBMODE: /* get keyboard mode */ 864 *(int *)arg = state->ks_mode; 865 break; |
866#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ 867 defined(COMPAT_FREEBSD4) || defined(COMPAT_43) 868 case _IO('K', 7): 869 ival = IOCPARM_IVAL(arg); 870 arg = (caddr_t)&ival; 871 /* FALLTHROUGH */ 872#endif |
|
861 case KDSKBMODE: /* set keyboard mode */ 862 switch (*(int *)arg) { 863 case K_XLATE: 864 if (state->ks_mode != K_XLATE) { 865 /* make lock key state and LED state match */ 866 state->ks_state &= ~LOCK_MASK; 867 state->ks_state |= KBD_LED_VAL(kbd); 868 } --- 9 unchanged lines hidden (view full) --- 878 splx(s); 879 return EINVAL; 880 } 881 break; 882 883 case KDGETLED: /* get keyboard LED */ 884 *(int *)arg = KBD_LED_VAL(kbd); 885 break; | 873 case KDSKBMODE: /* set keyboard mode */ 874 switch (*(int *)arg) { 875 case K_XLATE: 876 if (state->ks_mode != K_XLATE) { 877 /* make lock key state and LED state match */ 878 state->ks_state &= ~LOCK_MASK; 879 state->ks_state |= KBD_LED_VAL(kbd); 880 } --- 9 unchanged lines hidden (view full) --- 890 splx(s); 891 return EINVAL; 892 } 893 break; 894 895 case KDGETLED: /* get keyboard LED */ 896 *(int *)arg = KBD_LED_VAL(kbd); 897 break; |
898#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ 899 defined(COMPAT_FREEBSD4) || defined(COMPAT_43) 900 case _IO('K', 66): 901 ival = IOCPARM_IVAL(arg); 902 arg = (caddr_t)&ival; 903 /* FALLTHROUGH */ 904#endif |
|
886 case KDSETLED: /* set keyboard LED */ 887 /* NOTE: lock key state in ks_state won't be changed */ 888 if (*(int *)arg & ~LOCK_MASK) { 889 splx(s); 890 return EINVAL; 891 } 892 i = *(int *)arg; 893 /* replace CAPS LED with ALTGR LED for ALTGR keyboards */ --- 13 unchanged lines hidden (view full) --- 907 } 908 } 909 KBD_LED_VAL(kbd) = *(int *)arg; 910 break; 911 912 case KDGKBSTATE: /* get lock key state */ 913 *(int *)arg = state->ks_state & LOCK_MASK; 914 break; | 905 case KDSETLED: /* set keyboard LED */ 906 /* NOTE: lock key state in ks_state won't be changed */ 907 if (*(int *)arg & ~LOCK_MASK) { 908 splx(s); 909 return EINVAL; 910 } 911 i = *(int *)arg; 912 /* replace CAPS LED with ALTGR LED for ALTGR keyboards */ --- 13 unchanged lines hidden (view full) --- 926 } 927 } 928 KBD_LED_VAL(kbd) = *(int *)arg; 929 break; 930 931 case KDGKBSTATE: /* get lock key state */ 932 *(int *)arg = state->ks_state & LOCK_MASK; 933 break; |
934#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ 935 defined(COMPAT_FREEBSD4) || defined(COMPAT_43) 936 case _IO('K', 20): 937 ival = IOCPARM_IVAL(arg); 938 arg = (caddr_t)&ival; 939 /* FALLTHROUGH */ 940#endif |
|
915 case KDSKBSTATE: /* set lock key state */ 916 if (*(int *)arg & ~LOCK_MASK) { 917 splx(s); 918 return EINVAL; 919 } 920 state->ks_state &= ~LOCK_MASK; 921 state->ks_state |= *(int *)arg; 922 splx(s); --- 7 unchanged lines hidden (view full) --- 930 i = typematic(((int *)arg)[0], ((int *)arg)[1]); 931 error = write_kbd(state->kbdc, KBDC_SET_TYPEMATIC, i); 932 if (error == 0) { 933 kbd->kb_delay1 = typematic_delay(i); 934 kbd->kb_delay2 = typematic_rate(i); 935 } 936 return error; 937 | 941 case KDSKBSTATE: /* set lock key state */ 942 if (*(int *)arg & ~LOCK_MASK) { 943 splx(s); 944 return EINVAL; 945 } 946 state->ks_state &= ~LOCK_MASK; 947 state->ks_state |= *(int *)arg; 948 splx(s); --- 7 unchanged lines hidden (view full) --- 956 i = typematic(((int *)arg)[0], ((int *)arg)[1]); 957 error = write_kbd(state->kbdc, KBDC_SET_TYPEMATIC, i); 958 if (error == 0) { 959 kbd->kb_delay1 = typematic_delay(i); 960 kbd->kb_delay2 = typematic_rate(i); 961 } 962 return error; 963 |
964#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ 965 defined(COMPAT_FREEBSD4) || defined(COMPAT_43) 966 case _IO('K', 67): 967 ival = IOCPARM_IVAL(arg); 968 arg = (caddr_t)&ival; 969 /* FALLTHROUGH */ 970#endif |
|
938 case KDSETRAD: /* set keyboard repeat rate (old interface) */ 939 splx(s); 940 if (!KBD_HAS_DEVICE(kbd)) 941 return 0; 942 error = write_kbd(state->kbdc, KBDC_SET_TYPEMATIC, *(int *)arg); 943 if (error == 0) { 944 kbd->kb_delay1 = typematic_delay(*(int *)arg); 945 kbd->kb_delay2 = typematic_rate(*(int *)arg); --- 523 unchanged lines hidden --- | 971 case KDSETRAD: /* set keyboard repeat rate (old interface) */ 972 splx(s); 973 if (!KBD_HAS_DEVICE(kbd)) 974 return 0; 975 error = write_kbd(state->kbdc, KBDC_SET_TYPEMATIC, *(int *)arg); 976 if (error == 0) { 977 kbd->kb_delay1 = typematic_delay(*(int *)arg); 978 kbd->kb_delay2 = typematic_rate(*(int *)arg); --- 523 unchanged lines hidden --- |