Lines Matching refs:data

41  * eliminate I/O gaps between requests, to help when streaming data.
57 * IN data or to read() OUT data. To halt the endpoint, a "wrong
62 * respect to data left in endpoint fifos after aborted operations; or
97 * - SETUP: read/write will transfer control data and succeed;
152 static inline void get_dev (struct dev_data *data)
154 refcount_inc (&data->count);
157 static void put_dev (struct dev_data *data)
159 if (likely (!refcount_dec_and_test (&data->count)))
162 BUG_ON (waitqueue_active (&data->wait));
163 kfree (data);
207 static inline void get_ep (struct ep_data *data)
209 refcount_inc (&data->count);
212 static void put_ep (struct ep_data *data)
214 if (likely (!refcount_dec_and_test (&data->count)))
216 put_dev (data->dev);
218 BUG_ON (!list_empty (&data->epfiles));
219 BUG_ON (waitqueue_active (&data->wait));
220 kfree (data);
378 struct ep_data *data = fd->private_data;
381 value = mutex_lock_interruptible(&data->lock);
386 if (data->state != STATE_EP_UNBOUND) {
387 data->state = STATE_EP_DISABLED;
388 data->desc.bDescriptorType = 0;
389 data->hs_desc.bDescriptorType = 0;
390 usb_ep_disable(data->ep);
392 mutex_unlock(&data->lock);
393 put_ep (data);
399 struct ep_data *data = fd->private_data;
402 if ((status = get_ready_ep (fd->f_flags, data, false)) < 0)
405 spin_lock_irq (&data->dev->lock);
406 if (likely (data->ep != NULL)) {
409 status = usb_ep_fifo_status (data->ep);
412 usb_ep_fifo_flush (data->ep);
415 status = usb_ep_clear_halt (data->ep);
422 spin_unlock_irq (&data->dev->lock);
423 mutex_unlock(&data->lock);
494 /* if this was a write or a read returning no data then we
722 ep_config (struct ep_data *data, const char *buf, size_t len)
728 if (data->state != STATE_EP_READY) {
740 DBG(data->dev, "config %s, bad tag %d\n", data->name, tag);
751 memcpy(&data->desc, buf, USB_DT_ENDPOINT_SIZE);
752 if (data->desc.bLength != USB_DT_ENDPOINT_SIZE
753 || data->desc.bDescriptorType != USB_DT_ENDPOINT)
758 memcpy(&data->hs_desc, buf + USB_DT_ENDPOINT_SIZE,
760 if (data->hs_desc.bLength != USB_DT_ENDPOINT_SIZE
761 || data->hs_desc.bDescriptorType
763 DBG(data->dev, "config %s, bad hs length or type\n",
764 data->name);
769 spin_lock_irq (&data->dev->lock);
770 if (data->dev->state == STATE_DEV_UNBOUND) {
774 ep = data->ep;
780 switch (data->dev->gadget->speed) {
783 ep->desc = &data->desc;
787 ep->desc = &data->hs_desc;
790 DBG(data->dev, "unconnected, %s init abandoned\n",
791 data->name);
797 data->state = STATE_EP_ENABLED;
801 spin_unlock_irq (&data->dev->lock);
804 data->desc.bDescriptorType = 0;
805 data->hs_desc.bDescriptorType = 0;
816 struct ep_data *data = inode->i_private;
819 if (mutex_lock_interruptible(&data->lock) != 0)
821 spin_lock_irq (&data->dev->lock);
822 if (data->dev->state == STATE_DEV_UNBOUND)
824 else if (data->state == STATE_EP_DISABLED) {
826 data->state = STATE_EP_READY;
827 get_ep (data);
828 fd->private_data = data;
829 VDEBUG (data->dev, "%s ready\n", data->name);
831 DBG (data->dev, "%s state %d\n",
832 data->name, data->state);
833 spin_unlock_irq (&data->dev->lock);
834 mutex_unlock(&data->lock);
871 /* for control OUT, data must still get to userspace */
963 } else { /* collect OUT data */
1003 /* else normal: return event data */
1131 /* data and/or status stage for control request */
1518 /* proceed with data transfer and status phases? */
1587 void *data, const struct file_operations *fops);
1592 struct ep_data *data;
1596 data = kzalloc(sizeof(*data), GFP_KERNEL);
1597 if (!data)
1599 data->state = STATE_EP_DISABLED;
1600 mutex_init(&data->lock);
1601 init_waitqueue_head (&data->wait);
1603 strncpy (data->name, ep->name, sizeof (data->name) - 1);
1604 refcount_set (&data->count, 1);
1605 data->dev = dev;
1608 data->ep = ep;
1609 ep->driver_data = data;
1611 data->req = usb_ep_alloc_request (ep, GFP_KERNEL);
1612 if (!data->req)
1615 data->dentry = gadgetfs_create_file (dev->sb, data->name,
1616 data, &ep_io_operations);
1617 if (!data->dentry)
1619 list_add_tail (&data->epfiles, &dev->epfiles);
1624 usb_ep_free_request (ep, data->req);
1627 kfree (data);
1962 void *data, const struct file_operations *fops,
1973 inode->i_private = data;
1984 void *data, const struct file_operations *fops)
1993 inode = gadgetfs_make_inode (sb, data, fops,