hidg 246 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = file->private_data; hidg 258 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->read_spinlock, flags); hidg 260 drivers/usb/gadget/function/f_hid.c #define READ_COND (!list_empty(&hidg->completed_out_req)) hidg 264 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->read_spinlock, flags); hidg 268 drivers/usb/gadget/function/f_hid.c if (wait_event_interruptible(hidg->read_queue, READ_COND)) hidg 271 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->read_spinlock, flags); hidg 275 drivers/usb/gadget/function/f_hid.c list = list_first_entry(&hidg->completed_out_req, hidg 286 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->read_spinlock, flags); hidg 301 drivers/usb/gadget/function/f_hid.c req->length = hidg->report_length; hidg 302 drivers/usb/gadget/function/f_hid.c ret = usb_ep_queue(hidg->out_ep, req, GFP_KERNEL); hidg 304 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->out_ep, req); hidg 308 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->read_spinlock, flags); hidg 309 drivers/usb/gadget/function/f_hid.c list_add(&list->list, &hidg->completed_out_req); hidg 310 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->read_spinlock, flags); hidg 312 drivers/usb/gadget/function/f_hid.c wake_up(&hidg->read_queue); hidg 320 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = (struct f_hidg *)ep->driver_data; hidg 324 drivers/usb/gadget/function/f_hid.c ERROR(hidg->func.config->cdev, hidg 328 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 329 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 0; hidg 330 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 331 drivers/usb/gadget/function/f_hid.c wake_up(&hidg->write_queue); hidg 337 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = file->private_data; hidg 345 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 347 drivers/usb/gadget/function/f_hid.c #define WRITE_COND (!hidg->write_pending) hidg 351 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 356 drivers/usb/gadget/function/f_hid.c hidg->write_queue, WRITE_COND)) hidg 359 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 362 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 1; hidg 363 drivers/usb/gadget/function/f_hid.c req = hidg->req; hidg 364 drivers/usb/gadget/function/f_hid.c count = min_t(unsigned, count, hidg->report_length); hidg 366 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 370 drivers/usb/gadget/function/f_hid.c ERROR(hidg->func.config->cdev, hidg 376 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 379 drivers/usb/gadget/function/f_hid.c if (!hidg->req) { hidg 380 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->in_ep, req); hidg 392 drivers/usb/gadget/function/f_hid.c req->context = hidg; hidg 394 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 396 drivers/usb/gadget/function/f_hid.c status = usb_ep_queue(hidg->in_ep, req, GFP_ATOMIC); hidg 398 drivers/usb/gadget/function/f_hid.c ERROR(hidg->func.config->cdev, hidg 407 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 408 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 0; hidg 409 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 411 drivers/usb/gadget/function/f_hid.c wake_up(&hidg->write_queue); hidg 418 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = file->private_data; hidg 421 drivers/usb/gadget/function/f_hid.c poll_wait(file, &hidg->read_queue, wait); hidg 422 drivers/usb/gadget/function/f_hid.c poll_wait(file, &hidg->write_queue, wait); hidg 444 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = hidg 447 drivers/usb/gadget/function/f_hid.c fd->private_data = hidg; hidg 463 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = (struct f_hidg *) req->context; hidg 464 drivers/usb/gadget/function/f_hid.c struct usb_composite_dev *cdev = hidg->func.config->cdev; hidg 478 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->read_spinlock, flags); hidg 479 drivers/usb/gadget/function/f_hid.c list_add_tail(&req_list->list, &hidg->completed_out_req); hidg 480 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->read_spinlock, flags); hidg 482 drivers/usb/gadget/function/f_hid.c wake_up(&hidg->read_queue); hidg 499 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = func_to_hidg(f); hidg 518 drivers/usb/gadget/function/f_hid.c length = min_t(unsigned, length, hidg->report_length); hidg 528 drivers/usb/gadget/function/f_hid.c ((u8 *) req->buf)[0] = hidg->protocol; hidg 548 drivers/usb/gadget/function/f_hid.c if (hidg->bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) { hidg 549 drivers/usb/gadget/function/f_hid.c hidg->protocol = value; hidg 565 drivers/usb/gadget/function/f_hid.c cpu_to_le16(hidg->report_desc_length); hidg 576 drivers/usb/gadget/function/f_hid.c hidg->report_desc_length); hidg 577 drivers/usb/gadget/function/f_hid.c memcpy(req->buf, hidg->report_desc, length); hidg 610 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = func_to_hidg(f); hidg 614 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->in_ep); hidg 615 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->out_ep); hidg 617 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->read_spinlock, flags); hidg 618 drivers/usb/gadget/function/f_hid.c list_for_each_entry_safe(list, next, &hidg->completed_out_req, list) { hidg 619 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->out_ep, list->req); hidg 623 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->read_spinlock, flags); hidg 625 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 626 drivers/usb/gadget/function/f_hid.c if (!hidg->write_pending) { hidg 627 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->in_ep, hidg->req); hidg 628 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 1; hidg 631 drivers/usb/gadget/function/f_hid.c hidg->req = NULL; hidg 632 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 638 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = func_to_hidg(f); hidg 645 drivers/usb/gadget/function/f_hid.c if (hidg->in_ep != NULL) { hidg 647 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->in_ep); hidg 650 drivers/usb/gadget/function/f_hid.c hidg->in_ep); hidg 655 drivers/usb/gadget/function/f_hid.c status = usb_ep_enable(hidg->in_ep); hidg 660 drivers/usb/gadget/function/f_hid.c hidg->in_ep->driver_data = hidg; hidg 662 drivers/usb/gadget/function/f_hid.c req_in = hidg_alloc_ep_req(hidg->in_ep, hidg->report_length); hidg 670 drivers/usb/gadget/function/f_hid.c if (hidg->out_ep != NULL) { hidg 672 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->out_ep); hidg 675 drivers/usb/gadget/function/f_hid.c hidg->out_ep); hidg 680 drivers/usb/gadget/function/f_hid.c status = usb_ep_enable(hidg->out_ep); hidg 685 drivers/usb/gadget/function/f_hid.c hidg->out_ep->driver_data = hidg; hidg 690 drivers/usb/gadget/function/f_hid.c for (i = 0; i < hidg->qlen && status == 0; i++) { hidg 692 drivers/usb/gadget/function/f_hid.c hidg_alloc_ep_req(hidg->out_ep, hidg 693 drivers/usb/gadget/function/f_hid.c hidg->report_length); hidg 696 drivers/usb/gadget/function/f_hid.c req->context = hidg; hidg 697 drivers/usb/gadget/function/f_hid.c status = usb_ep_queue(hidg->out_ep, req, hidg 701 drivers/usb/gadget/function/f_hid.c hidg->out_ep->name, status); hidg 702 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->out_ep, req); hidg 711 drivers/usb/gadget/function/f_hid.c if (hidg->in_ep != NULL) { hidg 712 drivers/usb/gadget/function/f_hid.c spin_lock_irqsave(&hidg->write_spinlock, flags); hidg 713 drivers/usb/gadget/function/f_hid.c hidg->req = req_in; hidg 714 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 0; hidg 715 drivers/usb/gadget/function/f_hid.c spin_unlock_irqrestore(&hidg->write_spinlock, flags); hidg 717 drivers/usb/gadget/function/f_hid.c wake_up(&hidg->write_queue); hidg 721 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->out_ep); hidg 724 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->in_ep, req_in); hidg 727 drivers/usb/gadget/function/f_hid.c if (hidg->in_ep) hidg 728 drivers/usb/gadget/function/f_hid.c usb_ep_disable(hidg->in_ep); hidg 747 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = func_to_hidg(f); hidg 771 drivers/usb/gadget/function/f_hid.c hidg->in_ep = ep; hidg 776 drivers/usb/gadget/function/f_hid.c hidg->out_ep = ep; hidg 779 drivers/usb/gadget/function/f_hid.c hidg_interface_desc.bInterfaceSubClass = hidg->bInterfaceSubClass; hidg 780 drivers/usb/gadget/function/f_hid.c hidg_interface_desc.bInterfaceProtocol = hidg->bInterfaceProtocol; hidg 781 drivers/usb/gadget/function/f_hid.c hidg->protocol = HID_REPORT_PROTOCOL; hidg 782 drivers/usb/gadget/function/f_hid.c hidg_ss_in_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 784 drivers/usb/gadget/function/f_hid.c cpu_to_le16(hidg->report_length); hidg 785 drivers/usb/gadget/function/f_hid.c hidg_hs_in_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 786 drivers/usb/gadget/function/f_hid.c hidg_fs_in_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 787 drivers/usb/gadget/function/f_hid.c hidg_ss_out_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 789 drivers/usb/gadget/function/f_hid.c cpu_to_le16(hidg->report_length); hidg 790 drivers/usb/gadget/function/f_hid.c hidg_hs_out_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 791 drivers/usb/gadget/function/f_hid.c hidg_fs_out_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length); hidg 798 drivers/usb/gadget/function/f_hid.c cpu_to_le16(hidg->report_desc_length); hidg 815 drivers/usb/gadget/function/f_hid.c spin_lock_init(&hidg->write_spinlock); hidg 816 drivers/usb/gadget/function/f_hid.c hidg->write_pending = 1; hidg 817 drivers/usb/gadget/function/f_hid.c hidg->req = NULL; hidg 818 drivers/usb/gadget/function/f_hid.c spin_lock_init(&hidg->read_spinlock); hidg 819 drivers/usb/gadget/function/f_hid.c init_waitqueue_head(&hidg->write_queue); hidg 820 drivers/usb/gadget/function/f_hid.c init_waitqueue_head(&hidg->read_queue); hidg 821 drivers/usb/gadget/function/f_hid.c INIT_LIST_HEAD(&hidg->completed_out_req); hidg 824 drivers/usb/gadget/function/f_hid.c cdev_init(&hidg->cdev, &f_hidg_fops); hidg 825 drivers/usb/gadget/function/f_hid.c dev = MKDEV(major, hidg->minor); hidg 826 drivers/usb/gadget/function/f_hid.c status = cdev_add(&hidg->cdev, dev, 1); hidg 831 drivers/usb/gadget/function/f_hid.c "%s%d", "hidg", hidg->minor); hidg 839 drivers/usb/gadget/function/f_hid.c cdev_del(&hidg->cdev); hidg 844 drivers/usb/gadget/function/f_hid.c if (hidg->req != NULL) hidg 845 drivers/usb/gadget/function/f_hid.c free_ep_req(hidg->in_ep, hidg->req); hidg 1063 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg; hidg 1066 drivers/usb/gadget/function/f_hid.c hidg = func_to_hidg(f); hidg 1068 drivers/usb/gadget/function/f_hid.c kfree(hidg->report_desc); hidg 1069 drivers/usb/gadget/function/f_hid.c kfree(hidg); hidg 1077 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg = func_to_hidg(f); hidg 1079 drivers/usb/gadget/function/f_hid.c device_destroy(hidg_class, MKDEV(major, hidg->minor)); hidg 1080 drivers/usb/gadget/function/f_hid.c cdev_del(&hidg->cdev); hidg 1087 drivers/usb/gadget/function/f_hid.c struct f_hidg *hidg; hidg 1091 drivers/usb/gadget/function/f_hid.c hidg = kzalloc(sizeof(*hidg), GFP_KERNEL); hidg 1092 drivers/usb/gadget/function/f_hid.c if (!hidg) hidg 1100 drivers/usb/gadget/function/f_hid.c hidg->minor = opts->minor; hidg 1101 drivers/usb/gadget/function/f_hid.c hidg->bInterfaceSubClass = opts->subclass; hidg 1102 drivers/usb/gadget/function/f_hid.c hidg->bInterfaceProtocol = opts->protocol; hidg 1103 drivers/usb/gadget/function/f_hid.c hidg->report_length = opts->report_length; hidg 1104 drivers/usb/gadget/function/f_hid.c hidg->report_desc_length = opts->report_desc_length; hidg 1106 drivers/usb/gadget/function/f_hid.c hidg->report_desc = kmemdup(opts->report_desc, hidg 1109 drivers/usb/gadget/function/f_hid.c if (!hidg->report_desc) { hidg 1110 drivers/usb/gadget/function/f_hid.c kfree(hidg); hidg 1118 drivers/usb/gadget/function/f_hid.c hidg->func.name = "hid"; hidg 1119 drivers/usb/gadget/function/f_hid.c hidg->func.bind = hidg_bind; hidg 1120 drivers/usb/gadget/function/f_hid.c hidg->func.unbind = hidg_unbind; hidg 1121 drivers/usb/gadget/function/f_hid.c hidg->func.set_alt = hidg_set_alt; hidg 1122 drivers/usb/gadget/function/f_hid.c hidg->func.disable = hidg_disable; hidg 1123 drivers/usb/gadget/function/f_hid.c hidg->func.setup = hidg_setup; hidg 1124 drivers/usb/gadget/function/f_hid.c hidg->func.free_func = hidg_free; hidg 1127 drivers/usb/gadget/function/f_hid.c hidg->qlen = 4; hidg 1129 drivers/usb/gadget/function/f_hid.c return &hidg->func;