Lines Matching refs:atkbd

202 struct atkbd {  struct
245 static void (*atkbd_platform_fixup)(struct atkbd *, const void *data); argument
247 static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
256 ssize_t (*handler)(struct atkbd *, char *));
258 ssize_t (*handler)(struct atkbd *, const char *, size_t));
260 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
261 static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t); \
283 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
307 static ssize_t atkbd_show_function_row_physmap(struct atkbd *atkbd, char *buf) in atkbd_show_function_row_physmap() argument
309 return vivaldi_function_row_physmap_show(&atkbd->vdata, buf); in atkbd_show_function_row_physmap()
312 static struct atkbd *atkbd_from_serio(struct serio *serio) in atkbd_from_serio()
316 return container_of(ps2dev, struct atkbd, ps2dev); in atkbd_from_serio()
324 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_attr_is_visible() local
327 !atkbd->vdata.num_function_row_keys) in atkbd_attr_is_visible()
368 static void atkbd_calculate_xl_bit(struct atkbd *atkbd, unsigned char code) in atkbd_calculate_xl_bit() argument
375 __clear_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
377 __set_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
387 static unsigned int atkbd_compat_scancode(struct atkbd *atkbd, unsigned int code) in atkbd_compat_scancode() argument
389 if (atkbd->set == 3) { in atkbd_compat_scancode()
390 if (atkbd->emul == 1) in atkbd_compat_scancode()
394 if (atkbd->emul == 1) in atkbd_compat_scancode()
409 struct atkbd *atkbd = container_of(ps2dev, struct atkbd, ps2dev); in atkbd_handle_frame_error() local
414 !atkbd->resend && atkbd->write) { in atkbd_handle_frame_error()
417 atkbd->resend = true; in atkbd_handle_frame_error()
422 atkbd->resend = false; in atkbd_handle_frame_error()
445 struct atkbd *atkbd = container_of(ps2dev, struct atkbd, ps2dev); in atkbd_receive_byte() local
446 struct input_dev *dev = atkbd->dev; in atkbd_receive_byte()
454 if (!atkbd->enabled) in atkbd_receive_byte()
460 code = atkbd_platform_scancode_fixup(atkbd, code); in atkbd_receive_byte()
462 if (atkbd->translated) { in atkbd_receive_byte()
464 if (atkbd->emul || atkbd_need_xlate(atkbd->xl_bit, code)) { in atkbd_receive_byte()
465 atkbd->release = code >> 7; in atkbd_receive_byte()
469 if (!atkbd->emul) in atkbd_receive_byte()
470 atkbd_calculate_xl_bit(atkbd, data); in atkbd_receive_byte()
475 atkbd->enabled = false; in atkbd_receive_byte()
476 serio_reconnect(atkbd->ps2dev.serio); in atkbd_receive_byte()
479 atkbd->emul = 1; in atkbd_receive_byte()
482 atkbd->emul = 2; in atkbd_receive_byte()
485 atkbd->release = true; in atkbd_receive_byte()
496 atkbd->err_count++; in atkbd_receive_byte()
502 code = atkbd_compat_scancode(atkbd, code); in atkbd_receive_byte()
504 if (atkbd->emul && --atkbd->emul) in atkbd_receive_byte()
507 keycode = atkbd->keycode[code]; in atkbd_receive_byte()
509 if (!(atkbd->release && test_bit(code, atkbd->force_release_mask))) in atkbd_receive_byte()
519 atkbd->release ? "released" : "pressed", in atkbd_receive_byte()
520 atkbd->translated ? "translated" : "raw", in atkbd_receive_byte()
521 atkbd->set, code, serio->phys); in atkbd_receive_byte()
540 click = !atkbd->release; in atkbd_receive_byte()
549 if (atkbd->release) { in atkbd_receive_byte()
551 atkbd->last = 0; in atkbd_receive_byte()
552 } else if (!atkbd->softrepeat && test_bit(keycode, dev->key)) { in atkbd_receive_byte()
554 value = time_before(jiffies, atkbd->time) && atkbd->last == code ? 1 : 2; in atkbd_receive_byte()
557 atkbd->last = code; in atkbd_receive_byte()
558 atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2; in atkbd_receive_byte()
564 if (value && test_bit(code, atkbd->force_release_mask)) { in atkbd_receive_byte()
571 if (atkbd->scroll) { in atkbd_receive_byte()
575 atkbd->release ? -scroll : scroll); in atkbd_receive_byte()
580 atkbd->release = false; in atkbd_receive_byte()
583 static int atkbd_set_repeat_rate(struct atkbd *atkbd) in atkbd_set_repeat_rate() argument
591 struct input_dev *dev = atkbd->dev; in atkbd_set_repeat_rate()
604 return ps2_command(&atkbd->ps2dev, &param, ATKBD_CMD_SETREP); in atkbd_set_repeat_rate()
607 static int atkbd_set_leds(struct atkbd *atkbd) in atkbd_set_leds() argument
609 struct input_dev *dev = atkbd->dev; in atkbd_set_leds()
615 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_SETLEDS)) in atkbd_set_leds()
618 if (atkbd->extra) { in atkbd_set_leds()
625 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_EX_SETLEDS)) in atkbd_set_leds()
640 struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); in atkbd_event_work() local
642 mutex_lock(&atkbd->mutex); in atkbd_event_work()
644 if (!atkbd->enabled) { in atkbd_event_work()
651 schedule_delayed_work(&atkbd->event_work, in atkbd_event_work()
654 if (test_and_clear_bit(ATKBD_LED_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
655 atkbd_set_leds(atkbd); in atkbd_event_work()
657 if (test_and_clear_bit(ATKBD_REP_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
658 atkbd_set_repeat_rate(atkbd); in atkbd_event_work()
661 mutex_unlock(&atkbd->mutex); in atkbd_event_work()
668 static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit) in atkbd_schedule_event_work() argument
672 if (time_after(jiffies, atkbd->event_jiffies + delay)) in atkbd_schedule_event_work()
675 atkbd->event_jiffies = jiffies; in atkbd_schedule_event_work()
676 set_bit(event_bit, &atkbd->event_mask); in atkbd_schedule_event_work()
678 schedule_delayed_work(&atkbd->event_work, delay); in atkbd_schedule_event_work()
690 struct atkbd *atkbd = input_get_drvdata(dev); in atkbd_event() local
692 if (!atkbd->write) in atkbd_event()
698 atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT); in atkbd_event()
702 if (!atkbd->softrepeat) in atkbd_event()
703 atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT); in atkbd_event()
716 static inline void atkbd_enable(struct atkbd *atkbd) in atkbd_enable() argument
718 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_enable()
719 atkbd->enabled = true; in atkbd_enable()
720 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_enable()
728 static inline void atkbd_disable(struct atkbd *atkbd) in atkbd_disable() argument
730 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_disable()
731 atkbd->enabled = false; in atkbd_disable()
732 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_disable()
735 static int atkbd_activate(struct atkbd *atkbd) in atkbd_activate() argument
737 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_activate()
758 static void atkbd_deactivate(struct atkbd *atkbd) in atkbd_deactivate() argument
760 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_deactivate()
772 static int atkbd_probe(struct atkbd *atkbd) in atkbd_probe() argument
774 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_probe()
807 atkbd->id = 0xabba; in atkbd_probe()
814 atkbd->id = (param[0] << 8) | param[1]; in atkbd_probe()
816 if (atkbd->id == 0xaca1 && atkbd->translated) { in atkbd_probe()
828 atkbd_deactivate(atkbd); in atkbd_probe()
839 static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra) in atkbd_select_set() argument
841 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_select_set()
844 atkbd->extra = false; in atkbd_select_set()
851 if (atkbd->translated) in atkbd_select_set()
854 if (atkbd->id == 0xaca1) { in atkbd_select_set()
863 atkbd->extra = true; in atkbd_select_set()
877 atkbd->id = param[0] << 8 | param[1]; in atkbd_select_set()
900 static int atkbd_reset_state(struct atkbd *atkbd) in atkbd_reset_state() argument
902 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_reset_state()
931 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_cleanup() local
933 atkbd_disable(atkbd); in atkbd_cleanup()
934 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_DEF); in atkbd_cleanup()
944 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_disconnect() local
946 atkbd_disable(atkbd); in atkbd_disconnect()
948 input_unregister_device(atkbd->dev); in atkbd_disconnect()
956 cancel_delayed_work_sync(&atkbd->event_work); in atkbd_disconnect()
960 kfree(atkbd); in atkbd_disconnect()
966 static void atkbd_apply_forced_release_keylist(struct atkbd* atkbd, in atkbd_apply_forced_release_keylist() argument
972 if (atkbd->set == 2) in atkbd_apply_forced_release_keylist()
974 __set_bit(keys[i], atkbd->force_release_mask); in atkbd_apply_forced_release_keylist()
1033 static unsigned int atkbd_oqo_01plus_scancode_fixup(struct atkbd *atkbd, in atkbd_oqo_01plus_scancode_fixup() argument
1036 if (atkbd->translated && atkbd->emul == 1 && in atkbd_oqo_01plus_scancode_fixup()
1038 atkbd->emul = 0; in atkbd_oqo_01plus_scancode_fixup()
1045 static int atkbd_get_keymap_from_fwnode(struct atkbd *atkbd) in atkbd_get_keymap_from_fwnode() argument
1047 struct device *dev = &atkbd->ps2dev.serio->dev; in atkbd_get_keymap_from_fwnode()
1067 memset(atkbd->keycode, 0, sizeof(atkbd->keycode)); in atkbd_get_keymap_from_fwnode()
1071 atkbd->keycode[scancode] = keycode; in atkbd_get_keymap_from_fwnode()
1083 static void atkbd_set_keycode_table(struct atkbd *atkbd) in atkbd_set_keycode_table() argument
1085 struct device *dev = &atkbd->ps2dev.serio->dev; in atkbd_set_keycode_table()
1089 memset(atkbd->keycode, 0, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1090 bitmap_zero(atkbd->force_release_mask, ATKBD_KEYMAP_SIZE); in atkbd_set_keycode_table()
1092 if (!atkbd_get_keymap_from_fwnode(atkbd)) { in atkbd_set_keycode_table()
1094 } else if (atkbd->translated) { in atkbd_set_keycode_table()
1097 atkbd->keycode[i] = atkbd_set2_keycode[scancode]; in atkbd_set_keycode_table()
1098 atkbd->keycode[i | 0x80] = atkbd_set2_keycode[scancode | 0x80]; in atkbd_set_keycode_table()
1099 if (atkbd->scroll) in atkbd_set_keycode_table()
1102 atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode; in atkbd_set_keycode_table()
1104 } else if (atkbd->set == 3) { in atkbd_set_keycode_table()
1105 memcpy(atkbd->keycode, atkbd_set3_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1107 memcpy(atkbd->keycode, atkbd_set2_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1109 if (atkbd->scroll) in atkbd_set_keycode_table()
1112 atkbd->keycode[scancode] = atkbd_scroll_keys[i].keycode; in atkbd_set_keycode_table()
1120 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANGEUL); in atkbd_set_keycode_table()
1121 atkbd->keycode[scancode] = KEY_HANGEUL; in atkbd_set_keycode_table()
1122 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1124 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANJA); in atkbd_set_keycode_table()
1125 atkbd->keycode[scancode] = KEY_HANJA; in atkbd_set_keycode_table()
1126 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1132 atkbd_platform_fixup(atkbd, atkbd_platform_fixup_data); in atkbd_set_keycode_table()
1139 static void atkbd_set_device_attrs(struct atkbd *atkbd) in atkbd_set_device_attrs() argument
1141 struct input_dev *input_dev = atkbd->dev; in atkbd_set_device_attrs()
1144 if (atkbd->extra) in atkbd_set_device_attrs()
1145 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1148 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1150 atkbd->translated ? "Translated" : "Raw", atkbd->set); in atkbd_set_device_attrs()
1152 snprintf(atkbd->phys, sizeof(atkbd->phys), in atkbd_set_device_attrs()
1153 "%s/input0", atkbd->ps2dev.serio->phys); in atkbd_set_device_attrs()
1155 input_dev->name = atkbd->name; in atkbd_set_device_attrs()
1156 input_dev->phys = atkbd->phys; in atkbd_set_device_attrs()
1159 input_dev->id.product = atkbd->translated ? 1 : atkbd->set; in atkbd_set_device_attrs()
1160 input_dev->id.version = atkbd->id; in atkbd_set_device_attrs()
1162 input_dev->dev.parent = &atkbd->ps2dev.serio->dev; in atkbd_set_device_attrs()
1164 input_set_drvdata(input_dev, atkbd); in atkbd_set_device_attrs()
1169 if (atkbd->write) { in atkbd_set_device_attrs()
1175 if (atkbd->extra) in atkbd_set_device_attrs()
1180 if (!atkbd->softrepeat) { in atkbd_set_device_attrs()
1185 input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) : in atkbd_set_device_attrs()
1188 if (atkbd->scroll) { in atkbd_set_device_attrs()
1195 input_dev->keycode = atkbd->keycode; in atkbd_set_device_attrs()
1200 if (atkbd->keycode[i] != KEY_RESERVED && in atkbd_set_device_attrs()
1201 atkbd->keycode[i] != ATKBD_KEY_NULL && in atkbd_set_device_attrs()
1202 atkbd->keycode[i] < ATKBD_SPECIAL) { in atkbd_set_device_attrs()
1203 __set_bit(atkbd->keycode[i], input_dev->keybit); in atkbd_set_device_attrs()
1210 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_parse_fwnode_data() local
1218 atkbd->vdata.function_row_physmap, in atkbd_parse_fwnode_data()
1220 atkbd->vdata.num_function_row_keys = n; in atkbd_parse_fwnode_data()
1234 struct atkbd *atkbd; in atkbd_connect() local
1238 atkbd = kzalloc(sizeof(struct atkbd), GFP_KERNEL); in atkbd_connect()
1240 if (!atkbd || !dev) in atkbd_connect()
1243 atkbd->dev = dev; in atkbd_connect()
1244 ps2_init(&atkbd->ps2dev, serio, in atkbd_connect()
1246 INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); in atkbd_connect()
1247 mutex_init(&atkbd->mutex); in atkbd_connect()
1252 atkbd->translated = true; in atkbd_connect()
1257 atkbd->write = true; in atkbd_connect()
1261 atkbd->softraw = atkbd_softraw; in atkbd_connect()
1262 atkbd->softrepeat = atkbd_softrepeat; in atkbd_connect()
1263 atkbd->scroll = atkbd_scroll; in atkbd_connect()
1265 if (atkbd->softrepeat) in atkbd_connect()
1266 atkbd->softraw = true; in atkbd_connect()
1268 serio_set_drvdata(serio, atkbd); in atkbd_connect()
1274 if (atkbd->write) { in atkbd_connect()
1276 if (atkbd_probe(atkbd)) { in atkbd_connect()
1281 atkbd->set = atkbd_select_set(atkbd, atkbd_set, atkbd_extra); in atkbd_connect()
1282 atkbd_reset_state(atkbd); in atkbd_connect()
1285 atkbd->set = 2; in atkbd_connect()
1286 atkbd->id = 0xab00; in atkbd_connect()
1291 atkbd_set_keycode_table(atkbd); in atkbd_connect()
1292 atkbd_set_device_attrs(atkbd); in atkbd_connect()
1294 atkbd_enable(atkbd); in atkbd_connect()
1296 atkbd_activate(atkbd); in atkbd_connect()
1298 err = input_register_device(atkbd->dev); in atkbd_connect()
1307 kfree(atkbd); in atkbd_connect()
1318 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_reconnect() local
1322 if (!atkbd || !drv) { in atkbd_reconnect()
1328 mutex_lock(&atkbd->mutex); in atkbd_reconnect()
1330 atkbd_disable(atkbd); in atkbd_reconnect()
1332 if (atkbd->write) { in atkbd_reconnect()
1333 if (atkbd_probe(atkbd)) in atkbd_reconnect()
1336 if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) in atkbd_reconnect()
1346 atkbd_set_leds(atkbd); in atkbd_reconnect()
1347 if (!atkbd->softrepeat) in atkbd_reconnect()
1348 atkbd_set_repeat_rate(atkbd); in atkbd_reconnect()
1356 atkbd->xl_bit = 0; in atkbd_reconnect()
1357 atkbd->emul = 0; in atkbd_reconnect()
1359 atkbd_enable(atkbd); in atkbd_reconnect()
1360 if (atkbd->write) in atkbd_reconnect()
1361 atkbd_activate(atkbd); in atkbd_reconnect()
1366 mutex_unlock(&atkbd->mutex); in atkbd_reconnect()
1409 ssize_t (*handler)(struct atkbd *, char *)) in atkbd_attr_show_helper() argument
1412 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_attr_show_helper() local
1414 return handler(atkbd, buf); in atkbd_attr_show_helper()
1418 ssize_t (*handler)(struct atkbd *, const char *, size_t)) in atkbd_attr_set_helper() argument
1421 struct atkbd *atkbd = atkbd_from_serio(serio); in atkbd_attr_set_helper() local
1424 retval = mutex_lock_interruptible(&atkbd->mutex); in atkbd_attr_set_helper()
1428 atkbd_disable(atkbd); in atkbd_attr_set_helper()
1429 retval = handler(atkbd, buf, count); in atkbd_attr_set_helper()
1430 atkbd_enable(atkbd); in atkbd_attr_set_helper()
1432 mutex_unlock(&atkbd->mutex); in atkbd_attr_set_helper()
1437 static ssize_t atkbd_show_extra(struct atkbd *atkbd, char *buf) in atkbd_show_extra() argument
1439 return sprintf(buf, "%d\n", atkbd->extra ? 1 : 0); in atkbd_show_extra()
1442 static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_extra() argument
1450 if (!atkbd->write) in atkbd_set_extra()
1460 if (atkbd->extra != value) { in atkbd_set_extra()
1466 old_dev = atkbd->dev; in atkbd_set_extra()
1467 old_extra = atkbd->extra; in atkbd_set_extra()
1468 old_set = atkbd->set; in atkbd_set_extra()
1474 atkbd->dev = new_dev; in atkbd_set_extra()
1475 atkbd->set = atkbd_select_set(atkbd, atkbd->set, value); in atkbd_set_extra()
1476 atkbd_reset_state(atkbd); in atkbd_set_extra()
1477 atkbd_activate(atkbd); in atkbd_set_extra()
1478 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1479 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1481 err = input_register_device(atkbd->dev); in atkbd_set_extra()
1485 atkbd->dev = old_dev; in atkbd_set_extra()
1486 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_extra()
1487 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1488 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1498 static ssize_t atkbd_show_force_release(struct atkbd *atkbd, char *buf) in atkbd_show_force_release() argument
1501 ATKBD_KEYMAP_SIZE, atkbd->force_release_mask); in atkbd_show_force_release()
1509 static ssize_t atkbd_set_force_release(struct atkbd *atkbd, in atkbd_set_force_release() argument
1520 memcpy(atkbd->force_release_mask, new_mask, sizeof(atkbd->force_release_mask)); in atkbd_set_force_release()
1525 static ssize_t atkbd_show_scroll(struct atkbd *atkbd, char *buf) in atkbd_show_scroll() argument
1527 return sprintf(buf, "%d\n", atkbd->scroll ? 1 : 0); in atkbd_show_scroll()
1530 static ssize_t atkbd_set_scroll(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_scroll() argument
1544 if (atkbd->scroll != value) { in atkbd_set_scroll()
1545 old_dev = atkbd->dev; in atkbd_set_scroll()
1546 old_scroll = atkbd->scroll; in atkbd_set_scroll()
1552 atkbd->dev = new_dev; in atkbd_set_scroll()
1553 atkbd->scroll = value; in atkbd_set_scroll()
1554 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1555 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1557 err = input_register_device(atkbd->dev); in atkbd_set_scroll()
1561 atkbd->scroll = old_scroll; in atkbd_set_scroll()
1562 atkbd->dev = old_dev; in atkbd_set_scroll()
1563 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1564 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1573 static ssize_t atkbd_show_set(struct atkbd *atkbd, char *buf) in atkbd_show_set() argument
1575 return sprintf(buf, "%d\n", atkbd->set); in atkbd_show_set()
1578 static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_set() argument
1586 if (!atkbd->write) in atkbd_set_set()
1596 if (atkbd->set != value) { in atkbd_set_set()
1597 old_dev = atkbd->dev; in atkbd_set_set()
1598 old_extra = atkbd->extra; in atkbd_set_set()
1599 old_set = atkbd->set; in atkbd_set_set()
1605 atkbd->dev = new_dev; in atkbd_set_set()
1606 atkbd->set = atkbd_select_set(atkbd, value, atkbd->extra); in atkbd_set_set()
1607 atkbd_reset_state(atkbd); in atkbd_set_set()
1608 atkbd_activate(atkbd); in atkbd_set_set()
1609 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1610 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1612 err = input_register_device(atkbd->dev); in atkbd_set_set()
1616 atkbd->dev = old_dev; in atkbd_set_set()
1617 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_set()
1618 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1619 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1628 static ssize_t atkbd_show_softrepeat(struct atkbd *atkbd, char *buf) in atkbd_show_softrepeat() argument
1630 return sprintf(buf, "%d\n", atkbd->softrepeat ? 1 : 0); in atkbd_show_softrepeat()
1633 static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softrepeat() argument
1640 if (!atkbd->write) in atkbd_set_softrepeat()
1650 if (atkbd->softrepeat != value) { in atkbd_set_softrepeat()
1651 old_dev = atkbd->dev; in atkbd_set_softrepeat()
1652 old_softrepeat = atkbd->softrepeat; in atkbd_set_softrepeat()
1653 old_softraw = atkbd->softraw; in atkbd_set_softrepeat()
1659 atkbd->dev = new_dev; in atkbd_set_softrepeat()
1660 atkbd->softrepeat = value; in atkbd_set_softrepeat()
1661 if (atkbd->softrepeat) in atkbd_set_softrepeat()
1662 atkbd->softraw = true; in atkbd_set_softrepeat()
1663 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1665 err = input_register_device(atkbd->dev); in atkbd_set_softrepeat()
1669 atkbd->dev = old_dev; in atkbd_set_softrepeat()
1670 atkbd->softrepeat = old_softrepeat; in atkbd_set_softrepeat()
1671 atkbd->softraw = old_softraw; in atkbd_set_softrepeat()
1672 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1682 static ssize_t atkbd_show_softraw(struct atkbd *atkbd, char *buf) in atkbd_show_softraw() argument
1684 return sprintf(buf, "%d\n", atkbd->softraw ? 1 : 0); in atkbd_show_softraw()
1687 static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softraw() argument
1701 if (atkbd->softraw != value) { in atkbd_set_softraw()
1702 old_dev = atkbd->dev; in atkbd_set_softraw()
1703 old_softraw = atkbd->softraw; in atkbd_set_softraw()
1709 atkbd->dev = new_dev; in atkbd_set_softraw()
1710 atkbd->softraw = value; in atkbd_set_softraw()
1711 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1713 err = input_register_device(atkbd->dev); in atkbd_set_softraw()
1717 atkbd->dev = old_dev; in atkbd_set_softraw()
1718 atkbd->softraw = old_softraw; in atkbd_set_softraw()
1719 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1728 static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf) in atkbd_show_err_count() argument
1730 return sprintf(buf, "%lu\n", atkbd->err_count); in atkbd_show_err_count()