Deleted Added
full compact
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 ---