Lines Matching refs:iforce
26 void iforce_usb_xmit(struct iforce *iforce) in iforce_usb_xmit() argument
31 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_usb_xmit()
33 if (iforce->xmit.head == iforce->xmit.tail) { in iforce_usb_xmit()
34 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_xmit()
35 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_usb_xmit()
39 ((char *)iforce->out->transfer_buffer)[0] = iforce->xmit.buf[iforce->xmit.tail]; in iforce_usb_xmit()
40 XMIT_INC(iforce->xmit.tail, 1); in iforce_usb_xmit()
41 n = iforce->xmit.buf[iforce->xmit.tail]; in iforce_usb_xmit()
42 XMIT_INC(iforce->xmit.tail, 1); in iforce_usb_xmit()
44 iforce->out->transfer_buffer_length = n + 1; in iforce_usb_xmit()
45 iforce->out->dev = iforce->usbdev; in iforce_usb_xmit()
48 c = CIRC_CNT_TO_END(iforce->xmit.head, iforce->xmit.tail, XMIT_SIZE); in iforce_usb_xmit()
51 memcpy(iforce->out->transfer_buffer + 1, in iforce_usb_xmit()
52 &iforce->xmit.buf[iforce->xmit.tail], in iforce_usb_xmit()
55 memcpy(iforce->out->transfer_buffer + 1 + c, in iforce_usb_xmit()
56 &iforce->xmit.buf[0], in iforce_usb_xmit()
59 XMIT_INC(iforce->xmit.tail, n); in iforce_usb_xmit()
61 if ( (n=usb_submit_urb(iforce->out, GFP_ATOMIC)) ) { in iforce_usb_xmit()
62 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_xmit()
63 dev_warn(&iforce->intf->dev, "usb_submit_urb failed %d\n", n); in iforce_usb_xmit()
69 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_usb_xmit()
74 struct iforce *iforce = urb->context; in iforce_usb_irq() local
75 struct device *dev = &iforce->intf->dev; in iforce_usb_irq()
95 iforce_process_packet(iforce, in iforce_usb_irq()
96 (iforce->data[0] << 8) | (urb->actual_length - 1), iforce->data + 1); in iforce_usb_irq()
107 struct iforce *iforce = urb->context; in iforce_usb_out() local
110 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_out()
111 dev_dbg(&iforce->intf->dev, "urb->status %d, exiting\n", in iforce_usb_out()
116 iforce_usb_xmit(iforce); in iforce_usb_out()
118 wake_up(&iforce->wait); in iforce_usb_out()
123 struct iforce *iforce = urb->context; in iforce_usb_ctrl() local
125 iforce->ecmd = 0xff00 | urb->actual_length; in iforce_usb_ctrl()
126 wake_up(&iforce->wait); in iforce_usb_ctrl()
135 struct iforce *iforce; in iforce_usb_probe() local
146 if (!(iforce = kzalloc(sizeof(struct iforce) + 32, GFP_KERNEL))) in iforce_usb_probe()
149 if (!(iforce->irq = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
152 if (!(iforce->out = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
155 if (!(iforce->ctrl = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
158 iforce->bus = IFORCE_USB; in iforce_usb_probe()
159 iforce->usbdev = dev; in iforce_usb_probe()
160 iforce->intf = intf; in iforce_usb_probe()
162 iforce->cr.bRequestType = USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_INTERFACE; in iforce_usb_probe()
163 iforce->cr.wIndex = 0; in iforce_usb_probe()
164 iforce->cr.wLength = cpu_to_le16(16); in iforce_usb_probe()
166 usb_fill_int_urb(iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress), in iforce_usb_probe()
167 iforce->data, 16, iforce_usb_irq, iforce, epirq->bInterval); in iforce_usb_probe()
169 usb_fill_int_urb(iforce->out, dev, usb_sndintpipe(dev, epout->bEndpointAddress), in iforce_usb_probe()
170 iforce + 1, 32, iforce_usb_out, iforce, epout->bInterval); in iforce_usb_probe()
172 usb_fill_control_urb(iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0), in iforce_usb_probe()
173 (void*) &iforce->cr, iforce->edata, 16, iforce_usb_ctrl, iforce); in iforce_usb_probe()
175 err = iforce_init_device(iforce); in iforce_usb_probe()
179 usb_set_intfdata(intf, iforce); in iforce_usb_probe()
183 if (iforce) { in iforce_usb_probe()
184 usb_free_urb(iforce->irq); in iforce_usb_probe()
185 usb_free_urb(iforce->out); in iforce_usb_probe()
186 usb_free_urb(iforce->ctrl); in iforce_usb_probe()
187 kfree(iforce); in iforce_usb_probe()
195 struct iforce *iforce = usb_get_intfdata(intf); in iforce_usb_disconnect() local
199 input_unregister_device(iforce->dev); in iforce_usb_disconnect()
201 usb_free_urb(iforce->irq); in iforce_usb_disconnect()
202 usb_free_urb(iforce->out); in iforce_usb_disconnect()
203 usb_free_urb(iforce->ctrl); in iforce_usb_disconnect()
205 kfree(iforce); in iforce_usb_disconnect()