• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/usb/gadget/

Lines Matching defs:hidg

139 	struct f_hidg	*hidg     = file->private_data;
149 spin_lock_irqsave(&hidg->spinlock, flags);
151 #define READ_COND (hidg->set_report_buff != NULL)
154 spin_unlock_irqrestore(&hidg->spinlock, flags);
158 if (wait_event_interruptible(hidg->read_queue, READ_COND))
161 spin_lock_irqsave(&hidg->spinlock, flags);
165 count = min_t(unsigned, count, hidg->set_report_length);
166 tmp_buff = hidg->set_report_buff;
167 hidg->set_report_buff = NULL;
169 spin_unlock_irqrestore(&hidg->spinlock, flags);
183 struct f_hidg *hidg = (struct f_hidg *)ep->driver_data;
186 ERROR(hidg->func.config->cdev,
190 hidg->write_pending = 0;
191 wake_up(&hidg->write_queue);
197 struct f_hidg *hidg = file->private_data;
203 mutex_lock(&hidg->lock);
205 #define WRITE_COND (!hidg->write_pending)
209 mutex_unlock(&hidg->lock);
214 hidg->write_queue, WRITE_COND))
217 mutex_lock(&hidg->lock);
220 count = min_t(unsigned, count, hidg->report_length);
221 status = copy_from_user(hidg->req->buf, buffer, count);
224 ERROR(hidg->func.config->cdev,
226 mutex_unlock(&hidg->lock);
230 hidg->req->status = 0;
231 hidg->req->zero = 0;
232 hidg->req->length = count;
233 hidg->req->complete = f_hidg_req_complete;
234 hidg->req->context = hidg;
235 hidg->write_pending = 1;
237 status = usb_ep_queue(hidg->in_ep, hidg->req, GFP_ATOMIC);
239 ERROR(hidg->func.config->cdev,
241 hidg->write_pending = 0;
242 wake_up(&hidg->write_queue);
247 mutex_unlock(&hidg->lock);
254 struct f_hidg *hidg = file->private_data;
257 poll_wait(file, &hidg->read_queue, wait);
258 poll_wait(file, &hidg->write_queue, wait);
280 struct f_hidg *hidg =
283 fd->private_data = hidg;
293 struct f_hidg *hidg = (struct f_hidg *)req->context;
296 ERROR(hidg->func.config->cdev, "%s FAILED\n", __func__);
300 spin_lock(&hidg->spinlock);
302 hidg->set_report_buff = krealloc(hidg->set_report_buff,
305 if (hidg->set_report_buff == NULL) {
306 spin_unlock(&hidg->spinlock);
309 hidg->set_report_length = req->actual;
310 memcpy(hidg->set_report_buff, req->buf, req->actual);
312 spin_unlock(&hidg->spinlock);
314 wake_up(&hidg->read_queue);
322 struct f_hidg *hidg = func_to_hidg(f);
340 length = min_t(unsigned, length, hidg->report_length);
355 req->context = hidg;
372 hidg->report_desc_length);
373 memcpy(req->buf, hidg->report_desc, length);
406 struct f_hidg *hidg = func_to_hidg(f);
408 usb_ep_disable(hidg->in_ep);
409 hidg->in_ep->driver_data = NULL;
417 struct f_hidg *hidg = func_to_hidg(f);
423 if (hidg->in_ep != NULL) {
425 if (hidg->in_ep->driver_data != NULL)
426 usb_ep_disable(hidg->in_ep);
429 hidg->hs_in_ep_desc, hidg->fs_in_ep_desc);
430 status = usb_ep_enable(hidg->in_ep, ep_desc);
435 hidg->in_ep->driver_data = hidg;
453 struct f_hidg *hidg = func_to_hidg(f);
470 hidg->in_ep = ep;
474 hidg->req = usb_ep_alloc_request(hidg->in_ep, GFP_KERNEL);
475 if (!hidg->req)
479 hidg->req->buf = kmalloc(hidg->report_length, GFP_KERNEL);
480 if (!hidg->req->buf)
484 hidg_interface_desc.bInterfaceSubClass = hidg->bInterfaceSubClass;
485 hidg_interface_desc.bInterfaceProtocol = hidg->bInterfaceProtocol;
486 hidg_hs_in_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length);
487 hidg_fs_in_ep_desc.wMaxPacketSize = cpu_to_le16(hidg->report_length);
490 cpu_to_le16(hidg->report_desc_length);
492 hidg->set_report_buff = NULL;
499 hidg->fs_in_ep_desc = usb_find_endpoint(hidg_fs_descriptors,
509 hidg->hs_in_ep_desc = usb_find_endpoint(hidg_hs_descriptors,
513 hidg->hs_in_ep_desc = NULL;
516 mutex_init(&hidg->lock);
517 spin_lock_init(&hidg->spinlock);
518 init_waitqueue_head(&hidg->write_queue);
519 init_waitqueue_head(&hidg->read_queue);
522 cdev_init(&hidg->cdev, &f_hidg_fops);
523 dev = MKDEV(major, hidg->minor);
524 status = cdev_add(&hidg->cdev, dev, 1);
528 device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor);
534 if (hidg->req != NULL) {
535 kfree(hidg->req->buf);
536 if (hidg->in_ep != NULL)
537 usb_ep_free_request(hidg->in_ep, hidg->req);
548 struct f_hidg *hidg = func_to_hidg(f);
550 device_destroy(hidg_class, MKDEV(major, hidg->minor));
551 cdev_del(&hidg->cdev);
554 usb_ep_disable(hidg->in_ep);
555 usb_ep_dequeue(hidg->in_ep, hidg->req);
556 kfree(hidg->req->buf);
557 usb_ep_free_request(hidg->in_ep, hidg->req);
563 kfree(hidg->report_desc);
564 kfree(hidg->set_report_buff);
565 kfree(hidg);
594 struct f_hidg *hidg;
610 hidg = kzalloc(sizeof *hidg, GFP_KERNEL);
611 if (!hidg)
614 hidg->minor = index;
615 hidg->bInterfaceSubClass = fdesc->subclass;
616 hidg->bInterfaceProtocol = fdesc->protocol;
617 hidg->report_length = fdesc->report_length;
618 hidg->report_desc_length = fdesc->report_desc_length;
619 hidg->report_desc = kmemdup(fdesc->report_desc,
622 if (!hidg->report_desc) {
623 kfree(hidg);
627 hidg->func.name = "hid";
628 hidg->func.strings = ct_func_strings;
629 hidg->func.bind = hidg_bind;
630 hidg->func.unbind = hidg_unbind;
631 hidg->func.set_alt = hidg_set_alt;
632 hidg->func.disable = hidg_disable;
633 hidg->func.setup = hidg_setup;
635 status = usb_add_function(c, &hidg->func);
637 kfree(hidg);
647 hidg_class = class_create(THIS_MODULE, "hidg");
649 status = alloc_chrdev_region(&dev, 0, count, "hidg");