Deleted Added
full compact
kbdmux.c (162461) kbdmux.c (162711)
1/*
2 * kbdmux.c
3 */
4
5/*-
6 * Copyright (c) 2005 Maksim Yevmenkin <m_evmenkin@yahoo.com>
7 * All rights reserved.
8 *

--- 14 unchanged lines hidden (view full) ---

23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * $Id: kbdmux.c,v 1.4 2005/07/14 17:38:35 max Exp $
1/*
2 * kbdmux.c
3 */
4
5/*-
6 * Copyright (c) 2005 Maksim Yevmenkin <m_evmenkin@yahoo.com>
7 * All rights reserved.
8 *

--- 14 unchanged lines hidden (view full) ---

23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * $Id: kbdmux.c,v 1.4 2005/07/14 17:38:35 max Exp $
31 * $FreeBSD: head/sys/dev/kbdmux/kbdmux.c 162461 2006-09-20 11:43:36Z ru $
31 * $FreeBSD: head/sys/dev/kbdmux/kbdmux.c 162711 2006-09-27 19:57:02Z ru $
32 */
33
32 */
33
34#include "opt_compat.h"
34#include "opt_kbd.h"
35
36#include <sys/param.h>
37#include <sys/bus.h>
38#include <sys/conf.h>
39#include <sys/consio.h>
40#include <sys/fcntl.h>
41#include <sys/kbio.h>

--- 893 unchanged lines hidden (view full) ---

935 136, 152, 168, 184, 200, 220, 236, 252,
936 272, 304, 336, 368, 400, 440, 472, 504
937 };
938
939 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
940 kbdmux_kbd_t *k;
941 keyboard_info_t *ki;
942 int error = 0, mode;
35#include "opt_kbd.h"
36
37#include <sys/param.h>
38#include <sys/bus.h>
39#include <sys/conf.h>
40#include <sys/consio.h>
41#include <sys/fcntl.h>
42#include <sys/kbio.h>

--- 893 unchanged lines hidden (view full) ---

