Lines Matching refs:iforce
32 void iforce_dump_packet(struct iforce *iforce, char *msg, u16 cmd, unsigned char *data) in iforce_dump_packet() argument
34 dev_dbg(iforce->dev->dev.parent, "%s %s cmd = %04x, data = %*ph\n", in iforce_dump_packet()
41 int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data) in iforce_send_packet() argument
53 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_send_packet()
55 head = iforce->xmit.head; in iforce_send_packet()
56 tail = iforce->xmit.tail; in iforce_send_packet()
60 dev_warn(&iforce->dev->dev, in iforce_send_packet()
62 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_send_packet()
67 XMIT_INC(iforce->xmit.head, n+2); in iforce_send_packet()
72 iforce->xmit.buf[head] = HI(cmd); in iforce_send_packet()
74 iforce->xmit.buf[head] = LO(cmd); in iforce_send_packet()
80 memcpy(&iforce->xmit.buf[head], in iforce_send_packet()
84 memcpy(&iforce->xmit.buf[0], in iforce_send_packet()
90 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_send_packet()
94 switch (iforce->bus) { in iforce_send_packet()
99 iforce_serial_xmit(iforce); in iforce_send_packet()
105 if (iforce->usbdev && empty && in iforce_send_packet()
106 !test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) { in iforce_send_packet()
108 iforce_usb_xmit(iforce); in iforce_send_packet()
117 int iforce_control_playback(struct iforce* iforce, u16 id, unsigned int value) in iforce_control_playback() argument
124 return iforce_send_packet(iforce, FF_CMD_PLAY, data); in iforce_control_playback()
129 static int mark_core_as_ready(struct iforce *iforce, unsigned short addr) in mark_core_as_ready() argument
133 if (!iforce->dev->ff) in mark_core_as_ready()
136 for (i = 0; i < iforce->dev->ff->max_effects; ++i) { in mark_core_as_ready()
137 if (test_bit(FF_CORE_IS_USED, iforce->core_effects[i].flags) && in mark_core_as_ready()
138 (iforce->core_effects[i].mod1_chunk.start == addr || in mark_core_as_ready()
139 iforce->core_effects[i].mod2_chunk.start == addr)) { in mark_core_as_ready()
140 clear_bit(FF_CORE_UPDATE, iforce->core_effects[i].flags); in mark_core_as_ready()
144 dev_warn(&iforce->dev->dev, "unused effect %04x updated !!!\n", addr); in mark_core_as_ready()
148 void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data) in iforce_process_packet() argument
150 struct input_dev *dev = iforce->dev; in iforce_process_packet()
155 dev_warn(&iforce->dev->dev, in iforce_process_packet()
160 if (HI(iforce->expect_packet) == HI(cmd)) { in iforce_process_packet()
161 iforce->expect_packet = 0; in iforce_process_packet()
162 iforce->ecmd = cmd; in iforce_process_packet()
163 memcpy(iforce->edata, data, IFORCE_MAX_LENGTH); in iforce_process_packet()
166 wake_up(&iforce->wait); in iforce_process_packet()
168 if (!iforce->type) { in iforce_process_packet()
192 for (i = 0; iforce->type->btn[i] >= 0; i++) in iforce_process_packet()
193 input_report_key(dev, iforce->type->btn[i], data[(i >> 3) + 5] & (1 << (i & 7))); in iforce_process_packet()
221 if (!test_and_set_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) { in iforce_process_packet()
225 } else if (test_and_clear_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) { in iforce_process_packet()
232 mark_core_as_ready(iforce, data[j] | (data[j+1]<<8)); in iforce_process_packet()
239 int iforce_get_id_packet(struct iforce *iforce, char *packet) in iforce_get_id_packet() argument
241 switch (iforce->bus) { in iforce_get_id_packet()
247 iforce->cr.bRequest = packet[0]; in iforce_get_id_packet()
248 iforce->ctrl->dev = iforce->usbdev; in iforce_get_id_packet()
250 status = usb_submit_urb(iforce->ctrl, GFP_KERNEL); in iforce_get_id_packet()
252 dev_err(&iforce->intf->dev, in iforce_get_id_packet()
257 wait_event_interruptible_timeout(iforce->wait, in iforce_get_id_packet()
258 iforce->ctrl->status != -EINPROGRESS, HZ); in iforce_get_id_packet()
260 if (iforce->ctrl->status) { in iforce_get_id_packet()
261 dev_dbg(&iforce->intf->dev, in iforce_get_id_packet()
263 iforce->ctrl->status); in iforce_get_id_packet()
264 usb_unlink_urb(iforce->ctrl); in iforce_get_id_packet()
276 iforce->expect_packet = FF_CMD_QUERY; in iforce_get_id_packet()
277 iforce_send_packet(iforce, FF_CMD_QUERY, packet); in iforce_get_id_packet()
279 wait_event_interruptible_timeout(iforce->wait, in iforce_get_id_packet()
280 !iforce->expect_packet, HZ); in iforce_get_id_packet()
282 if (iforce->expect_packet) { in iforce_get_id_packet()
283 iforce->expect_packet = 0; in iforce_get_id_packet()
287 dev_err(&iforce->dev->dev, in iforce_get_id_packet()
293 dev_err(&iforce->dev->dev, in iforce_get_id_packet()
295 iforce->bus); in iforce_get_id_packet()
299 return -(iforce->edata[0] != packet[0]); in iforce_get_id_packet()