| .. | .. |
|---|
| 757 | 757 | struct input_dev *input_dev; |
|---|
| 758 | 758 | int err; |
|---|
| 759 | 759 | int i; |
|---|
| 760 | + char *keyboard_type; |
|---|
| 760 | 761 | |
|---|
| 761 | 762 | if (adbhid[id]) { |
|---|
| 762 | 763 | pr_err("Trying to reregister ADB HID on ID %d\n", id); |
|---|
| .. | .. |
|---|
| 798 | 799 | |
|---|
| 799 | 800 | memcpy(hid->keycode, adb_to_linux_keycodes, sizeof(adb_to_linux_keycodes)); |
|---|
| 800 | 801 | |
|---|
| 801 | | - pr_info("Detected ADB keyboard, type "); |
|---|
| 802 | 802 | switch (original_handler_id) { |
|---|
| 803 | 803 | default: |
|---|
| 804 | | - pr_cont("<unknown>.\n"); |
|---|
| 804 | + keyboard_type = "<unknown>"; |
|---|
| 805 | 805 | input_dev->id.version = ADB_KEYBOARD_UNKNOWN; |
|---|
| 806 | 806 | break; |
|---|
| 807 | 807 | |
|---|
| 808 | 808 | case 0x01: case 0x02: case 0x03: case 0x06: case 0x08: |
|---|
| 809 | 809 | case 0x0C: case 0x10: case 0x18: case 0x1B: case 0x1C: |
|---|
| 810 | 810 | case 0xC0: case 0xC3: case 0xC6: |
|---|
| 811 | | - pr_cont("ANSI.\n"); |
|---|
| 811 | + keyboard_type = "ANSI"; |
|---|
| 812 | 812 | input_dev->id.version = ADB_KEYBOARD_ANSI; |
|---|
| 813 | 813 | break; |
|---|
| 814 | 814 | |
|---|
| 815 | 815 | case 0x04: case 0x05: case 0x07: case 0x09: case 0x0D: |
|---|
| 816 | 816 | case 0x11: case 0x14: case 0x19: case 0x1D: case 0xC1: |
|---|
| 817 | 817 | case 0xC4: case 0xC7: |
|---|
| 818 | | - pr_cont("ISO, swapping keys.\n"); |
|---|
| 818 | + keyboard_type = "ISO, swapping keys"; |
|---|
| 819 | 819 | input_dev->id.version = ADB_KEYBOARD_ISO; |
|---|
| 820 | 820 | i = hid->keycode[10]; |
|---|
| 821 | 821 | hid->keycode[10] = hid->keycode[50]; |
|---|
| .. | .. |
|---|
| 824 | 824 | |
|---|
| 825 | 825 | case 0x12: case 0x15: case 0x16: case 0x17: case 0x1A: |
|---|
| 826 | 826 | case 0x1E: case 0xC2: case 0xC5: case 0xC8: case 0xC9: |
|---|
| 827 | | - pr_cont("JIS.\n"); |
|---|
| 827 | + keyboard_type = "JIS"; |
|---|
| 828 | 828 | input_dev->id.version = ADB_KEYBOARD_JIS; |
|---|
| 829 | 829 | break; |
|---|
| 830 | 830 | } |
|---|
| 831 | + pr_info("Detected ADB keyboard, type %s.\n", keyboard_type); |
|---|
| 831 | 832 | |
|---|
| 832 | 833 | for (i = 0; i < 128; i++) |
|---|
| 833 | 834 | if (hid->keycode[i]) |
|---|
| .. | .. |
|---|
| 880 | 881 | } |
|---|
| 881 | 882 | if (hid->name[0]) |
|---|
| 882 | 883 | break; |
|---|
| 883 | | - /* else fall through */ |
|---|
| 884 | + fallthrough; |
|---|
| 884 | 885 | |
|---|
| 885 | 886 | default: |
|---|
| 886 | 887 | pr_info("Trying to register unknown ADB device to input layer.\n"); |
|---|
| .. | .. |
|---|
| 972 | 973 | ->get it to send separate codes for left and right shift, |
|---|
| 973 | 974 | control, option keys */ |
|---|
| 974 | 975 | #if 0 /* handler 5 doesn't send separate codes for R modifiers */ |
|---|
| 975 | | - if (adb_try_handler_change(id, 5)) |
|---|
| 976 | | - printk("ADB keyboard at %d, handler set to 5\n", id); |
|---|
| 977 | | - else |
|---|
| 976 | + if (!adb_try_handler_change(id, 5)) |
|---|
| 978 | 977 | #endif |
|---|
| 979 | | - if (adb_try_handler_change(id, 3)) |
|---|
| 980 | | - printk("ADB keyboard at %d, handler set to 3\n", id); |
|---|
| 981 | | - else |
|---|
| 982 | | - printk("ADB keyboard at %d, handler 1\n", id); |
|---|
| 978 | + adb_try_handler_change(id, 3); |
|---|
| 983 | 979 | |
|---|
| 984 | 980 | adb_get_infos(id, &default_id, &cur_handler_id); |
|---|
| 981 | + printk(KERN_DEBUG "ADB keyboard at %d has handler 0x%X\n", |
|---|
| 982 | + id, cur_handler_id); |
|---|
| 985 | 983 | reg |= adbhid_input_reregister(id, default_id, org_handler_id, |
|---|
| 986 | 984 | cur_handler_id, 0); |
|---|
| 987 | 985 | } |
|---|
| .. | .. |
|---|
| 999 | 997 | for (i = 0; i < mouse_ids.nids; i++) { |
|---|
| 1000 | 998 | int id = mouse_ids.id[i]; |
|---|
| 1001 | 999 | int mouse_kind; |
|---|
| 1000 | + char *desc = "standard"; |
|---|
| 1002 | 1001 | |
|---|
| 1003 | 1002 | adb_get_infos(id, &default_id, &org_handler_id); |
|---|
| 1004 | 1003 | |
|---|
| 1005 | 1004 | if (adb_try_handler_change(id, 4)) { |
|---|
| 1006 | | - printk("ADB mouse at %d, handler set to 4", id); |
|---|
| 1007 | 1005 | mouse_kind = ADBMOUSE_EXTENDED; |
|---|
| 1008 | 1006 | } |
|---|
| 1009 | 1007 | else if (adb_try_handler_change(id, 0x2F)) { |
|---|
| 1010 | | - printk("ADB mouse at %d, handler set to 0x2F", id); |
|---|
| 1011 | 1008 | mouse_kind = ADBMOUSE_MICROSPEED; |
|---|
| 1012 | 1009 | } |
|---|
| 1013 | 1010 | else if (adb_try_handler_change(id, 0x42)) { |
|---|
| 1014 | | - printk("ADB mouse at %d, handler set to 0x42", id); |
|---|
| 1015 | 1011 | mouse_kind = ADBMOUSE_TRACKBALLPRO; |
|---|
| 1016 | 1012 | } |
|---|
| 1017 | 1013 | else if (adb_try_handler_change(id, 0x66)) { |
|---|
| 1018 | | - printk("ADB mouse at %d, handler set to 0x66", id); |
|---|
| 1019 | 1014 | mouse_kind = ADBMOUSE_MICROSPEED; |
|---|
| 1020 | 1015 | } |
|---|
| 1021 | 1016 | else if (adb_try_handler_change(id, 0x5F)) { |
|---|
| 1022 | | - printk("ADB mouse at %d, handler set to 0x5F", id); |
|---|
| 1023 | 1017 | mouse_kind = ADBMOUSE_MICROSPEED; |
|---|
| 1024 | 1018 | } |
|---|
| 1025 | 1019 | else if (adb_try_handler_change(id, 3)) { |
|---|
| 1026 | | - printk("ADB mouse at %d, handler set to 3", id); |
|---|
| 1027 | 1020 | mouse_kind = ADBMOUSE_MS_A3; |
|---|
| 1028 | 1021 | } |
|---|
| 1029 | 1022 | else if (adb_try_handler_change(id, 2)) { |
|---|
| 1030 | | - printk("ADB mouse at %d, handler set to 2", id); |
|---|
| 1031 | 1023 | mouse_kind = ADBMOUSE_STANDARD_200; |
|---|
| 1032 | 1024 | } |
|---|
| 1033 | 1025 | else { |
|---|
| 1034 | | - printk("ADB mouse at %d, handler 1", id); |
|---|
| 1035 | 1026 | mouse_kind = ADBMOUSE_STANDARD_100; |
|---|
| 1036 | 1027 | } |
|---|
| 1037 | 1028 | |
|---|
| 1038 | 1029 | if ((mouse_kind == ADBMOUSE_TRACKBALLPRO) |
|---|
| 1039 | 1030 | || (mouse_kind == ADBMOUSE_MICROSPEED)) { |
|---|
| 1031 | + desc = "Microspeed/MacPoint or compatible"; |
|---|
| 1040 | 1032 | init_microspeed(id); |
|---|
| 1041 | 1033 | } else if (mouse_kind == ADBMOUSE_MS_A3) { |
|---|
| 1034 | + desc = "Mouse Systems A3 Mouse or compatible"; |
|---|
| 1042 | 1035 | init_ms_a3(id); |
|---|
| 1043 | 1036 | } else if (mouse_kind == ADBMOUSE_EXTENDED) { |
|---|
| 1037 | + desc = "extended"; |
|---|
| 1044 | 1038 | /* |
|---|
| 1045 | 1039 | * Register 1 is usually used for device |
|---|
| 1046 | 1040 | * identification. Here, we try to identify |
|---|
| .. | .. |
|---|
| 1054 | 1048 | (req.reply[1] == 0x9a) && ((req.reply[2] == 0x21) |
|---|
| 1055 | 1049 | || (req.reply[2] == 0x20))) { |
|---|
| 1056 | 1050 | mouse_kind = ADBMOUSE_TRACKBALL; |
|---|
| 1051 | + desc = "trackman/mouseman"; |
|---|
| 1057 | 1052 | init_trackball(id); |
|---|
| 1058 | 1053 | } |
|---|
| 1059 | 1054 | else if ((req.reply_len >= 4) && |
|---|
| 1060 | 1055 | (req.reply[1] == 0x74) && (req.reply[2] == 0x70) && |
|---|
| 1061 | 1056 | (req.reply[3] == 0x61) && (req.reply[4] == 0x64)) { |
|---|
| 1062 | 1057 | mouse_kind = ADBMOUSE_TRACKPAD; |
|---|
| 1058 | + desc = "trackpad"; |
|---|
| 1063 | 1059 | init_trackpad(id); |
|---|
| 1064 | 1060 | } |
|---|
| 1065 | 1061 | else if ((req.reply_len >= 4) && |
|---|
| 1066 | 1062 | (req.reply[1] == 0x4b) && (req.reply[2] == 0x4d) && |
|---|
| 1067 | 1063 | (req.reply[3] == 0x4c) && (req.reply[4] == 0x31)) { |
|---|
| 1068 | 1064 | mouse_kind = ADBMOUSE_TURBOMOUSE5; |
|---|
| 1065 | + desc = "TurboMouse 5"; |
|---|
| 1069 | 1066 | init_turbomouse(id); |
|---|
| 1070 | 1067 | } |
|---|
| 1071 | 1068 | else if ((req.reply_len == 9) && |
|---|
| 1072 | 1069 | (req.reply[1] == 0x4b) && (req.reply[2] == 0x4f) && |
|---|
| 1073 | 1070 | (req.reply[3] == 0x49) && (req.reply[4] == 0x54)) { |
|---|
| 1074 | 1071 | if (adb_try_handler_change(id, 0x42)) { |
|---|
| 1075 | | - pr_cont("\nADB MacAlly 2-button mouse at %d, handler set to 0x42", id); |
|---|
| 1076 | 1072 | mouse_kind = ADBMOUSE_MACALLY2; |
|---|
| 1073 | + desc = "MacAlly 2-button"; |
|---|
| 1077 | 1074 | } |
|---|
| 1078 | 1075 | } |
|---|
| 1079 | 1076 | } |
|---|
| 1080 | | - pr_cont("\n"); |
|---|
| 1081 | 1077 | |
|---|
| 1082 | 1078 | adb_get_infos(id, &default_id, &cur_handler_id); |
|---|
| 1079 | + printk(KERN_DEBUG "ADB mouse (%s) at %d has handler 0x%X\n", |
|---|
| 1080 | + desc, id, cur_handler_id); |
|---|
| 1083 | 1081 | reg |= adbhid_input_reregister(id, default_id, org_handler_id, |
|---|
| 1084 | 1082 | cur_handler_id, mouse_kind); |
|---|
| 1085 | 1083 | } |
|---|
| .. | .. |
|---|
| 1092 | 1090 | struct adb_request req; |
|---|
| 1093 | 1091 | unsigned char r1_buffer[8]; |
|---|
| 1094 | 1092 | |
|---|
| 1095 | | - pr_cont(" (trackpad)"); |
|---|
| 1096 | | - |
|---|
| 1097 | 1093 | adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, |
|---|
| 1098 | 1094 | ADB_READREG(id,1)); |
|---|
| 1099 | 1095 | if (req.reply_len < 8) |
|---|
| 1100 | | - pr_cont("bad length for reg. 1\n"); |
|---|
| 1096 | + pr_err("%s: bad length for reg. 1\n", __func__); |
|---|
| 1101 | 1097 | else |
|---|
| 1102 | 1098 | { |
|---|
| 1103 | 1099 | memcpy(r1_buffer, &req.reply[1], 8); |
|---|
| .. | .. |
|---|
| 1145 | 1141 | { |
|---|
| 1146 | 1142 | struct adb_request req; |
|---|
| 1147 | 1143 | |
|---|
| 1148 | | - pr_cont(" (trackman/mouseman)"); |
|---|
| 1149 | | - |
|---|
| 1150 | 1144 | adb_request(&req, NULL, ADBREQ_SYNC, 3, |
|---|
| 1151 | 1145 | ADB_WRITEREG(id,1), 00,0x81); |
|---|
| 1152 | 1146 | |
|---|
| .. | .. |
|---|
| 1176 | 1170 | init_turbomouse(int id) |
|---|
| 1177 | 1171 | { |
|---|
| 1178 | 1172 | struct adb_request req; |
|---|
| 1179 | | - |
|---|
| 1180 | | - pr_cont(" (TurboMouse 5)"); |
|---|
| 1181 | 1173 | |
|---|
| 1182 | 1174 | adb_request(&req, NULL, ADBREQ_SYNC, 1, ADB_FLUSH(id)); |
|---|
| 1183 | 1175 | |
|---|
| .. | .. |
|---|
| 1212 | 1204 | init_microspeed(int id) |
|---|
| 1213 | 1205 | { |
|---|
| 1214 | 1206 | struct adb_request req; |
|---|
| 1215 | | - |
|---|
| 1216 | | - pr_cont(" (Microspeed/MacPoint or compatible)"); |
|---|
| 1217 | 1207 | |
|---|
| 1218 | 1208 | adb_request(&req, NULL, ADBREQ_SYNC, 1, ADB_FLUSH(id)); |
|---|
| 1219 | 1209 | |
|---|
| .. | .. |
|---|
| 1253 | 1243 | { |
|---|
| 1254 | 1244 | struct adb_request req; |
|---|
| 1255 | 1245 | |
|---|
| 1256 | | - pr_cont(" (Mouse Systems A3 Mouse, or compatible)"); |
|---|
| 1257 | 1246 | adb_request(&req, NULL, ADBREQ_SYNC, 3, |
|---|
| 1258 | 1247 | ADB_WRITEREG(id, 0x2), |
|---|
| 1259 | 1248 | 0x00, |
|---|