Lines Matching refs:iforce

49 int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data)  in iforce_send_packet()  argument
61 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_send_packet()
63 head = iforce->xmit.head; in iforce_send_packet()
64 tail = iforce->xmit.tail; in iforce_send_packet()
68 dev_warn(&iforce->dev->dev, in iforce_send_packet()
70 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_send_packet()
75 XMIT_INC(iforce->xmit.head, n+2); in iforce_send_packet()
80 iforce->xmit.buf[head] = HI(cmd); in iforce_send_packet()
82 iforce->xmit.buf[head] = LO(cmd); in iforce_send_packet()
88 memcpy(&iforce->xmit.buf[head], in iforce_send_packet()
92 memcpy(&iforce->xmit.buf[0], in iforce_send_packet()
98 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_send_packet()
102 switch (iforce->bus) { in iforce_send_packet()
107 iforce_serial_xmit(iforce); in iforce_send_packet()
113 if (iforce->usbdev && empty && in iforce_send_packet()
114 !test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) { in iforce_send_packet()
116 iforce_usb_xmit(iforce); in iforce_send_packet()
125 int iforce_control_playback(struct iforce* iforce, u16 id, unsigned int value) in iforce_control_playback() argument
132 return iforce_send_packet(iforce, FF_CMD_PLAY, data); in iforce_control_playback()
137 static int mark_core_as_ready(struct iforce *iforce, unsigned short addr) in mark_core_as_ready() argument
141 if (!iforce->dev->ff) in mark_core_as_ready()
144 for (i = 0; i < iforce->dev->ff->max_effects; ++i) { in mark_core_as_ready()
145 if (test_bit(FF_CORE_IS_USED, iforce->core_effects[i].flags) && in mark_core_as_ready()
146 (iforce->core_effects[i].mod1_chunk.start == addr || in mark_core_as_ready()
147 iforce->core_effects[i].mod2_chunk.start == addr)) { in mark_core_as_ready()
148 clear_bit(FF_CORE_UPDATE, iforce->core_effects[i].flags); in mark_core_as_ready()
152 dev_warn(&iforce->dev->dev, "unused effect %04x updated !!!\n", addr); in mark_core_as_ready()
156 void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data) in iforce_process_packet() argument
158 struct input_dev *dev = iforce->dev; in iforce_process_packet()
163 dev_warn(&iforce->dev->dev, in iforce_process_packet()
168 if (HI(iforce->expect_packet) == HI(cmd)) { in iforce_process_packet()
169 iforce->expect_packet = 0; in iforce_process_packet()
170 iforce->ecmd = cmd; in iforce_process_packet()
171 memcpy(iforce->edata, data, IFORCE_MAX_LENGTH); in iforce_process_packet()
174 wake_up(&iforce->wait); in iforce_process_packet()
176 if (!iforce->type) { in iforce_process_packet()
200 for (i = 0; iforce->type->btn[i] >= 0; i++) in iforce_process_packet()
201 input_report_key(dev, iforce->type->btn[i], data[(i >> 3) + 5] & (1 << (i & 7))); in iforce_process_packet()
229 if (!test_and_set_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) { in iforce_process_packet()
233 } else if (test_and_clear_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) { in iforce_process_packet()
240 mark_core_as_ready(iforce, data[j] | (data[j+1]<<8)); in iforce_process_packet()
247 int iforce_get_id_packet(struct iforce *iforce, char *packet) in iforce_get_id_packet() argument
249 switch (iforce->bus) { in iforce_get_id_packet()
255 iforce->cr.bRequest = packet[0]; in iforce_get_id_packet()
256 iforce->ctrl->dev = iforce->usbdev; in iforce_get_id_packet()
258 status = usb_submit_urb(iforce->ctrl, GFP_ATOMIC); in iforce_get_id_packet()
260 dev_err(&iforce->intf->dev, in iforce_get_id_packet()
265 wait_event_interruptible_timeout(iforce->wait, in iforce_get_id_packet()
266 iforce->ctrl->status != -EINPROGRESS, HZ); in iforce_get_id_packet()
268 if (iforce->ctrl->status) { in iforce_get_id_packet()
269 dev_dbg(&iforce->intf->dev, in iforce_get_id_packet()
271 iforce->ctrl->status); in iforce_get_id_packet()
272 usb_unlink_urb(iforce->ctrl); in iforce_get_id_packet()
284 iforce->expect_packet = FF_CMD_QUERY; in iforce_get_id_packet()
285 iforce_send_packet(iforce, FF_CMD_QUERY, packet); in iforce_get_id_packet()
287 wait_event_interruptible_timeout(iforce->wait, in iforce_get_id_packet()
288 !iforce->expect_packet, HZ); in iforce_get_id_packet()
290 if (iforce->expect_packet) { in iforce_get_id_packet()
291 iforce->expect_packet = 0; in iforce_get_id_packet()
295 dev_err(&iforce->dev->dev, in iforce_get_id_packet()
301 dev_err(&iforce->dev->dev, in iforce_get_id_packet()
303 iforce->bus); in iforce_get_id_packet()
307 return -(iforce->edata[0] != packet[0]); in iforce_get_id_packet()