• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/joystick/iforce/

Lines Matching defs:iforce

28 #include "iforce.h"
49 int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data)
61 spin_lock_irqsave(&iforce->xmit_lock, flags);
63 head = iforce->xmit.head;
64 tail = iforce->xmit.tail;
68 dev_warn(&iforce->dev->dev,
70 spin_unlock_irqrestore(&iforce->xmit_lock, flags);
75 XMIT_INC(iforce->xmit.head, n+2);
80 iforce->xmit.buf[head] = HI(cmd);
82 iforce->xmit.buf[head] = LO(cmd);
88 memcpy(&iforce->xmit.buf[head],
92 memcpy(&iforce->xmit.buf[0],
98 spin_unlock_irqrestore(&iforce->xmit_lock, flags);
102 switch (iforce->bus) {
107 iforce_serial_xmit(iforce);
113 if (iforce->usbdev && empty &&
114 !test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) {
116 iforce_usb_xmit(iforce);
125 int iforce_control_playback(struct iforce* iforce, u16 id, unsigned int value)
132 return iforce_send_packet(iforce, FF_CMD_PLAY, data);
137 static int mark_core_as_ready(struct iforce *iforce, unsigned short addr)
141 if (!iforce->dev->ff)
144 for (i = 0; i < iforce->dev->ff->max_effects; ++i) {
145 if (test_bit(FF_CORE_IS_USED, iforce->core_effects[i].flags) &&
146 (iforce->core_effects[i].mod1_chunk.start == addr ||
147 iforce->core_effects[i].mod2_chunk.start == addr)) {
148 clear_bit(FF_CORE_UPDATE, iforce->core_effects[i].flags);
152 dev_warn(&iforce->dev->dev, "unused effect %04x updated !!!\n", addr);
156 void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data)
158 struct input_dev *dev = iforce->dev;
163 dev_warn(&iforce->dev->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)
249 switch (iforce->bus) {
255 iforce->cr.bRequest = packet[0];
256 iforce->ctrl->dev = iforce->usbdev;
258 status = usb_submit_urb(iforce->ctrl, GFP_ATOMIC);
264 wait_event_interruptible_timeout(iforce->wait,
265 iforce->ctrl->status != -EINPROGRESS, HZ);
267 if (iforce->ctrl->status) {
268 dbg("iforce->ctrl->status = %d", iforce->ctrl->status);
269 usb_unlink_urb(iforce->ctrl);
273 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]);