936 136, 152, 168, 184, 200, 220, 236, 252,
937 272, 304, 336, 368, 400, 440, 472, 504
938 };
939
940 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
941 kbdmux_kbd_t *k;
942 keyboard_info_t *ki;
943 int error = 0, mode;
944#ifdef COMPAT_FREEBSD6
945 int ival;
946#endif
943
944 if (state == NULL)
945 return (ENXIO);
946
947 switch (cmd) {
948 case KBADDKBD: /* add keyboard to the mux */
949 ki = (keyboard_info_t *) arg;
950

--- 92 unchanged lines hidden (view full) ---

1043 break;
1044
1045 case KDGKBMODE: /* get kyboard mode */
1046 KBDMUX_LOCK(state);
1047 *(int *)arg = state->ks_mode;
1048 KBDMUX_UNLOCK(state);
1049 break;
1050
947
948 if (state == NULL)
949 return (ENXIO);
950
951 switch (cmd) {
952 case KBADDKBD: /* add keyboard to the mux */
953 ki = (keyboard_info_t *) arg;
954

--- 92 unchanged lines hidden (view full) ---

1047 break;
1048
1049 case KDGKBMODE: /* get kyboard mode */
1050 KBDMUX_LOCK(state);
1051 *(int *)arg = state->ks_mode;
1052 KBDMUX_UNLOCK(state);
1053 break;
1054
1055#ifdef COMPAT_FREEBSD6
1056 case _IO('K', 7):
1057 ival = IOCPARM_IVAL(arg);
1058 arg = (caddr_t)&ival;
1059 /* FALLTHROUGH */
1060#endif
1051 case KDSKBMODE: /* set keyboard mode */
1052 KBDMUX_LOCK(state);
1053
1054 switch (*(int *)arg) {
1055 case K_XLATE:
1056 if (state->ks_mode != K_XLATE) {
1057 /* make lock key state and LED state match */
1058 state->ks_state &= ~LOCK_MASK;

--- 18 unchanged lines hidden (view full) ---

1077 break;
1078
1079 case KDGETLED: /* get keyboard LED */
1080 KBDMUX_LOCK(state);
1081 *(int *)arg = KBD_LED_VAL(kbd);
1082 KBDMUX_UNLOCK(state);
1083 break;
1084
1061 case KDSKBMODE: /* set keyboard mode */
1062 KBDMUX_LOCK(state);
1063
1064 switch (*(int *)arg) {
1065 case K_XLATE:
1066 if (state->ks_mode != K_XLATE) {
1067 /* make lock key state and LED state match */
1068 state->ks_state &= ~LOCK_MASK;

--- 18 unchanged lines hidden (view full) ---

1087 break;
1088
1089 case KDGETLED: /* get keyboard LED */
1090 KBDMUX_LOCK(state);
1091 *(int *)arg = KBD_LED_VAL(kbd);
1092 KBDMUX_UNLOCK(state);
1093 break;
1094
1095#ifdef COMPAT_FREEBSD6
1096 case _IO('K', 66):
1097 ival = IOCPARM_IVAL(arg);
1098 arg = (caddr_t)&ival;
1099 /* FALLTHROUGH */
1100#endif
1085 case KDSETLED: /* set keyboard LED */
1086 KBDMUX_LOCK(state);
1087
1088 /* NOTE: lock key state in ks_state won't be changed */
1089 if (*(int *)arg & ~LOCK_MASK) {
1090 KBDMUX_UNLOCK(state);
1091
1092 return (EINVAL);

--- 9 unchanged lines hidden (view full) ---

1102 break;
1103
1104 case KDGKBSTATE: /* get lock key state */
1105 KBDMUX_LOCK(state);
1106 *(int *)arg = state->ks_state & LOCK_MASK;
1107 KBDMUX_UNLOCK(state);
1108 break;
1109
1101 case KDSETLED: /* set keyboard LED */
1102 KBDMUX_LOCK(state);
1103
1104 /* NOTE: lock key state in ks_state won't be changed */
1105 if (*(int *)arg & ~LOCK_MASK) {
1106 KBDMUX_UNLOCK(state);
1107
1108 return (EINVAL);

--- 9 unchanged lines hidden (view full) ---

1118 break;
1119
1120 case KDGKBSTATE: /* get lock key state */
1121 KBDMUX_LOCK(state);
1122 *(int *)arg = state->ks_state & LOCK_MASK;
1123 KBDMUX_UNLOCK(state);
1124 break;
1125
1126#ifdef COMPAT_FREEBSD6
1127 case _IO('K', 20):
1128 ival = IOCPARM_IVAL(arg);
1129 arg = (caddr_t)&ival;
1130 /* FALLTHROUGH */
1131#endif
1110 case KDSKBSTATE: /* set lock key state */
1111 KBDMUX_LOCK(state);
1112
1113 if (*(int *)arg & ~LOCK_MASK) {
1114 KBDMUX_UNLOCK(state);
1115
1116 return (EINVAL);
1117 }

--- 5 unchanged lines hidden (view full) ---

1123 SLIST_FOREACH(k, &state->ks_kbds, next)
1124 KBDMUX_IOCTL(k->kbd, KDSKBSTATE, arg);
1125
1126 KBDMUX_UNLOCK(state);
1127
1128 return (kbdmux_ioctl(kbd, KDSETLED, arg));
1129 /* NOT REACHED */
1130
1132 case KDSKBSTATE: /* set lock key state */
1133 KBDMUX_LOCK(state);
1134
1135 if (*(int *)arg & ~LOCK_MASK) {
1136 KBDMUX_UNLOCK(state);
1137
1138 return (EINVAL);
1139 }

--- 5 unchanged lines hidden (view full) ---

1145 SLIST_FOREACH(k, &state->ks_kbds, next)
1146 KBDMUX_IOCTL(k->kbd, KDSKBSTATE, arg);
1147
1148 KBDMUX_UNLOCK(state);
1149
1150 return (kbdmux_ioctl(kbd, KDSETLED, arg));
1151 /* NOT REACHED */
1152
1153#ifdef COMPAT_FREEBSD6
1154 case _IO('K', 67):
1155 cmd = KDSETRAD;
1156 ival = IOCPARM_IVAL(arg);
1157 arg = (caddr_t)&ival;
1158 /* FALLTHROUGH */
1159#endif
1131 case KDSETREPEAT: /* set keyboard repeat rate (new interface) */
1132 case KDSETRAD: /* set keyboard repeat rate (old interface) */
1133 KBDMUX_LOCK(state);
1134
1135 if (cmd == KDSETREPEAT) {
1136 int i;
1137
1138 /* lookup delay */

--- 221 unchanged lines hidden ---
1160 case KDSETREPEAT: /* set keyboard repeat rate (new interface) */
1161 case KDSETRAD: /* set keyboard repeat rate (old interface) */
1162 KBDMUX_LOCK(state);
1163
1164 if (cmd == KDSETREPEAT) {
1165 int i;
1166
1167 /* lookup delay */

--- 221 unchanged lines hidden ---