joydev 65 drivers/input/joydev.c struct joydev *joydev; joydev 92 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 101 drivers/input/joydev.c if (client->startup == joydev->nabs + joydev->nkey) { joydev 116 drivers/input/joydev.c struct joydev *joydev = handle->private; joydev 126 drivers/input/joydev.c event.number = joydev->keymap[code - BTN_MISC]; joydev 132 drivers/input/joydev.c event.number = joydev->absmap[code]; joydev 134 drivers/input/joydev.c &joydev->corr[event.number]); joydev 135 drivers/input/joydev.c if (event.value == joydev->abs[event.number]) joydev 137 drivers/input/joydev.c joydev->abs[event.number] = event.value; joydev 147 drivers/input/joydev.c list_for_each_entry_rcu(client, &joydev->client_list, node) joydev 151 drivers/input/joydev.c wake_up_interruptible(&joydev->wait); joydev 163 drivers/input/joydev.c struct joydev *joydev = container_of(dev, struct joydev, dev); joydev 165 drivers/input/joydev.c input_put_device(joydev->handle.dev); joydev 166 drivers/input/joydev.c kfree(joydev); joydev 169 drivers/input/joydev.c static void joydev_attach_client(struct joydev *joydev, joydev 172 drivers/input/joydev.c spin_lock(&joydev->client_lock); joydev 173 drivers/input/joydev.c list_add_tail_rcu(&client->node, &joydev->client_list); joydev 174 drivers/input/joydev.c spin_unlock(&joydev->client_lock); joydev 177 drivers/input/joydev.c static void joydev_detach_client(struct joydev *joydev, joydev 180 drivers/input/joydev.c spin_lock(&joydev->client_lock); joydev 182 drivers/input/joydev.c spin_unlock(&joydev->client_lock); joydev 186 drivers/input/joydev.c static void joydev_refresh_state(struct joydev *joydev) joydev 188 drivers/input/joydev.c struct input_dev *dev = joydev->handle.dev; joydev 191 drivers/input/joydev.c for (i = 0; i < joydev->nabs; i++) { joydev 192 drivers/input/joydev.c val = input_abs_get_val(dev, joydev->abspam[i]); joydev 193 drivers/input/joydev.c joydev->abs[i] = joydev_correct(val, &joydev->corr[i]); joydev 197 drivers/input/joydev.c static int joydev_open_device(struct joydev *joydev) joydev 201 drivers/input/joydev.c retval = mutex_lock_interruptible(&joydev->mutex); joydev 205 drivers/input/joydev.c if (!joydev->exist) joydev 207 drivers/input/joydev.c else if (!joydev->open++) { joydev 208 drivers/input/joydev.c retval = input_open_device(&joydev->handle); joydev 210 drivers/input/joydev.c joydev->open--; joydev 212 drivers/input/joydev.c joydev_refresh_state(joydev); joydev 215 drivers/input/joydev.c mutex_unlock(&joydev->mutex); joydev 219 drivers/input/joydev.c static void joydev_close_device(struct joydev *joydev) joydev 221 drivers/input/joydev.c mutex_lock(&joydev->mutex); joydev 223 drivers/input/joydev.c if (joydev->exist && !--joydev->open) joydev 224 drivers/input/joydev.c input_close_device(&joydev->handle); joydev 226 drivers/input/joydev.c mutex_unlock(&joydev->mutex); joydev 233 drivers/input/joydev.c static void joydev_hangup(struct joydev *joydev) joydev 237 drivers/input/joydev.c spin_lock(&joydev->client_lock); joydev 238 drivers/input/joydev.c list_for_each_entry(client, &joydev->client_list, node) joydev 240 drivers/input/joydev.c spin_unlock(&joydev->client_lock); joydev 242 drivers/input/joydev.c wake_up_interruptible(&joydev->wait); joydev 248 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 250 drivers/input/joydev.c joydev_detach_client(joydev, client); joydev 253 drivers/input/joydev.c joydev_close_device(joydev); joydev 260 drivers/input/joydev.c struct joydev *joydev = joydev 261 drivers/input/joydev.c container_of(inode->i_cdev, struct joydev, cdev); joydev 270 drivers/input/joydev.c client->joydev = joydev; joydev 271 drivers/input/joydev.c joydev_attach_client(joydev, client); joydev 273 drivers/input/joydev.c error = joydev_open_device(joydev); joydev 283 drivers/input/joydev.c joydev_detach_client(joydev, client); joydev 292 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 297 drivers/input/joydev.c have_event = client->startup < joydev->nabs + joydev->nkey; joydev 302 drivers/input/joydev.c if (client->startup < joydev->nkey) { joydev 305 drivers/input/joydev.c event->value = !!test_bit(joydev->keypam[event->number], joydev 309 drivers/input/joydev.c event->number = client->startup - joydev->nkey; joydev 310 drivers/input/joydev.c event->value = joydev->abs[event->number]; joydev 345 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 354 drivers/input/joydev.c for (data.buttons = i = 0; i < 32 && i < joydev->nkey; i++) joydev 356 drivers/input/joydev.c test_bit(joydev->keypam[i], input->key) ? (1 << i) : 0; joydev 357 drivers/input/joydev.c data.x = (joydev->abs[0] / 256 + 128) >> joydev->glue.JS_CORR.x; joydev 358 drivers/input/joydev.c data.y = (joydev->abs[1] / 256 + 128) >> joydev->glue.JS_CORR.y; joydev 378 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 380 drivers/input/joydev.c return client->startup < joydev->nabs + joydev->nkey || joydev 388 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 389 drivers/input/joydev.c struct input_dev *input = joydev->handle.dev; joydev 393 drivers/input/joydev.c if (!joydev->exist) joydev 405 drivers/input/joydev.c retval = wait_event_interruptible(joydev->wait, joydev 406 drivers/input/joydev.c !joydev->exist || joydev_data_pending(client)); joydev 410 drivers/input/joydev.c if (!joydev->exist) joydev 438 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 440 drivers/input/joydev.c poll_wait(file, &joydev->wait, wait); joydev 442 drivers/input/joydev.c (joydev->exist ? 0 : (EPOLLHUP | EPOLLERR)); joydev 445 drivers/input/joydev.c static int joydev_handle_JSIOCSAXMAP(struct joydev *joydev, joydev 452 drivers/input/joydev.c len = min(len, sizeof(joydev->abspam)); joydev 459 drivers/input/joydev.c for (i = 0; i < joydev->nabs; i++) { joydev 466 drivers/input/joydev.c memcpy(joydev->abspam, abspam, len); joydev 468 drivers/input/joydev.c for (i = 0; i < joydev->nabs; i++) joydev 469 drivers/input/joydev.c joydev->absmap[joydev->abspam[i]] = i; joydev 476 drivers/input/joydev.c static int joydev_handle_JSIOCSBTNMAP(struct joydev *joydev, joydev 483 drivers/input/joydev.c len = min(len, sizeof(joydev->keypam)); joydev 490 drivers/input/joydev.c for (i = 0; i < joydev->nkey; i++) { joydev 497 drivers/input/joydev.c memcpy(joydev->keypam, keypam, len); joydev 499 drivers/input/joydev.c for (i = 0; i < joydev->nkey; i++) joydev 500 drivers/input/joydev.c joydev->keymap[keypam[i] - BTN_MISC] = i; joydev 508 drivers/input/joydev.c static int joydev_ioctl_common(struct joydev *joydev, joydev 511 drivers/input/joydev.c struct input_dev *dev = joydev->handle.dev; joydev 520 drivers/input/joydev.c return copy_from_user(&joydev->glue.JS_CORR, argp, joydev 521 drivers/input/joydev.c sizeof(joydev->glue.JS_CORR)) ? -EFAULT : 0; joydev 524 drivers/input/joydev.c return copy_to_user(argp, &joydev->glue.JS_CORR, joydev 525 drivers/input/joydev.c sizeof(joydev->glue.JS_CORR)) ? -EFAULT : 0; joydev 528 drivers/input/joydev.c return get_user(joydev->glue.JS_TIMEOUT, (s32 __user *) argp); joydev 531 drivers/input/joydev.c return put_user(joydev->glue.JS_TIMEOUT, (s32 __user *) argp); joydev 537 drivers/input/joydev.c return put_user(joydev->nabs, (__u8 __user *) argp); joydev 540 drivers/input/joydev.c return put_user(joydev->nkey, (__u8 __user *) argp); joydev 543 drivers/input/joydev.c if (copy_from_user(joydev->corr, argp, joydev 544 drivers/input/joydev.c sizeof(joydev->corr[0]) * joydev->nabs)) joydev 547 drivers/input/joydev.c for (i = 0; i < joydev->nabs; i++) { joydev 548 drivers/input/joydev.c int val = input_abs_get_val(dev, joydev->abspam[i]); joydev 549 drivers/input/joydev.c joydev->abs[i] = joydev_correct(val, &joydev->corr[i]); joydev 554 drivers/input/joydev.c return copy_to_user(argp, joydev->corr, joydev 555 drivers/input/joydev.c sizeof(joydev->corr[0]) * joydev->nabs) ? -EFAULT : 0; joydev 567 drivers/input/joydev.c return joydev_handle_JSIOCSAXMAP(joydev, argp, _IOC_SIZE(cmd)); joydev 570 drivers/input/joydev.c len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->abspam)); joydev 571 drivers/input/joydev.c return copy_to_user(argp, joydev->abspam, len) ? -EFAULT : len; joydev 574 drivers/input/joydev.c return joydev_handle_JSIOCSBTNMAP(joydev, argp, _IOC_SIZE(cmd)); joydev 577 drivers/input/joydev.c len = min_t(size_t, _IOC_SIZE(cmd), sizeof(joydev->keypam)); joydev 578 drivers/input/joydev.c return copy_to_user(argp, joydev->keypam, len) ? -EFAULT : len; joydev 597 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 603 drivers/input/joydev.c retval = mutex_lock_interruptible(&joydev->mutex); joydev 607 drivers/input/joydev.c if (!joydev->exist) { joydev 617 drivers/input/joydev.c joydev->glue.JS_TIMELIMIT = tmp32; joydev 621 drivers/input/joydev.c tmp32 = joydev->glue.JS_TIMELIMIT; joydev 629 drivers/input/joydev.c joydev->glue.JS_TIMEOUT = ds32.JS_TIMEOUT; joydev 630 drivers/input/joydev.c joydev->glue.BUSY = ds32.BUSY; joydev 631 drivers/input/joydev.c joydev->glue.JS_EXPIRETIME = ds32.JS_EXPIRETIME; joydev 632 drivers/input/joydev.c joydev->glue.JS_TIMELIMIT = ds32.JS_TIMELIMIT; joydev 633 drivers/input/joydev.c joydev->glue.JS_SAVE = ds32.JS_SAVE; joydev 634 drivers/input/joydev.c joydev->glue.JS_CORR = ds32.JS_CORR; joydev 639 drivers/input/joydev.c ds32.JS_TIMEOUT = joydev->glue.JS_TIMEOUT; joydev 640 drivers/input/joydev.c ds32.BUSY = joydev->glue.BUSY; joydev 641 drivers/input/joydev.c ds32.JS_EXPIRETIME = joydev->glue.JS_EXPIRETIME; joydev 642 drivers/input/joydev.c ds32.JS_TIMELIMIT = joydev->glue.JS_TIMELIMIT; joydev 643 drivers/input/joydev.c ds32.JS_SAVE = joydev->glue.JS_SAVE; joydev 644 drivers/input/joydev.c ds32.JS_CORR = joydev->glue.JS_CORR; joydev 650 drivers/input/joydev.c retval = joydev_ioctl_common(joydev, cmd, argp); joydev 655 drivers/input/joydev.c mutex_unlock(&joydev->mutex); joydev 664 drivers/input/joydev.c struct joydev *joydev = client->joydev; joydev 668 drivers/input/joydev.c retval = mutex_lock_interruptible(&joydev->mutex); joydev 672 drivers/input/joydev.c if (!joydev->exist) { joydev 680 drivers/input/joydev.c retval = get_user(joydev->glue.JS_TIMELIMIT, joydev 685 drivers/input/joydev.c retval = put_user(joydev->glue.JS_TIMELIMIT, joydev 690 drivers/input/joydev.c retval = copy_from_user(&joydev->glue, argp, joydev 691 drivers/input/joydev.c sizeof(joydev->glue)) ? -EFAULT : 0; joydev 695 drivers/input/joydev.c retval = copy_to_user(argp, &joydev->glue, joydev 696 drivers/input/joydev.c sizeof(joydev->glue)) ? -EFAULT : 0; joydev 700 drivers/input/joydev.c retval = joydev_ioctl_common(joydev, cmd, argp); joydev 704 drivers/input/joydev.c mutex_unlock(&joydev->mutex); joydev 727 drivers/input/joydev.c static void joydev_mark_dead(struct joydev *joydev) joydev 729 drivers/input/joydev.c mutex_lock(&joydev->mutex); joydev 730 drivers/input/joydev.c joydev->exist = false; joydev 731 drivers/input/joydev.c mutex_unlock(&joydev->mutex); joydev 734 drivers/input/joydev.c static void joydev_cleanup(struct joydev *joydev) joydev 736 drivers/input/joydev.c struct input_handle *handle = &joydev->handle; joydev 738 drivers/input/joydev.c joydev_mark_dead(joydev); joydev 739 drivers/input/joydev.c joydev_hangup(joydev); joydev 742 drivers/input/joydev.c if (joydev->open) joydev 902 drivers/input/joydev.c struct joydev *joydev; joydev 913 drivers/input/joydev.c joydev = kzalloc(sizeof(struct joydev), GFP_KERNEL); joydev 914 drivers/input/joydev.c if (!joydev) { joydev 919 drivers/input/joydev.c INIT_LIST_HEAD(&joydev->client_list); joydev 920 drivers/input/joydev.c spin_lock_init(&joydev->client_lock); joydev 921 drivers/input/joydev.c mutex_init(&joydev->mutex); joydev 922 drivers/input/joydev.c init_waitqueue_head(&joydev->wait); joydev 923 drivers/input/joydev.c joydev->exist = true; joydev 929 drivers/input/joydev.c dev_set_name(&joydev->dev, "js%d", dev_no); joydev 931 drivers/input/joydev.c joydev->handle.dev = input_get_device(dev); joydev 932 drivers/input/joydev.c joydev->handle.name = dev_name(&joydev->dev); joydev 933 drivers/input/joydev.c joydev->handle.handler = handler; joydev 934 drivers/input/joydev.c joydev->handle.private = joydev; joydev 937 drivers/input/joydev.c joydev->absmap[i] = joydev->nabs; joydev 938 drivers/input/joydev.c joydev->abspam[joydev->nabs] = i; joydev 939 drivers/input/joydev.c joydev->nabs++; joydev 944 drivers/input/joydev.c joydev->keymap[i] = joydev->nkey; joydev 945 drivers/input/joydev.c joydev->keypam[joydev->nkey] = i + BTN_MISC; joydev 946 drivers/input/joydev.c joydev->nkey++; joydev 951 drivers/input/joydev.c joydev->keymap[i] = joydev->nkey; joydev 952 drivers/input/joydev.c joydev->keypam[joydev->nkey] = i + BTN_MISC; joydev 953 drivers/input/joydev.c joydev->nkey++; joydev 956 drivers/input/joydev.c for (i = 0; i < joydev->nabs; i++) { joydev 957 drivers/input/joydev.c j = joydev->abspam[i]; joydev 959 drivers/input/joydev.c joydev->corr[i].type = JS_CORR_NONE; joydev 962 drivers/input/joydev.c joydev->corr[i].type = JS_CORR_BROKEN; joydev 963 drivers/input/joydev.c joydev->corr[i].prec = input_abs_get_fuzz(dev, j); joydev 966 drivers/input/joydev.c joydev->corr[i].coef[0] = t - input_abs_get_flat(dev, j); joydev 967 drivers/input/joydev.c joydev->corr[i].coef[1] = t + input_abs_get_flat(dev, j); joydev 972 drivers/input/joydev.c joydev->corr[i].coef[2] = (1 << 29) / t; joydev 973 drivers/input/joydev.c joydev->corr[i].coef[3] = (1 << 29) / t; joydev 977 drivers/input/joydev.c joydev->dev.devt = MKDEV(INPUT_MAJOR, minor); joydev 978 drivers/input/joydev.c joydev->dev.class = &input_class; joydev 979 drivers/input/joydev.c joydev->dev.parent = &dev->dev; joydev 980 drivers/input/joydev.c joydev->dev.release = joydev_free; joydev 981 drivers/input/joydev.c device_initialize(&joydev->dev); joydev 983 drivers/input/joydev.c error = input_register_handle(&joydev->handle); joydev 987 drivers/input/joydev.c cdev_init(&joydev->cdev, &joydev_fops); joydev 989 drivers/input/joydev.c error = cdev_device_add(&joydev->cdev, &joydev->dev); joydev 996 drivers/input/joydev.c joydev_cleanup(joydev); joydev 997 drivers/input/joydev.c input_unregister_handle(&joydev->handle); joydev 999 drivers/input/joydev.c put_device(&joydev->dev); joydev 1007 drivers/input/joydev.c struct joydev *joydev = handle->private; joydev 1009 drivers/input/joydev.c cdev_device_del(&joydev->cdev, &joydev->dev); joydev 1010 drivers/input/joydev.c joydev_cleanup(joydev); joydev 1011 drivers/input/joydev.c input_free_minor(MINOR(joydev->dev.devt)); joydev 1013 drivers/input/joydev.c put_device(&joydev->dev);