Lines Matching refs:atkbd

203 struct atkbd {  struct
247 static void (*atkbd_platform_fixup)(struct atkbd *, const void *data); argument
249 static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
258 ssize_t (*handler)(struct atkbd *, char *));
260 ssize_t (*handler)(struct atkbd *, const char *, size_t));
262 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
263 static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t); \
285 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
309 static ssize_t atkbd_show_function_row_physmap(struct atkbd *atkbd, char *buf) in atkbd_show_function_row_physmap() argument
314 if (!atkbd->num_function_row_keys) in atkbd_show_function_row_physmap()
317 for (i = 0; i < atkbd->num_function_row_keys; i++) in atkbd_show_function_row_physmap()
319 atkbd->function_row_physmap[i]); in atkbd_show_function_row_physmap()
329 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_attr_is_visible() local
332 !atkbd->num_function_row_keys) in atkbd_attr_is_visible()
371 static void atkbd_calculate_xl_bit(struct atkbd *atkbd, unsigned char code) in atkbd_calculate_xl_bit() argument
378 __clear_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
380 __set_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
390 static unsigned int atkbd_compat_scancode(struct atkbd *atkbd, unsigned int code) in atkbd_compat_scancode() argument
392 if (atkbd->set == 3) { in atkbd_compat_scancode()
393 if (atkbd->emul == 1) in atkbd_compat_scancode()
397 if (atkbd->emul == 1) in atkbd_compat_scancode()
412 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_interrupt() local
413 struct input_dev *dev = atkbd->dev; in atkbd_interrupt()
422 …if ((flags & (SERIO_FRAME | SERIO_PARITY)) && (~flags & SERIO_TIMEOUT) && !atkbd->resend && atkbd-… in atkbd_interrupt()
425 atkbd->resend = true; in atkbd_interrupt()
430 atkbd->resend = false; in atkbd_interrupt()
433 if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_ACK)) in atkbd_interrupt()
434 if (ps2_handle_ack(&atkbd->ps2dev, data)) in atkbd_interrupt()
437 if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_CMD)) in atkbd_interrupt()
438 if (ps2_handle_response(&atkbd->ps2dev, data)) in atkbd_interrupt()
443 if (!atkbd->enabled) in atkbd_interrupt()
449 code = atkbd_platform_scancode_fixup(atkbd, code); in atkbd_interrupt()
451 if (atkbd->translated) { in atkbd_interrupt()
453 if (atkbd->emul || atkbd_need_xlate(atkbd->xl_bit, code)) { in atkbd_interrupt()
454 atkbd->release = code >> 7; in atkbd_interrupt()
458 if (!atkbd->emul) in atkbd_interrupt()
459 atkbd_calculate_xl_bit(atkbd, data); in atkbd_interrupt()
464 atkbd->enabled = false; in atkbd_interrupt()
465 serio_reconnect(atkbd->ps2dev.serio); in atkbd_interrupt()
468 atkbd->emul = 1; in atkbd_interrupt()
471 atkbd->emul = 2; in atkbd_interrupt()
474 atkbd->release = true; in atkbd_interrupt()
485 atkbd->err_count++; in atkbd_interrupt()
491 code = atkbd_compat_scancode(atkbd, code); in atkbd_interrupt()
493 if (atkbd->emul && --atkbd->emul) in atkbd_interrupt()
496 keycode = atkbd->keycode[code]; in atkbd_interrupt()
498 if (!(atkbd->release && test_bit(code, atkbd->force_release_mask))) in atkbd_interrupt()
508 atkbd->release ? "released" : "pressed", in atkbd_interrupt()
509 atkbd->translated ? "translated" : "raw", in atkbd_interrupt()
510 atkbd->set, code, serio->phys); in atkbd_interrupt()
529 click = !atkbd->release; in atkbd_interrupt()
538 if (atkbd->release) { in atkbd_interrupt()
540 atkbd->last = 0; in atkbd_interrupt()
541 } else if (!atkbd->softrepeat && test_bit(keycode, dev->key)) { in atkbd_interrupt()
543 value = time_before(jiffies, atkbd->time) && atkbd->last == code ? 1 : 2; in atkbd_interrupt()
546 atkbd->last = code; in atkbd_interrupt()
547 atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2; in atkbd_interrupt()
553 if (value && test_bit(code, atkbd->force_release_mask)) { in atkbd_interrupt()
560 if (atkbd->scroll) { in atkbd_interrupt()
564 atkbd->release ? -scroll : scroll); in atkbd_interrupt()
569 atkbd->release = false; in atkbd_interrupt()
574 static int atkbd_set_repeat_rate(struct atkbd *atkbd) in atkbd_set_repeat_rate() argument
582 struct input_dev *dev = atkbd->dev; in atkbd_set_repeat_rate()
595 return ps2_command(&atkbd->ps2dev, &param, ATKBD_CMD_SETREP); in atkbd_set_repeat_rate()
598 static int atkbd_set_leds(struct atkbd *atkbd) in atkbd_set_leds() argument
600 struct input_dev *dev = atkbd->dev; in atkbd_set_leds()
606 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_SETLEDS)) in atkbd_set_leds()
609 if (atkbd->extra) { in atkbd_set_leds()
616 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_EX_SETLEDS)) in atkbd_set_leds()
631 struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); in atkbd_event_work() local
633 mutex_lock(&atkbd->mutex); in atkbd_event_work()
635 if (!atkbd->enabled) { in atkbd_event_work()
642 schedule_delayed_work(&atkbd->event_work, in atkbd_event_work()
645 if (test_and_clear_bit(ATKBD_LED_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
646 atkbd_set_leds(atkbd); in atkbd_event_work()
648 if (test_and_clear_bit(ATKBD_REP_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
649 atkbd_set_repeat_rate(atkbd); in atkbd_event_work()
652 mutex_unlock(&atkbd->mutex); in atkbd_event_work()
659 static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit) in atkbd_schedule_event_work() argument
663 if (time_after(jiffies, atkbd->event_jiffies + delay)) in atkbd_schedule_event_work()
666 atkbd->event_jiffies = jiffies; in atkbd_schedule_event_work()
667 set_bit(event_bit, &atkbd->event_mask); in atkbd_schedule_event_work()
669 schedule_delayed_work(&atkbd->event_work, delay); in atkbd_schedule_event_work()
681 struct atkbd *atkbd = input_get_drvdata(dev); in atkbd_event() local
683 if (!atkbd->write) in atkbd_event()
689 atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT); in atkbd_event()
693 if (!atkbd->softrepeat) in atkbd_event()
694 atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT); in atkbd_event()
707 static inline void atkbd_enable(struct atkbd *atkbd) in atkbd_enable() argument
709 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_enable()
710 atkbd->enabled = true; in atkbd_enable()
711 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_enable()
719 static inline void atkbd_disable(struct atkbd *atkbd) in atkbd_disable() argument
721 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_disable()
722 atkbd->enabled = false; in atkbd_disable()
723 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_disable()
726 static int atkbd_activate(struct atkbd *atkbd) in atkbd_activate() argument
728 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_activate()
749 static void atkbd_deactivate(struct atkbd *atkbd) in atkbd_deactivate() argument
751 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_deactivate()
763 static int atkbd_probe(struct atkbd *atkbd) in atkbd_probe() argument
765 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_probe()
798 atkbd->id = 0xabba; in atkbd_probe()
805 atkbd->id = (param[0] << 8) | param[1]; in atkbd_probe()
807 if (atkbd->id == 0xaca1 && atkbd->translated) { in atkbd_probe()
819 atkbd_deactivate(atkbd); in atkbd_probe()
830 static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra) in atkbd_select_set() argument
832 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_select_set()
835 atkbd->extra = false; in atkbd_select_set()
842 if (atkbd->translated) in atkbd_select_set()
845 if (atkbd->id == 0xaca1) { in atkbd_select_set()
854 atkbd->extra = true; in atkbd_select_set()
868 atkbd->id = param[0] << 8 | param[1]; in atkbd_select_set()
891 static int atkbd_reset_state(struct atkbd *atkbd) in atkbd_reset_state() argument
893 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_reset_state()
922 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_cleanup() local
924 atkbd_disable(atkbd); in atkbd_cleanup()
925 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_DEF); in atkbd_cleanup()
935 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_disconnect() local
939 atkbd_disable(atkbd); in atkbd_disconnect()
941 input_unregister_device(atkbd->dev); in atkbd_disconnect()
949 cancel_delayed_work_sync(&atkbd->event_work); in atkbd_disconnect()
953 kfree(atkbd); in atkbd_disconnect()
959 static void atkbd_apply_forced_release_keylist(struct atkbd* atkbd, in atkbd_apply_forced_release_keylist() argument
965 if (atkbd->set == 2) in atkbd_apply_forced_release_keylist()
967 __set_bit(keys[i], atkbd->force_release_mask); in atkbd_apply_forced_release_keylist()
1026 static unsigned int atkbd_oqo_01plus_scancode_fixup(struct atkbd *atkbd, in atkbd_oqo_01plus_scancode_fixup() argument
1029 if (atkbd->translated && atkbd->emul == 1 && in atkbd_oqo_01plus_scancode_fixup()
1031 atkbd->emul = 0; in atkbd_oqo_01plus_scancode_fixup()
1038 static int atkbd_get_keymap_from_fwnode(struct atkbd *atkbd) in atkbd_get_keymap_from_fwnode() argument
1040 struct device *dev = &atkbd->ps2dev.serio->dev; in atkbd_get_keymap_from_fwnode()
1060 memset(atkbd->keycode, 0, sizeof(atkbd->keycode)); in atkbd_get_keymap_from_fwnode()
1064 atkbd->keycode[scancode] = keycode; in atkbd_get_keymap_from_fwnode()
1076 static void atkbd_set_keycode_table(struct atkbd *atkbd) in atkbd_set_keycode_table() argument
1078 struct device *dev = &atkbd->ps2dev.serio->dev; in atkbd_set_keycode_table()
1082 memset(atkbd->keycode, 0, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1083 bitmap_zero(atkbd->force_release_mask, ATKBD_KEYMAP_SIZE); in atkbd_set_keycode_table()
1085 if (!atkbd_get_keymap_from_fwnode(atkbd)) { in atkbd_set_keycode_table()
1087 } else if (atkbd->translated) { in atkbd_set_keycode_table()
1090 atkbd->keycode[i] = atkbd_set2_keycode[scancode]; in atkbd_set_keycode_table()
1091 atkbd->keycode[i | 0x80] = atkbd_set2_keycode[scancode | 0x80]; in atkbd_set_keycode_table()
1092 if (atkbd->scroll) in atkbd_set_keycode_table()
1095 atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode; in atkbd_set_keycode_table()
1097 } else if (atkbd->set == 3) { in atkbd_set_keycode_table()
1098 memcpy(atkbd->keycode, atkbd_set3_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1100 memcpy(atkbd->keycode, atkbd_set2_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1102 if (atkbd->scroll) in atkbd_set_keycode_table()
1105 atkbd->keycode[scancode] = atkbd_scroll_keys[i].keycode; in atkbd_set_keycode_table()
1113 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANGEUL); in atkbd_set_keycode_table()
1114 atkbd->keycode[scancode] = KEY_HANGEUL; in atkbd_set_keycode_table()
1115 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1117 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANJA); in atkbd_set_keycode_table()
1118 atkbd->keycode[scancode] = KEY_HANJA; in atkbd_set_keycode_table()
1119 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1125 atkbd_platform_fixup(atkbd, atkbd_platform_fixup_data); in atkbd_set_keycode_table()
1132 static void atkbd_set_device_attrs(struct atkbd *atkbd) in atkbd_set_device_attrs() argument
1134 struct input_dev *input_dev = atkbd->dev; in atkbd_set_device_attrs()
1137 if (atkbd->extra) in atkbd_set_device_attrs()
1138 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1141 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1143 atkbd->translated ? "Translated" : "Raw", atkbd->set); in atkbd_set_device_attrs()
1145 snprintf(atkbd->phys, sizeof(atkbd->phys), in atkbd_set_device_attrs()
1146 "%s/input0", atkbd->ps2dev.serio->phys); in atkbd_set_device_attrs()
1148 input_dev->name = atkbd->name; in atkbd_set_device_attrs()
1149 input_dev->phys = atkbd->phys; in atkbd_set_device_attrs()
1152 input_dev->id.product = atkbd->translated ? 1 : atkbd->set; in atkbd_set_device_attrs()
1153 input_dev->id.version = atkbd->id; in atkbd_set_device_attrs()
1155 input_dev->dev.parent = &atkbd->ps2dev.serio->dev; in atkbd_set_device_attrs()
1157 input_set_drvdata(input_dev, atkbd); in atkbd_set_device_attrs()
1162 if (atkbd->write) { in atkbd_set_device_attrs()
1168 if (atkbd->extra) in atkbd_set_device_attrs()
1173 if (!atkbd->softrepeat) { in atkbd_set_device_attrs()
1178 input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) : in atkbd_set_device_attrs()
1181 if (atkbd->scroll) { in atkbd_set_device_attrs()
1188 input_dev->keycode = atkbd->keycode; in atkbd_set_device_attrs()
1193 if (atkbd->keycode[i] != KEY_RESERVED && in atkbd_set_device_attrs()
1194 atkbd->keycode[i] != ATKBD_KEY_NULL && in atkbd_set_device_attrs()
1195 atkbd->keycode[i] < ATKBD_SPECIAL) { in atkbd_set_device_attrs()
1196 __set_bit(atkbd->keycode[i], input_dev->keybit); in atkbd_set_device_attrs()
1203 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_parse_fwnode_data() local
1211 atkbd->function_row_physmap, n)) { in atkbd_parse_fwnode_data()
1212 atkbd->num_function_row_keys = n; in atkbd_parse_fwnode_data()
1226 struct atkbd *atkbd; in atkbd_connect() local
1230 atkbd = kzalloc(sizeof(struct atkbd), GFP_KERNEL); in atkbd_connect()
1232 if (!atkbd || !dev) in atkbd_connect()
1235 atkbd->dev = dev; in atkbd_connect()
1236 ps2_init(&atkbd->ps2dev, serio); in atkbd_connect()
1237 INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); in atkbd_connect()
1238 mutex_init(&atkbd->mutex); in atkbd_connect()
1243 atkbd->translated = true; in atkbd_connect()
1248 atkbd->write = true; in atkbd_connect()
1252 atkbd->softraw = atkbd_softraw; in atkbd_connect()
1253 atkbd->softrepeat = atkbd_softrepeat; in atkbd_connect()
1254 atkbd->scroll = atkbd_scroll; in atkbd_connect()
1256 if (atkbd->softrepeat) in atkbd_connect()
1257 atkbd->softraw = true; in atkbd_connect()
1259 serio_set_drvdata(serio, atkbd); in atkbd_connect()
1265 if (atkbd->write) { in atkbd_connect()
1267 if (atkbd_probe(atkbd)) { in atkbd_connect()
1272 atkbd->set = atkbd_select_set(atkbd, atkbd_set, atkbd_extra); in atkbd_connect()
1273 atkbd_reset_state(atkbd); in atkbd_connect()
1276 atkbd->set = 2; in atkbd_connect()
1277 atkbd->id = 0xab00; in atkbd_connect()
1282 atkbd_set_keycode_table(atkbd); in atkbd_connect()
1283 atkbd_set_device_attrs(atkbd); in atkbd_connect()
1289 atkbd_enable(atkbd); in atkbd_connect()
1291 atkbd_activate(atkbd); in atkbd_connect()
1293 err = input_register_device(atkbd->dev); in atkbd_connect()
1303 kfree(atkbd); in atkbd_connect()
1314 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_reconnect() local
1318 if (!atkbd || !drv) { in atkbd_reconnect()
1324 mutex_lock(&atkbd->mutex); in atkbd_reconnect()
1326 atkbd_disable(atkbd); in atkbd_reconnect()
1328 if (atkbd->write) { in atkbd_reconnect()
1329 if (atkbd_probe(atkbd)) in atkbd_reconnect()
1332 if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) in atkbd_reconnect()
1342 atkbd_set_leds(atkbd); in atkbd_reconnect()
1343 if (!atkbd->softrepeat) in atkbd_reconnect()
1344 atkbd_set_repeat_rate(atkbd); in atkbd_reconnect()
1352 atkbd->xl_bit = 0; in atkbd_reconnect()
1353 atkbd->emul = 0; in atkbd_reconnect()
1355 atkbd_enable(atkbd); in atkbd_reconnect()
1356 if (atkbd->write) in atkbd_reconnect()
1357 atkbd_activate(atkbd); in atkbd_reconnect()
1362 mutex_unlock(&atkbd->mutex); in atkbd_reconnect()
1404 ssize_t (*handler)(struct atkbd *, char *)) in atkbd_attr_show_helper() argument
1407 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_attr_show_helper() local
1409 return handler(atkbd, buf); in atkbd_attr_show_helper()
1413 ssize_t (*handler)(struct atkbd *, const char *, size_t)) in atkbd_attr_set_helper() argument
1416 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_attr_set_helper() local
1419 retval = mutex_lock_interruptible(&atkbd->mutex); in atkbd_attr_set_helper()
1423 atkbd_disable(atkbd); in atkbd_attr_set_helper()
1424 retval = handler(atkbd, buf, count); in atkbd_attr_set_helper()
1425 atkbd_enable(atkbd); in atkbd_attr_set_helper()
1427 mutex_unlock(&atkbd->mutex); in atkbd_attr_set_helper()
1432 static ssize_t atkbd_show_extra(struct atkbd *atkbd, char *buf) in atkbd_show_extra() argument
1434 return sprintf(buf, "%d\n", atkbd->extra ? 1 : 0); in atkbd_show_extra()
1437 static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_extra() argument
1445 if (!atkbd->write) in atkbd_set_extra()
1455 if (atkbd->extra != value) { in atkbd_set_extra()
1461 old_dev = atkbd->dev; in atkbd_set_extra()
1462 old_extra = atkbd->extra; in atkbd_set_extra()
1463 old_set = atkbd->set; in atkbd_set_extra()
1469 atkbd->dev = new_dev; in atkbd_set_extra()
1470 atkbd->set = atkbd_select_set(atkbd, atkbd->set, value); in atkbd_set_extra()
1471 atkbd_reset_state(atkbd); in atkbd_set_extra()
1472 atkbd_activate(atkbd); in atkbd_set_extra()
1473 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1474 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1476 err = input_register_device(atkbd->dev); in atkbd_set_extra()
1480 atkbd->dev = old_dev; in atkbd_set_extra()
1481 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_extra()
1482 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1483 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1493 static ssize_t atkbd_show_force_release(struct atkbd *atkbd, char *buf) in atkbd_show_force_release() argument
1496 ATKBD_KEYMAP_SIZE, atkbd->force_release_mask); in atkbd_show_force_release()
1504 static ssize_t atkbd_set_force_release(struct atkbd *atkbd, in atkbd_set_force_release() argument
1515 memcpy(atkbd->force_release_mask, new_mask, sizeof(atkbd->force_release_mask)); in atkbd_set_force_release()
1520 static ssize_t atkbd_show_scroll(struct atkbd *atkbd, char *buf) in atkbd_show_scroll() argument
1522 return sprintf(buf, "%d\n", atkbd->scroll ? 1 : 0); in atkbd_show_scroll()
1525 static ssize_t atkbd_set_scroll(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_scroll() argument
1539 if (atkbd->scroll != value) { in atkbd_set_scroll()
1540 old_dev = atkbd->dev; in atkbd_set_scroll()
1541 old_scroll = atkbd->scroll; in atkbd_set_scroll()
1547 atkbd->dev = new_dev; in atkbd_set_scroll()
1548 atkbd->scroll = value; in atkbd_set_scroll()
1549 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1550 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1552 err = input_register_device(atkbd->dev); in atkbd_set_scroll()
1556 atkbd->scroll = old_scroll; in atkbd_set_scroll()
1557 atkbd->dev = old_dev; in atkbd_set_scroll()
1558 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1559 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1568 static ssize_t atkbd_show_set(struct atkbd *atkbd, char *buf) in atkbd_show_set() argument
1570 return sprintf(buf, "%d\n", atkbd->set); in atkbd_show_set()
1573 static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_set() argument
1581 if (!atkbd->write) in atkbd_set_set()
1591 if (atkbd->set != value) { in atkbd_set_set()
1592 old_dev = atkbd->dev; in atkbd_set_set()
1593 old_extra = atkbd->extra; in atkbd_set_set()
1594 old_set = atkbd->set; in atkbd_set_set()
1600 atkbd->dev = new_dev; in atkbd_set_set()
1601 atkbd->set = atkbd_select_set(atkbd, value, atkbd->extra); in atkbd_set_set()
1602 atkbd_reset_state(atkbd); in atkbd_set_set()
1603 atkbd_activate(atkbd); in atkbd_set_set()
1604 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1605 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1607 err = input_register_device(atkbd->dev); in atkbd_set_set()
1611 atkbd->dev = old_dev; in atkbd_set_set()
1612 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_set()
1613 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1614 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1623 static ssize_t atkbd_show_softrepeat(struct atkbd *atkbd, char *buf) in atkbd_show_softrepeat() argument
1625 return sprintf(buf, "%d\n", atkbd->softrepeat ? 1 : 0); in atkbd_show_softrepeat()
1628 static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softrepeat() argument
1635 if (!atkbd->write) in atkbd_set_softrepeat()
1645 if (atkbd->softrepeat != value) { in atkbd_set_softrepeat()
1646 old_dev = atkbd->dev; in atkbd_set_softrepeat()
1647 old_softrepeat = atkbd->softrepeat; in atkbd_set_softrepeat()
1648 old_softraw = atkbd->softraw; in atkbd_set_softrepeat()
1654 atkbd->dev = new_dev; in atkbd_set_softrepeat()
1655 atkbd->softrepeat = value; in atkbd_set_softrepeat()
1656 if (atkbd->softrepeat) in atkbd_set_softrepeat()
1657 atkbd->softraw = true; in atkbd_set_softrepeat()
1658 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1660 err = input_register_device(atkbd->dev); in atkbd_set_softrepeat()
1664 atkbd->dev = old_dev; in atkbd_set_softrepeat()
1665 atkbd->softrepeat = old_softrepeat; in atkbd_set_softrepeat()
1666 atkbd->softraw = old_softraw; in atkbd_set_softrepeat()
1667 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1677 static ssize_t atkbd_show_softraw(struct atkbd *atkbd, char *buf) in atkbd_show_softraw() argument
1679 return sprintf(buf, "%d\n", atkbd->softraw ? 1 : 0); in atkbd_show_softraw()
1682 static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softraw() argument
1696 if (atkbd->softraw != value) { in atkbd_set_softraw()
1697 old_dev = atkbd->dev; in atkbd_set_softraw()
1698 old_softraw = atkbd->softraw; in atkbd_set_softraw()
1704 atkbd->dev = new_dev; in atkbd_set_softraw()
1705 atkbd->softraw = value; in atkbd_set_softraw()
1706 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1708 err = input_register_device(atkbd->dev); in atkbd_set_softraw()
1712 atkbd->dev = old_dev; in atkbd_set_softraw()
1713 atkbd->softraw = old_softraw; in atkbd_set_softraw()
1714 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1723 static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf) in atkbd_show_err_count() argument
1725 return sprintf(buf, "%lu\n", atkbd->err_count); in atkbd_show_err_count()