Lines Matching refs:iforce
30 void iforce_usb_xmit(struct iforce *iforce) in iforce_usb_xmit() argument
35 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_usb_xmit()
37 if (iforce->xmit.head == iforce->xmit.tail) { in iforce_usb_xmit()
38 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_xmit()
39 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_usb_xmit()
43 ((char *)iforce->out->transfer_buffer)[0] = iforce->xmit.buf[iforce->xmit.tail]; in iforce_usb_xmit()
44 XMIT_INC(iforce->xmit.tail, 1); in iforce_usb_xmit()
45 n = iforce->xmit.buf[iforce->xmit.tail]; in iforce_usb_xmit()
46 XMIT_INC(iforce->xmit.tail, 1); in iforce_usb_xmit()
48 iforce->out->transfer_buffer_length = n + 1; in iforce_usb_xmit()
49 iforce->out->dev = iforce->usbdev; in iforce_usb_xmit()
52 c = CIRC_CNT_TO_END(iforce->xmit.head, iforce->xmit.tail, XMIT_SIZE); in iforce_usb_xmit()
55 memcpy(iforce->out->transfer_buffer + 1, in iforce_usb_xmit()
56 &iforce->xmit.buf[iforce->xmit.tail], in iforce_usb_xmit()
59 memcpy(iforce->out->transfer_buffer + 1 + c, in iforce_usb_xmit()
60 &iforce->xmit.buf[0], in iforce_usb_xmit()
63 XMIT_INC(iforce->xmit.tail, n); in iforce_usb_xmit()
65 if ( (n=usb_submit_urb(iforce->out, GFP_ATOMIC)) ) { in iforce_usb_xmit()
66 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_xmit()
67 dev_warn(&iforce->intf->dev, "usb_submit_urb failed %d\n", n); in iforce_usb_xmit()
73 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_usb_xmit()
78 struct iforce *iforce = urb->context; in iforce_usb_irq() local
79 struct device *dev = &iforce->intf->dev; in iforce_usb_irq()
99 iforce_process_packet(iforce, in iforce_usb_irq()
100 (iforce->data[0] << 8) | (urb->actual_length - 1), iforce->data + 1); in iforce_usb_irq()
111 struct iforce *iforce = urb->context; in iforce_usb_out() local
114 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_usb_out()
115 dev_dbg(&iforce->intf->dev, "urb->status %d, exiting\n", in iforce_usb_out()
120 iforce_usb_xmit(iforce); in iforce_usb_out()
122 wake_up(&iforce->wait); in iforce_usb_out()
127 struct iforce *iforce = urb->context; in iforce_usb_ctrl() local
129 iforce->ecmd = 0xff00 | urb->actual_length; in iforce_usb_ctrl()
130 wake_up(&iforce->wait); in iforce_usb_ctrl()
139 struct iforce *iforce; in iforce_usb_probe() local
147 if (!(iforce = kzalloc(sizeof(struct iforce) + 32, GFP_KERNEL))) in iforce_usb_probe()
150 if (!(iforce->irq = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
153 if (!(iforce->out = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
156 if (!(iforce->ctrl = usb_alloc_urb(0, GFP_KERNEL))) in iforce_usb_probe()
159 iforce->bus = IFORCE_USB; in iforce_usb_probe()
160 iforce->usbdev = dev; in iforce_usb_probe()
161 iforce->intf = intf; in iforce_usb_probe()
163 iforce->cr.bRequestType = USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_INTERFACE; in iforce_usb_probe()
164 iforce->cr.wIndex = 0; in iforce_usb_probe()
165 iforce->cr.wLength = cpu_to_le16(16); in iforce_usb_probe()
167 usb_fill_int_urb(iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress), in iforce_usb_probe()
168 iforce->data, 16, iforce_usb_irq, iforce, epirq->bInterval); in iforce_usb_probe()
170 usb_fill_int_urb(iforce->out, dev, usb_sndintpipe(dev, epout->bEndpointAddress), in iforce_usb_probe()
171 iforce + 1, 32, iforce_usb_out, iforce, epout->bInterval); in iforce_usb_probe()
173 usb_fill_control_urb(iforce->ctrl, dev, usb_rcvctrlpipe(dev, 0), in iforce_usb_probe()
174 (void*) &iforce->cr, iforce->edata, 16, iforce_usb_ctrl, iforce); in iforce_usb_probe()
176 err = iforce_init_device(iforce); in iforce_usb_probe()
180 usb_set_intfdata(intf, iforce); in iforce_usb_probe()
184 if (iforce) { in iforce_usb_probe()
185 usb_free_urb(iforce->irq); in iforce_usb_probe()
186 usb_free_urb(iforce->out); in iforce_usb_probe()
187 usb_free_urb(iforce->ctrl); in iforce_usb_probe()
188 kfree(iforce); in iforce_usb_probe()
196 struct iforce *iforce = usb_get_intfdata(intf); in iforce_usb_disconnect() local
200 input_unregister_device(iforce->dev); in iforce_usb_disconnect()
202 usb_free_urb(iforce->irq); in iforce_usb_disconnect()
203 usb_free_urb(iforce->out); in iforce_usb_disconnect()
204 usb_free_urb(iforce->ctrl); in iforce_usb_disconnect()
206 kfree(iforce); in iforce_usb_disconnect()