• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/input/joystick/iforce/

Lines Matching refs:iforce

2  * $Id: iforce-packets.c,v 1.1.1.1 2007/08/03 18:52:33 Exp $
30 #include "iforce.h"
51 int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data)
63 spin_lock_irqsave(&iforce->xmit_lock, flags);
65 head = iforce->xmit.head;
66 tail = iforce->xmit.tail;
71 spin_unlock_irqrestore(&iforce->xmit_lock, flags);
76 XMIT_INC(iforce->xmit.head, n+2);
81 iforce->xmit.buf[head] = HI(cmd);
83 iforce->xmit.buf[head] = LO(cmd);
89 memcpy(&iforce->xmit.buf[head],
93 memcpy(&iforce->xmit.buf[0],
99 spin_unlock_irqrestore(&iforce->xmit_lock, flags);
103 switch (iforce->bus) {
108 iforce_serial_xmit(iforce);
114 if (iforce->usbdev && empty &&
115 !test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) {
117 iforce_usb_xmit(iforce);
126 int iforce_control_playback(struct iforce* iforce, u16 id, unsigned int value)
133 return iforce_send_packet(iforce, FF_CMD_PLAY, data);
138 static int mark_core_as_ready(struct iforce *iforce, unsigned short addr)
142 if (!iforce->dev->ff)
145 for (i = 0; i < iforce->dev->ff->max_effects; ++i) {
146 if (test_bit(FF_CORE_IS_USED, iforce->core_effects[i].flags) &&
147 (iforce->core_effects[i].mod1_chunk.start == addr ||
148 iforce->core_effects[i].mod2_chunk.start == addr)) {
149 clear_bit(FF_CORE_UPDATE, iforce->core_effects[i].flags);
157 void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data)
159 struct input_dev *dev = iforce->dev;
168 if (HI(iforce->expect_packet) == HI(cmd)) {
169 iforce->expect_packet = 0;
170 iforce->ecmd = cmd;
171 memcpy(iforce->edata, data, IFORCE_MAX_LENGTH);
174 wake_up(&iforce->wait);
176 if (!iforce->type) {
200 for (i = 0; iforce->type->btn[i] >= 0; i++)
201 input_report_key(dev, iforce->type->btn[i], data[(i >> 3) + 5] & (1 << (i & 7)));
229 if (!test_and_set_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) {
233 } else if (test_and_clear_bit(FF_CORE_IS_PLAYED, iforce->core_effects[i].flags)) {
240 mark_core_as_ready(iforce, data[j] | (data[j+1]<<8));
247 int iforce_get_id_packet(struct iforce *iforce, char *packet)
251 switch (iforce->bus) {
256 iforce->cr.bRequest = packet[0];
257 iforce->ctrl->dev = iforce->usbdev;
259 status = usb_submit_urb(iforce->ctrl, GFP_ATOMIC);
265 wait_event_interruptible_timeout(iforce->wait,
266 iforce->ctrl->status != -EINPROGRESS, HZ);
268 if (iforce->ctrl->status) {
269 dbg("iforce->ctrl->status = %d", iforce->ctrl->status);
270 usb_unlink_urb(iforce->ctrl);
274 dbg("iforce_get_id_packet: iforce->bus = USB!");
281 iforce->expect_packet = FF_CMD_QUERY;
282 iforce_send_packet(iforce, FF_CMD_QUERY, packet);
284 wait_event_interruptible_timeout(iforce->wait,
285 !iforce->expect_packet, HZ);
287 if (iforce->expect_packet) {
288 iforce->expect_packet = 0;
292 err("iforce_get_id_packet: iforce->bus = SERIO!");
297 err("iforce_get_id_packet: iforce->bus = %d", iforce->bus);
301 return -(iforce->edata[0] != packet[0]);