Lines Matching refs:atkbd

197 struct atkbd {  struct
238 static void (*atkbd_platform_fixup)(struct atkbd *, const void *data); argument
240 static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
249 ssize_t (*handler)(struct atkbd *, char *));
251 ssize_t (*handler)(struct atkbd *, const char *, size_t));
253 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
254 static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t); \
276 static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
330 static void atkbd_calculate_xl_bit(struct atkbd *atkbd, unsigned char code) in atkbd_calculate_xl_bit() argument
337 __clear_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
339 __set_bit(i, &atkbd->xl_bit); in atkbd_calculate_xl_bit()
349 static unsigned int atkbd_compat_scancode(struct atkbd *atkbd, unsigned int code) in atkbd_compat_scancode() argument
351 if (atkbd->set == 3) { in atkbd_compat_scancode()
352 if (atkbd->emul == 1) in atkbd_compat_scancode()
356 if (atkbd->emul == 1) in atkbd_compat_scancode()
371 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_interrupt() local
372 struct input_dev *dev = atkbd->dev; in atkbd_interrupt()
381 …if ((flags & (SERIO_FRAME | SERIO_PARITY)) && (~flags & SERIO_TIMEOUT) && !atkbd->resend && atkbd-… in atkbd_interrupt()
384 atkbd->resend = true; in atkbd_interrupt()
389 atkbd->resend = false; in atkbd_interrupt()
392 if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_ACK)) in atkbd_interrupt()
393 if (ps2_handle_ack(&atkbd->ps2dev, data)) in atkbd_interrupt()
396 if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_CMD)) in atkbd_interrupt()
397 if (ps2_handle_response(&atkbd->ps2dev, data)) in atkbd_interrupt()
402 if (!atkbd->enabled) in atkbd_interrupt()
408 code = atkbd_platform_scancode_fixup(atkbd, code); in atkbd_interrupt()
410 if (atkbd->translated) { in atkbd_interrupt()
412 if (atkbd->emul || atkbd_need_xlate(atkbd->xl_bit, code)) { in atkbd_interrupt()
413 atkbd->release = code >> 7; in atkbd_interrupt()
417 if (!atkbd->emul) in atkbd_interrupt()
418 atkbd_calculate_xl_bit(atkbd, data); in atkbd_interrupt()
423 atkbd->enabled = false; in atkbd_interrupt()
424 serio_reconnect(atkbd->ps2dev.serio); in atkbd_interrupt()
427 atkbd->emul = 1; in atkbd_interrupt()
430 atkbd->emul = 2; in atkbd_interrupt()
433 atkbd->release = true; in atkbd_interrupt()
444 atkbd->err_count++; in atkbd_interrupt()
450 code = atkbd_compat_scancode(atkbd, code); in atkbd_interrupt()
452 if (atkbd->emul && --atkbd->emul) in atkbd_interrupt()
455 keycode = atkbd->keycode[code]; in atkbd_interrupt()
457 if (!(atkbd->release && test_bit(code, atkbd->force_release_mask))) in atkbd_interrupt()
467 atkbd->release ? "released" : "pressed", in atkbd_interrupt()
468 atkbd->translated ? "translated" : "raw", in atkbd_interrupt()
469 atkbd->set, code, serio->phys); in atkbd_interrupt()
488 click = !atkbd->release; in atkbd_interrupt()
497 if (atkbd->release) { in atkbd_interrupt()
499 atkbd->last = 0; in atkbd_interrupt()
500 } else if (!atkbd->softrepeat && test_bit(keycode, dev->key)) { in atkbd_interrupt()
502 value = time_before(jiffies, atkbd->time) && atkbd->last == code ? 1 : 2; in atkbd_interrupt()
505 atkbd->last = code; in atkbd_interrupt()
506 atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2; in atkbd_interrupt()
512 if (value && test_bit(code, atkbd->force_release_mask)) { in atkbd_interrupt()
519 if (atkbd->scroll) { in atkbd_interrupt()
523 atkbd->release ? -scroll : scroll); in atkbd_interrupt()
528 atkbd->release = false; in atkbd_interrupt()
533 static int atkbd_set_repeat_rate(struct atkbd *atkbd) in atkbd_set_repeat_rate() argument
541 struct input_dev *dev = atkbd->dev; in atkbd_set_repeat_rate()
554 return ps2_command(&atkbd->ps2dev, &param, ATKBD_CMD_SETREP); in atkbd_set_repeat_rate()
557 static int atkbd_set_leds(struct atkbd *atkbd) in atkbd_set_leds() argument
559 struct input_dev *dev = atkbd->dev; in atkbd_set_leds()
565 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_SETLEDS)) in atkbd_set_leds()
568 if (atkbd->extra) { in atkbd_set_leds()
575 if (ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_EX_SETLEDS)) in atkbd_set_leds()
590 struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); in atkbd_event_work() local
592 mutex_lock(&atkbd->mutex); in atkbd_event_work()
594 if (!atkbd->enabled) { in atkbd_event_work()
601 schedule_delayed_work(&atkbd->event_work, in atkbd_event_work()
604 if (test_and_clear_bit(ATKBD_LED_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
605 atkbd_set_leds(atkbd); in atkbd_event_work()
607 if (test_and_clear_bit(ATKBD_REP_EVENT_BIT, &atkbd->event_mask)) in atkbd_event_work()
608 atkbd_set_repeat_rate(atkbd); in atkbd_event_work()
611 mutex_unlock(&atkbd->mutex); in atkbd_event_work()
618 static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit) in atkbd_schedule_event_work() argument
622 if (time_after(jiffies, atkbd->event_jiffies + delay)) in atkbd_schedule_event_work()
625 atkbd->event_jiffies = jiffies; in atkbd_schedule_event_work()
626 set_bit(event_bit, &atkbd->event_mask); in atkbd_schedule_event_work()
628 schedule_delayed_work(&atkbd->event_work, delay); in atkbd_schedule_event_work()
640 struct atkbd *atkbd = input_get_drvdata(dev); in atkbd_event() local
642 if (!atkbd->write) in atkbd_event()
648 atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT); in atkbd_event()
652 if (!atkbd->softrepeat) in atkbd_event()
653 atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT); in atkbd_event()
666 static inline void atkbd_enable(struct atkbd *atkbd) in atkbd_enable() argument
668 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_enable()
669 atkbd->enabled = true; in atkbd_enable()
670 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_enable()
678 static inline void atkbd_disable(struct atkbd *atkbd) in atkbd_disable() argument
680 serio_pause_rx(atkbd->ps2dev.serio); in atkbd_disable()
681 atkbd->enabled = false; in atkbd_disable()
682 serio_continue_rx(atkbd->ps2dev.serio); in atkbd_disable()
685 static int atkbd_activate(struct atkbd *atkbd) in atkbd_activate() argument
687 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_activate()
708 static void atkbd_deactivate(struct atkbd *atkbd) in atkbd_deactivate() argument
710 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_deactivate()
722 static int atkbd_probe(struct atkbd *atkbd) in atkbd_probe() argument
724 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_probe()
757 atkbd->id = 0xabba; in atkbd_probe()
764 atkbd->id = (param[0] << 8) | param[1]; in atkbd_probe()
766 if (atkbd->id == 0xaca1 && atkbd->translated) { in atkbd_probe()
778 atkbd_deactivate(atkbd); in atkbd_probe()
789 static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra) in atkbd_select_set() argument
791 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_select_set()
794 atkbd->extra = false; in atkbd_select_set()
801 if (atkbd->translated) in atkbd_select_set()
804 if (atkbd->id == 0xaca1) { in atkbd_select_set()
813 atkbd->extra = true; in atkbd_select_set()
827 atkbd->id = param[0] << 8 | param[1]; in atkbd_select_set()
850 static int atkbd_reset_state(struct atkbd *atkbd) in atkbd_reset_state() argument
852 struct ps2dev *ps2dev = &atkbd->ps2dev; in atkbd_reset_state()
881 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_cleanup() local
883 atkbd_disable(atkbd); in atkbd_cleanup()
884 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_DEF); in atkbd_cleanup()
894 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_disconnect() local
898 atkbd_disable(atkbd); in atkbd_disconnect()
900 input_unregister_device(atkbd->dev); in atkbd_disconnect()
908 cancel_delayed_work_sync(&atkbd->event_work); in atkbd_disconnect()
912 kfree(atkbd); in atkbd_disconnect()
918 static void atkbd_apply_forced_release_keylist(struct atkbd* atkbd, in atkbd_apply_forced_release_keylist() argument
924 if (atkbd->set == 2) in atkbd_apply_forced_release_keylist()
926 __set_bit(keys[i], atkbd->force_release_mask); in atkbd_apply_forced_release_keylist()
985 static unsigned int atkbd_oqo_01plus_scancode_fixup(struct atkbd *atkbd, in atkbd_oqo_01plus_scancode_fixup() argument
988 if (atkbd->translated && atkbd->emul == 1 && in atkbd_oqo_01plus_scancode_fixup()
990 atkbd->emul = 0; in atkbd_oqo_01plus_scancode_fixup()
1002 static void atkbd_set_keycode_table(struct atkbd *atkbd) in atkbd_set_keycode_table() argument
1007 memset(atkbd->keycode, 0, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1008 bitmap_zero(atkbd->force_release_mask, ATKBD_KEYMAP_SIZE); in atkbd_set_keycode_table()
1010 if (atkbd->translated) { in atkbd_set_keycode_table()
1013 atkbd->keycode[i] = atkbd_set2_keycode[scancode]; in atkbd_set_keycode_table()
1014 atkbd->keycode[i | 0x80] = atkbd_set2_keycode[scancode | 0x80]; in atkbd_set_keycode_table()
1015 if (atkbd->scroll) in atkbd_set_keycode_table()
1018 atkbd->keycode[i | 0x80] = atkbd_scroll_keys[j].keycode; in atkbd_set_keycode_table()
1020 } else if (atkbd->set == 3) { in atkbd_set_keycode_table()
1021 memcpy(atkbd->keycode, atkbd_set3_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1023 memcpy(atkbd->keycode, atkbd_set2_keycode, sizeof(atkbd->keycode)); in atkbd_set_keycode_table()
1025 if (atkbd->scroll) in atkbd_set_keycode_table()
1028 atkbd->keycode[scancode] = atkbd_scroll_keys[i].keycode; in atkbd_set_keycode_table()
1036 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANGEUL); in atkbd_set_keycode_table()
1037 atkbd->keycode[scancode] = KEY_HANGEUL; in atkbd_set_keycode_table()
1038 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1040 scancode = atkbd_compat_scancode(atkbd, ATKBD_RET_HANJA); in atkbd_set_keycode_table()
1041 atkbd->keycode[scancode] = KEY_HANJA; in atkbd_set_keycode_table()
1042 __set_bit(scancode, atkbd->force_release_mask); in atkbd_set_keycode_table()
1048 atkbd_platform_fixup(atkbd, atkbd_platform_fixup_data); in atkbd_set_keycode_table()
1055 static void atkbd_set_device_attrs(struct atkbd *atkbd) in atkbd_set_device_attrs() argument
1057 struct input_dev *input_dev = atkbd->dev; in atkbd_set_device_attrs()
1060 if (atkbd->extra) in atkbd_set_device_attrs()
1061 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1064 snprintf(atkbd->name, sizeof(atkbd->name), in atkbd_set_device_attrs()
1066 atkbd->translated ? "Translated" : "Raw", atkbd->set); in atkbd_set_device_attrs()
1068 snprintf(atkbd->phys, sizeof(atkbd->phys), in atkbd_set_device_attrs()
1069 "%s/input0", atkbd->ps2dev.serio->phys); in atkbd_set_device_attrs()
1071 input_dev->name = atkbd->name; in atkbd_set_device_attrs()
1072 input_dev->phys = atkbd->phys; in atkbd_set_device_attrs()
1075 input_dev->id.product = atkbd->translated ? 1 : atkbd->set; in atkbd_set_device_attrs()
1076 input_dev->id.version = atkbd->id; in atkbd_set_device_attrs()
1078 input_dev->dev.parent = &atkbd->ps2dev.serio->dev; in atkbd_set_device_attrs()
1080 input_set_drvdata(input_dev, atkbd); in atkbd_set_device_attrs()
1085 if (atkbd->write) { in atkbd_set_device_attrs()
1091 if (atkbd->extra) in atkbd_set_device_attrs()
1096 if (!atkbd->softrepeat) { in atkbd_set_device_attrs()
1101 input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) : in atkbd_set_device_attrs()
1104 if (atkbd->scroll) { in atkbd_set_device_attrs()
1111 input_dev->keycode = atkbd->keycode; in atkbd_set_device_attrs()
1116 if (atkbd->keycode[i] != KEY_RESERVED && in atkbd_set_device_attrs()
1117 atkbd->keycode[i] != ATKBD_KEY_NULL && in atkbd_set_device_attrs()
1118 atkbd->keycode[i] < ATKBD_SPECIAL) { in atkbd_set_device_attrs()
1119 __set_bit(atkbd->keycode[i], input_dev->keybit); in atkbd_set_device_attrs()
1133 struct atkbd *atkbd; in atkbd_connect() local
1137 atkbd = kzalloc(sizeof(struct atkbd), GFP_KERNEL); in atkbd_connect()
1139 if (!atkbd || !dev) in atkbd_connect()
1142 atkbd->dev = dev; in atkbd_connect()
1143 ps2_init(&atkbd->ps2dev, serio); in atkbd_connect()
1144 INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); in atkbd_connect()
1145 mutex_init(&atkbd->mutex); in atkbd_connect()
1150 atkbd->translated = true; in atkbd_connect()
1155 atkbd->write = true; in atkbd_connect()
1159 atkbd->softraw = atkbd_softraw; in atkbd_connect()
1160 atkbd->softrepeat = atkbd_softrepeat; in atkbd_connect()
1161 atkbd->scroll = atkbd_scroll; in atkbd_connect()
1163 if (atkbd->softrepeat) in atkbd_connect()
1164 atkbd->softraw = true; in atkbd_connect()
1166 serio_set_drvdata(serio, atkbd); in atkbd_connect()
1172 if (atkbd->write) { in atkbd_connect()
1174 if (atkbd_probe(atkbd)) { in atkbd_connect()
1179 atkbd->set = atkbd_select_set(atkbd, atkbd_set, atkbd_extra); in atkbd_connect()
1180 atkbd_reset_state(atkbd); in atkbd_connect()
1183 atkbd->set = 2; in atkbd_connect()
1184 atkbd->id = 0xab00; in atkbd_connect()
1187 atkbd_set_keycode_table(atkbd); in atkbd_connect()
1188 atkbd_set_device_attrs(atkbd); in atkbd_connect()
1194 atkbd_enable(atkbd); in atkbd_connect()
1196 atkbd_activate(atkbd); in atkbd_connect()
1198 err = input_register_device(atkbd->dev); in atkbd_connect()
1208 kfree(atkbd); in atkbd_connect()
1219 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_reconnect() local
1223 if (!atkbd || !drv) { in atkbd_reconnect()
1229 mutex_lock(&atkbd->mutex); in atkbd_reconnect()
1231 atkbd_disable(atkbd); in atkbd_reconnect()
1233 if (atkbd->write) { in atkbd_reconnect()
1234 if (atkbd_probe(atkbd)) in atkbd_reconnect()
1237 if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) in atkbd_reconnect()
1247 atkbd_set_leds(atkbd); in atkbd_reconnect()
1248 if (!atkbd->softrepeat) in atkbd_reconnect()
1249 atkbd_set_repeat_rate(atkbd); in atkbd_reconnect()
1257 atkbd->xl_bit = 0; in atkbd_reconnect()
1258 atkbd->emul = 0; in atkbd_reconnect()
1260 atkbd_enable(atkbd); in atkbd_reconnect()
1261 if (atkbd->write) in atkbd_reconnect()
1262 atkbd_activate(atkbd); in atkbd_reconnect()
1267 mutex_unlock(&atkbd->mutex); in atkbd_reconnect()
1309 ssize_t (*handler)(struct atkbd *, char *)) in atkbd_attr_show_helper() argument
1312 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_attr_show_helper() local
1314 return handler(atkbd, buf); in atkbd_attr_show_helper()
1318 ssize_t (*handler)(struct atkbd *, const char *, size_t)) in atkbd_attr_set_helper() argument
1321 struct atkbd *atkbd = serio_get_drvdata(serio); in atkbd_attr_set_helper() local
1324 retval = mutex_lock_interruptible(&atkbd->mutex); in atkbd_attr_set_helper()
1328 atkbd_disable(atkbd); in atkbd_attr_set_helper()
1329 retval = handler(atkbd, buf, count); in atkbd_attr_set_helper()
1330 atkbd_enable(atkbd); in atkbd_attr_set_helper()
1332 mutex_unlock(&atkbd->mutex); in atkbd_attr_set_helper()
1337 static ssize_t atkbd_show_extra(struct atkbd *atkbd, char *buf) in atkbd_show_extra() argument
1339 return sprintf(buf, "%d\n", atkbd->extra ? 1 : 0); in atkbd_show_extra()
1342 static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_extra() argument
1350 if (!atkbd->write) in atkbd_set_extra()
1360 if (atkbd->extra != value) { in atkbd_set_extra()
1366 old_dev = atkbd->dev; in atkbd_set_extra()
1367 old_extra = atkbd->extra; in atkbd_set_extra()
1368 old_set = atkbd->set; in atkbd_set_extra()
1374 atkbd->dev = new_dev; in atkbd_set_extra()
1375 atkbd->set = atkbd_select_set(atkbd, atkbd->set, value); in atkbd_set_extra()
1376 atkbd_reset_state(atkbd); in atkbd_set_extra()
1377 atkbd_activate(atkbd); in atkbd_set_extra()
1378 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1379 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1381 err = input_register_device(atkbd->dev); in atkbd_set_extra()
1385 atkbd->dev = old_dev; in atkbd_set_extra()
1386 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_extra()
1387 atkbd_set_keycode_table(atkbd); in atkbd_set_extra()
1388 atkbd_set_device_attrs(atkbd); in atkbd_set_extra()
1398 static ssize_t atkbd_show_force_release(struct atkbd *atkbd, char *buf) in atkbd_show_force_release() argument
1401 ATKBD_KEYMAP_SIZE, atkbd->force_release_mask); in atkbd_show_force_release()
1409 static ssize_t atkbd_set_force_release(struct atkbd *atkbd, in atkbd_set_force_release() argument
1420 memcpy(atkbd->force_release_mask, new_mask, sizeof(atkbd->force_release_mask)); in atkbd_set_force_release()
1425 static ssize_t atkbd_show_scroll(struct atkbd *atkbd, char *buf) in atkbd_show_scroll() argument
1427 return sprintf(buf, "%d\n", atkbd->scroll ? 1 : 0); in atkbd_show_scroll()
1430 static ssize_t atkbd_set_scroll(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_scroll() argument
1444 if (atkbd->scroll != value) { in atkbd_set_scroll()
1445 old_dev = atkbd->dev; in atkbd_set_scroll()
1446 old_scroll = atkbd->scroll; in atkbd_set_scroll()
1452 atkbd->dev = new_dev; in atkbd_set_scroll()
1453 atkbd->scroll = value; in atkbd_set_scroll()
1454 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1455 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1457 err = input_register_device(atkbd->dev); in atkbd_set_scroll()
1461 atkbd->scroll = old_scroll; in atkbd_set_scroll()
1462 atkbd->dev = old_dev; in atkbd_set_scroll()
1463 atkbd_set_keycode_table(atkbd); in atkbd_set_scroll()
1464 atkbd_set_device_attrs(atkbd); in atkbd_set_scroll()
1473 static ssize_t atkbd_show_set(struct atkbd *atkbd, char *buf) in atkbd_show_set() argument
1475 return sprintf(buf, "%d\n", atkbd->set); in atkbd_show_set()
1478 static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_set() argument
1486 if (!atkbd->write) in atkbd_set_set()
1496 if (atkbd->set != value) { in atkbd_set_set()
1497 old_dev = atkbd->dev; in atkbd_set_set()
1498 old_extra = atkbd->extra; in atkbd_set_set()
1499 old_set = atkbd->set; in atkbd_set_set()
1505 atkbd->dev = new_dev; in atkbd_set_set()
1506 atkbd->set = atkbd_select_set(atkbd, value, atkbd->extra); in atkbd_set_set()
1507 atkbd_reset_state(atkbd); in atkbd_set_set()
1508 atkbd_activate(atkbd); in atkbd_set_set()
1509 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1510 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1512 err = input_register_device(atkbd->dev); in atkbd_set_set()
1516 atkbd->dev = old_dev; in atkbd_set_set()
1517 atkbd->set = atkbd_select_set(atkbd, old_set, old_extra); in atkbd_set_set()
1518 atkbd_set_keycode_table(atkbd); in atkbd_set_set()
1519 atkbd_set_device_attrs(atkbd); in atkbd_set_set()
1528 static ssize_t atkbd_show_softrepeat(struct atkbd *atkbd, char *buf) in atkbd_show_softrepeat() argument
1530 return sprintf(buf, "%d\n", atkbd->softrepeat ? 1 : 0); in atkbd_show_softrepeat()
1533 static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softrepeat() argument
1540 if (!atkbd->write) in atkbd_set_softrepeat()
1550 if (atkbd->softrepeat != value) { in atkbd_set_softrepeat()
1551 old_dev = atkbd->dev; in atkbd_set_softrepeat()
1552 old_softrepeat = atkbd->softrepeat; in atkbd_set_softrepeat()
1553 old_softraw = atkbd->softraw; in atkbd_set_softrepeat()
1559 atkbd->dev = new_dev; in atkbd_set_softrepeat()
1560 atkbd->softrepeat = value; in atkbd_set_softrepeat()
1561 if (atkbd->softrepeat) in atkbd_set_softrepeat()
1562 atkbd->softraw = true; in atkbd_set_softrepeat()
1563 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1565 err = input_register_device(atkbd->dev); in atkbd_set_softrepeat()
1569 atkbd->dev = old_dev; in atkbd_set_softrepeat()
1570 atkbd->softrepeat = old_softrepeat; in atkbd_set_softrepeat()
1571 atkbd->softraw = old_softraw; in atkbd_set_softrepeat()
1572 atkbd_set_device_attrs(atkbd); in atkbd_set_softrepeat()
1582 static ssize_t atkbd_show_softraw(struct atkbd *atkbd, char *buf) in atkbd_show_softraw() argument
1584 return sprintf(buf, "%d\n", atkbd->softraw ? 1 : 0); in atkbd_show_softraw()
1587 static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t count) in atkbd_set_softraw() argument
1601 if (atkbd->softraw != value) { in atkbd_set_softraw()
1602 old_dev = atkbd->dev; in atkbd_set_softraw()
1603 old_softraw = atkbd->softraw; in atkbd_set_softraw()
1609 atkbd->dev = new_dev; in atkbd_set_softraw()
1610 atkbd->softraw = value; in atkbd_set_softraw()
1611 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1613 err = input_register_device(atkbd->dev); in atkbd_set_softraw()
1617 atkbd->dev = old_dev; in atkbd_set_softraw()
1618 atkbd->softraw = old_softraw; in atkbd_set_softraw()
1619 atkbd_set_device_attrs(atkbd); in atkbd_set_softraw()
1628 static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf) in atkbd_show_err_count() argument
1630 return sprintf(buf, "%lu\n", atkbd->err_count); in atkbd_show_err_count()